慢查询分析

慢查询分析 #

mysqldumpslow #

mysqldumpslow — Summarize Slow Query Log Files

Mysql慢查询日志包含有关执行时间较长的查询的信息。mysqldumpslow解析Mysql慢查询日志文件并总结其内容。

通常,mysqldumpslow 聚集类似的查询,但数字和字符串数据值的特定值除外。它在显示摘要输出时将这些值"抽象"为NS,要修改值抽象行为,请使用-a-n选项。

调用 mysqldumpslow,如下所示:

1mysqldumpslow [options] [log_file ...]

未使用选项的输出示例:

1Reading mysql slow query log from /usr/local/mysql/data/mysqld84-slow.log
2Count: 1  Time=4.32s (4s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
3 insert into t2 select * from t1
4
5Count: 3  Time=2.53s (7s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
6 insert into t2 select * from t1 limit N
7
8Count: 3  Time=2.13s (6s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
9 insert into t1 select * from t1

mysqldumpslow 选项 #

mysqldumpslow 支持以下选项:

选项名称描述
-a不要将所有数字抽象为 N,不要将字符串抽象为 S
-n指定需要查询的最少数量
–debug输出 debug 信息
-g只输出符合指定正则规则的语句,后边可以写正则来匹配输出
–help打印帮助信息
-h指定在慢查询日志里的服务器 host
-i服务器实例的名称
-l不要从总时间中减去锁定时间
-r反转排序顺序
-s指定如何排序输出
-t仅显示前 n 个查询,top n的意思
–verbose详细模式

-s支持以下sort_type

  • t,at:按查询时间或平均查询时间排序
  • l,al:按锁定时间或平均锁定时间排序
  • r,ar:按返回的条目数或平均返回的条目数排序
  • c:按 sql 数量排序,也就是该 sql 执行的总的次数

例如,要得到返回记录最多的10个 sql,可以执行以下命令:

1mysqldumpslow -s r -t 10 mysql_slow_r.log

得到 sql 执行次数最多的10个 sql:

1mysqldumpslow -s c -t 10 mysql_slow_c.log

得到按照总时间排序的前10条里面含有左连接的查询语句。

1mysqldumpslow -s t -t 10 -g "left join" mysql_slow_t_left_join.log

pt-query-digest #

  • pt-query-digest - 分析来自日志、进程列表和tcpdump的MySQL查询。

Anemometer #

https://github.com/box/Anemometer

警告 该项目已经很久没更新了

Box Anemometer是一个MySQL慢查询Web监控器。该工具用于分析从MySQL实例收集的慢查询日志,以识别有问题的查询。 名字来源于气象站的风速测速仪,可以通过多手段多角度观察数据库的慢查询,为开发人员或者是DBA进行SQL调优提供了一个得力平台。

部署 #

  • MySQL 5.7
  • a webserver with PHP 5.5+
  • pt-query-digest

pt-kill #

© 2025 青蛙小白 | 总访问量 | 总访客数