Mysql 慢SQL分析工具pt-query-digest介绍
除了mysqldumpslow可以分析出慢sql外,还有一些第三方工具,今天我们介绍下percona的pt-query-digest。
这个工具不仅仅可以分析mysql 慢sql日志,还可以分析通过mysqlbinlog命令解析出来的binlog日志中的一些DML相关语句。
使用也是很简单:
pt-query-digest [OPTIONS] [SOUR-FILES] [DSN-FILE]
更加详细使用可以参考官方文档,我这里抛砖引玉举几个例子:
pt-query-digest slow.log > pt_slow_sql_20211202.rtf 分析半个小时内的慢查询的命令如下。 pt-query-digest --since 1800s slow.log > pt_slow_sql_20211202.rtf 分析一段时间范围内的慢查询的命令如下。 pt-query-digest --since 2014-04-14 22:00:00 --until 2014-04-14 23:00:00 slow.log > pt_slow_sql_20211202.rtf 显示所有分析的查询命令如下。 pt-query-digest --limit 100% slow.log > pt_slow_sql_20211202.rtf 其中,“--limit”参数默认是“95%:20”,表示显示95%的最差的查询,或者20个最差的查询。 此外,也可以用这个工具来分析二进志日志,以查看我们日常的修改语句是如何分布的,首先需要把二进志日志转换为文 本格式。 mysqlbinlog mysql-bin.000005 > /tmp/mysql_bin_000005.log pt-query-digest --type binlog /tmp/mysql_bin_000005.log > pt_slow_sql_mysql_bin_000005.rtf 对于以上分析命令,同样可以加上参数筛选信息,如“--since”、“--until”。
分析结果:
关键字:
·Exec time:执行时间。
·Lock time:表锁的时间。
·Rows sent:返回的结果集记录数。
·Rows examine:实际扫描的记录数。
·Query size:应用和数据库交互的查询文本大小。
·Rank:所有查询日志分析完毕后,此查询的排序。
·Query ID:查询的标识字符串。
·Calls:查询被调用执行的次数。
·R/Call:每次执行的平均响应时间。
·Apdx:应用程序的性能指数得分。(Apdex响应的时间越长,得分越低。)
·V/M:响应时间的方差均值比(变异数对平均数比,变异系数)。可说明样本的分散程度,这个值越大,往往是越值得考
虑优化的对象。
·Item:查询的简单显示,包括查询的类型和所涉及的表。
以下将按默认的响应时间进行排序,并列出TOP n条查询。并且pt-query-digest输出了EXPLAIN的语句,以方便我们验证查
询计划。
注意:慢SQL不一定是有问题的SQL,有可能是被阻塞执行的sql,所以要综合分析,灵活运用。