慢查询分析 #
mysqldumpslow #
Mysql慢查询日志包含有关执行时间较长的查询的信息。mysqldumpslow解析Mysql慢查询日志文件并总结其内容。
通常,mysqldumpslow 聚集类似的查询,但数字和字符串数据值的特定值除外。它在显示摘要输出时将这些值"抽象"为N
和S
,要修改值抽象行为,请使用-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 #
警告 该项目已经很久没更新了
Box Anemometer是一个MySQL慢查询Web监控器。该工具用于分析从MySQL实例收集的慢查询日志,以识别有问题的查询。 名字来源于气象站的风速测速仪,可以通过多手段多角度观察数据库的慢查询,为开发人员或者是DBA进行SQL调优提供了一个得力平台。
部署 #
- MySQL 5.7
- a webserver with PHP 5.5+
- pt-query-digest