五款常用mysql slow log分析工具的比较分析


Posted in PHP onMay 22, 2011

启用 slow log

有两种启用方式:
1, 在my.cnf 里 通过 log-slow-queries[=file_name]
2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项

比较的五款常用工具

mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter

mysqldumpslow, mysql官方提供的慢查询日志分析工具. 输出图表如下:
五款常用mysql slow log分析工具的比较分析
主要功能是, 统计不同慢sql的
出现次数(Count), 
执行最长时间(Time), 
累计总耗费时间(Time), 
等待锁的时间(Lock), 
发送给客户端的行总数(Rows), 
扫描的行总数(Rows), 
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

mysqlsla, hackmysql.com推出的一款日志分析工具(该网站还维护了 mysqlreport, mysqlidxchk 等比较实用的mysql工具)
五款常用mysql slow log分析工具的比较分析
整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.

格式说明如下:
总查询次数 (queries total), 去重后的sql数量 (unique)
输出报表的内容排序(sorted by)
最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

Count, sql的执行次数及占总的slow log数量的百分比.
Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.
Lock Time, 等待锁的时间.
95% of Lock , 95%的慢sql等待锁时间.
Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined, 扫描的行数量.
Database, 属于哪个数据库
Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句
Query sample, sql语句

除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具.

mysql-explain-slow-log, 德国人写的一个perl脚本.
http://www.willamowius.de/mysql-tools.html

五款常用mysql slow log分析工具的比较分析
五款常用mysql slow log分析工具的比较分析
功能上有点瑕疵, 不仅把所有的 slow log 打印到屏幕上, 而且统计也只有数量而已. 不推荐使用.
mysql-log-filter, google code上找到的一个分析工具.提供了 python 和 php 两种可执行的脚本.
http://code.google.com/p/mysql-log-filter/
五款常用mysql slow log分析工具的比较分析
功能上比官方的mysqldumpslow, 多了查询时间的统计信息(平均,最大, 累计), 其他功能都与 mysqldumpslow类似.
特色功能除了统计信息外, 还针对输出内容做了排版和格式化, 保证整体输出的简洁. 喜欢简洁报表的朋友, 推荐使用一下.
myprofi, 纯php写的一个开源分析工具.项目在 sourceforge 上.
http://myprofi.sourceforge.net/

 五款常用mysql slow log分析工具的比较分析

功能上, 列出了总的慢查询次数和类型, 去重后的sql语句, 执行次数及其占总的slow log数量的百分比.
从整体输出样式来看, 比mysql-log-filter还要简洁. 省去了很多不必要的内容. 对于只想看sql语句及执行次数的用户来说, 比较推荐.

总结

工具/功能 一般统计信息 高级统计信息 脚本 优势
mysqldumpslow 支持 不支持 perl mysql官方自带
mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强.
mysql-explain-slow-log 支持 不支持 perl
mysql-log-filter 支持 部分支持 python or php 不失功能的前提下,保持输出简洁
myprofi 支持 不支持 php 非常精简
PHP 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php中OR与|| AND与&&的区别总结
Oct 26 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 #PHP
Look And Say 序列php实现代码
May 22 #PHP
php利用cookie实现访问次数统计代码
May 19 #PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 #PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 #PHP
php中全局变量global的使用演示代码
May 18 #PHP
一个PHP分页类的代码
May 18 #PHP
You might like
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
js实现导航栏中英文切换效果
2017/01/16 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
python进行参数传递的方法
2020/05/12 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
学校搬迁方案
2014/06/15 职场文书
党员个人公开承诺书
2014/08/29 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
2015年药店工作总结
2015/04/20 职场文书