记录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将数据导入到Foxmail
Oct 09 PHP
坏狼的PHP学习教程之第2天
Jun 15 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 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实现比较全的数据库操作类
2015/06/18 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php中上传文件的的解决方案
2018/09/25 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
解析Python中的异常处理
2015/04/28 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python datetime模块使用方法小结
2020/06/18 Python
Python解析微信dat文件的方法
2020/11/30 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
C#面试题
2016/05/06 面试题
中专毕业生个人职业生涯规划
2014/02/19 职场文书
银行委托书范本
2014/04/04 职场文书
金融与证券专业求职信
2014/06/22 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2014年路政工作总结
2014/12/10 职场文书
元旦晚会开场白
2015/05/29 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js