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

 更新时间:2011年05月22日 12:17:41   作者:  
mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具

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

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

格式说明如下:
总查询次数 (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


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

 
功能上, 列出了总的慢查询次数和类型, 去重后的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优化的时候的注意事项,都是自己经常用到的,这里推荐给大家,有遗漏的地方也请告之。
    2014-11-11
  • PHP实现腾讯云视频加密的示例代码

    PHP实现腾讯云视频加密的示例代码

    上传到腾讯云上面的视频,如何实现防盗链?本文就为大家提供了php实现腾讯云视频加密的示例代码,感兴趣的小伙伴快跟随小编一起学习一下
    2022-04-04
  • PHP使用自定义方法实现数组合并示例

    PHP使用自定义方法实现数组合并示例

    这篇文章主要介绍了PHP使用自定义方法实现数组合并示例,涉及php针对数组的遍历、判断、转换等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Gregarius中文日期格式问题解决办法

    Gregarius中文日期格式问题解决办法

    Gregarius支持中文的程度很不错,唯一的缺陷就是在日期格式上会出现乱码。其实只要修改根目录下util.php文件的rss_locale_date方法就可以解决这个问题,希望可以帮助使用Gregarius的朋友,修改后的方法代码如下:
    2008-04-04
  • php curl_init函数用法

    php curl_init函数用法

    使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了
    2014-01-01
  • 在WordPress中使用wp_count_posts函数来统计文章数量

    在WordPress中使用wp_count_posts函数来统计文章数量

    这篇文章主要介绍了在WordPress中使用wp_count_posts函数来统计文章数量的方法,同时也可以统计草稿及页面的数量,相当实用,需要的朋友可以参考下
    2016-01-01
  • PHP调用外部程序的方法解析

    PHP调用外部程序的方法解析

    这篇文章主要介绍了PHP调用外部程序的方法解析,对此感兴趣的同学,可以多研究一下
    2021-04-04
  • 文件系统基本操作类

    文件系统基本操作类

    文件系统基本操作类...
    2006-11-11
  • php 定界符格式引起的错误

    php 定界符格式引起的错误

    下面是一个错误的代码,能看出哪里出错了么??对于我这个初学者什么都是蒙蒙懂的,真的无从下手,但是真的要自己尝试了才知道哪里错了,书和教程都不会告诉我哪里错了
    2011-05-05
  • php上传文件的增强函数

    php上传文件的增强函数

    php文件上传的增强函数首先变得傻瓜简单化,但并不是该函数的简单化就影响他的超强功能,并且加上了强大的除错功能这是一函数,当然你可以把它变成一个类的方法!
    2010-07-07

最新评论