五款常用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脚本加密专家php解密算法
Sep 13 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
PHP程序员基本要求和必备技能
May 09 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 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 tp验证表单与自动填充函数代码
2012/02/22 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
php中关于换行的实例写法
2019/09/26 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
django实现前后台交互实例
2017/08/07 Python
python实现拓扑排序的基本教程
2018/03/11 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
python多线程下信号处理程序示例
2019/05/31 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
什么是.net
2015/08/03 面试题
如何理解transaction事务的概念
2015/05/27 面试题
简历自我评价怎么写呢?
2014/01/06 职场文书
幼儿园教师备课制度
2014/01/12 职场文书
学校卫生检查制度
2014/02/03 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
客户答谢会致辞
2015/01/20 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
课改心得体会范文
2016/01/25 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL