五款常用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 相关文章推荐
一个自定义位数的php多用户计数器代码
Mar 11 PHP
php Calender(日历)代码分享
Jan 03 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
php实现的ping端口函数实例
Nov 12 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
php实现的表单验证类完整示例
Aug 13 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python常见数据结构详解
2014/07/24 Python
python Django模板的使用方法
2016/01/14 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python2包含中文报错的解决方法
2018/07/09 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python代码能做成软件吗
2020/07/24 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
python如何实现递归转非递归
2021/02/25 Python
Java servlet面试题
2012/03/04 面试题
党委班子对照检查材料
2014/08/19 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python