慢查询分析
mysqldumpslow
Mysql慢查询日志包含有关执行时间较长的查询的信息。mysqldumpslow解析Mysql慢查询日志文件并总结其内容。
通常,mysqldumpslow 聚集类似的查询,但数字和字符串数据值的特定值除外。它在显示摘要输出时将这些值"抽象"为N和S,要修改值抽象行为,请使用-a和-n选项。
调用 mysqldumpslow,如下所示:
mysqldumpslow [options] [log_file ...]未使用选项的输出示例:
Reading mysql slow query log from /usr/local/mysql/data/mysqld84-slow.log
Count: 1 Time=4.32s (4s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t2 select * from t1
Count: 3 Time=2.53s (7s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t2 select * from t1 limit N
Count: 3 Time=2.13s (6s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t1 select * from t1mysqldumpslow 选项
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,可以执行以下命令:
mysqldumpslow -s r -t 10 mysql_slow_r.log得到 sql 执行次数最多的10个 sql:
mysqldumpslow -s c -t 10 mysql_slow_c.log得到按照总时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g "left join" mysql_slow_t_left_join.logpt-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