记录mysql性能查询过程的使用方法


Posted in PHP onMay 02, 2013

一切源于一个实验,请看下面的例子:

表:

CREATE TABLE IF NOT EXISTS `foo` ( 
`a` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`b` int(10) unsigned NOT NULL, 
`c` varchar(100) NOT NULL, 
PRIMARY KEY (`a`), 
KEY `bar` (`b`,`a`) 
) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS `foo2` ( 
`a` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`b` int(10) unsigned NOT NULL, 
`c` varchar(100) NOT NULL, 
PRIMARY KEY (`a`), 
KEY `bar` (`b`,`a`) 
) ENGINE=MyISAM;

我往两个表中插入了30w的数据(插入的时候性能差别InnoDB比MyISAM慢)

<?php $host = '192.168.100.166'; 
$dbName = 'test'; 
$user = 'root'; 
$password = ''; 
$db = mysql_connect($host, $user, $password) or die('DB connect failed'); 
mysql_select_db($dbName, $db); 
echo '===================InnoDB=======================' . "\r\n"; 
$start = microtime(true); 
mysql_query("SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * FROM foo WHERE b = 1 LIMIT 1000, 10"); 
$end = microtime(true); 
echo $end - $start . "\r\n"; 
echo '===================MyISAM=======================' . "\r\n"; 
$start = microtime(true); 
mysql_query("SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * FROM foo2 WHERE b = 1 LIMIT 1000, 10"); 
$end = microtime(true); 
echo $end - $start . "\r\n";

返回结果:

记录mysql性能查询过程的使用方法

一次查询就会差别这么多!!InnoDB和MyISAM,赶紧分析分析为什么。

首先是使用explain来进行查看

记录mysql性能查询过程的使用方法

确定两边都没有使用index,第二个查询查的rows,并且MyISAM的查询rows还比InnoDB少这么多,反而是查询慢于InnoDB!!这Y的有点奇怪。

 

没事,还有一个牛掰工具profile

具体使用可以参考:http://dev.mysql.com/doc/refman/5.0/en/show-profile.html

使用方法简单来说:

Mysql > set profiling = 1; Mysql>show profiles; 
Mysql>show profile for query 1;

记录mysql性能查询过程的使用方法
这个数据中就可以看到MyISAM的Sending data比InnoDB的Sending data费时太多了。查看mysql文档

http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html

 

Sending data

The thread is reading and processing rows for a SELECT statement, and sending data to the client. Because operations occurring during this this state tend to perform large amounts of disk access (reads), it is often the longest-running state over the lifetime of a given query.
 

Sending data是去磁盘中读取select的结果,然后将结果返回给客户端。这个过程会有大量的IO操作。你可以使用show profile cpu for query XX;来进行查看,发现MyISAM的CPU_system比InnnoDB大很多。至此可以得出结论是MyISAM进行表查询(区别仅仅使用索引就可以完成的查询)比InnoDB慢。

PHP 相关文章推荐
[转帖]PHP世纪万年历
Dec 06 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
php实现单链表的实例代码
Mar 22 PHP
destoon各类调用汇总
Jun 20 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
php数值计算num类简单操作示例
May 15 PHP
基于MySQL分区性能的详细介绍
May 02 #PHP
php中使用$_REQUEST需要注意的一个问题
May 02 #PHP
PHP执行批量mysql语句的解决方法
May 02 #PHP
PHP闭包(Closure)使用详解
May 02 #PHP
PHP5中Cookie与 Session使用详解
Apr 30 #PHP
PHP容易忘记的知识点分享
Apr 30 #PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 #PHP
You might like
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
Javascript 类与静态类的实现
2010/04/01 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
Python实现简单登录验证
2016/04/13 Python
详解python中requirements.txt的一切
2017/03/03 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
学习Python爬虫的几点建议
2020/08/05 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
境外导游求职信
2014/02/27 职场文书
教室布置标语
2014/06/26 职场文书
工厂标语大全
2014/10/06 职场文书
教师节随笔
2015/08/15 职场文书
《社戏》教学反思
2016/02/22 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
canvas绘制折线路径动画实现
2021/05/12 Javascript