手机版

记录关系型数据库性能查询过程的使用方法

时间:2021-11-20 来源:互联网 编辑:宝哥软件园 浏览:

一切源于一个实验,请看下面的例子:表:复制代码代码如下:如果不存在则创建表“foo”(“a”int(10)无符号非空自动增量,` b '整数(10)无符号不为空,` c ' varchar(100)不为空,主键(` a '),键条(` b ',` a ')ENGINE=InnoDB;如果不存在,则创建表,“foo 2”(“a”int(10)无符号非空自动增量,` b '整数(10)无符号不为空,` c ' varchar(100)不为空,主键(` a '),键条(` b ',` a ')ENGINE=MyISAM;我往两个表中插入了30w的数据(插入的时候性能差别InnoDB比MyISAM慢)复制代码代码如下:PHP $ host=' 192。168 .100 .166 ';$ DBname=' test $ user=' root $ password=$ db=MySQL _ connect($ host,$ user,$ password)或芯片(“数据库连接失败”);mysql_select_db($dbName,$ db);echo '===========================InnoDB===========================================' .\ r \ n ';$ start=微时间(真);MySQL _ query(' SELECT SQL _ NO _ CACHE SQL _ CALC _ find _ ROWS * FROM foo WHERE b=1 LIMIT 1000,10 ');$ end=微时间(真);回声$结束-$开始.\ r \ n ';echo '=========================MyISAM========================================' .\ r \ n ';$ start=微时间(真);MySQL _ query(' SELECT SQL _ NO _ CACHE SQL _ CALC _ find _ ROWS * FROM foo 2 WHERE b=1 LIMIT 1000,10 ');$ end=微时间(真);回声$结束-$开始.\ r \ n ';返回结果

一次查询就会差别这么多!InnoDB和MyISAM,赶紧分析分析为什么。首先是使用解释来进行查看

确定两边都没有使用指数,第二个查询查的行,并且MyISAM的查询行还比InnoDB少这么多,反而是查询慢于InnoDB!这Y的有点奇怪。没事,还有一个牛掰工具轮廓具体使用可以参考:http://dev。MySQL。com/doc/ref man/5.0/en/show-profile。超文本标记语言使用方法简单来说:复制代码代码如下:Mysql设置剖析=1;Mysqlshow配置文件;查询一的Mysqlshow配置文件;

这个数据中就可以看到MyISAM的发送数据比InnoDB的发送数据费时太多了。查看关系型数据库文档http://dev。MySQL。com/doc/ref man/5.0/en/general-thread-States。超文本标记语言发送数据线程正在读取和处理挑选语句的行,并将数据发送到客户端。因为在此状态期间发生的操作往往会执行大量的磁盘访问(读取),所以它通常是给定查询生命周期内运行时间最长的状态。发送数据是去磁盘中读取挑选的结果,然后将结果返回给客户端。这个过程会有大量的超正析象管(图像或图标)操作。你可以使用显示查询xx的配置文件中央处理器来进行查看,发现MyISAM的中央处理器系统比InnnoDB大很多。至此可以得出结论是MyISAM进行表查询(区别仅仅使用索引就可以完成的查询)比InnoDB慢。

版权声明:记录关系型数据库性能查询过程的使用方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。