「mysqldumpslow」

内容:介绍mysqldumpslow工具。

MySQL Version 5.7

mysqldumpslow是用于分析MySQL慢查询日志的工具。可以简化慢查询日志的分析。
mysqldumpslow会将相似的查询分到一起,这里的相似是指的只用数字和字符串参数不同。
关于MySQL慢查询日志相关内容请查看:《MySQL慢查询日志》

引用内容:

命令行选项、语法、参数含义

mysqldumpslow [options] [log_file …]

参数解释

以下是mysqldumpslow支持的选项:

-a

mysqldumpslow会将“相似”的查询分到一起,这里的“相似”是指的只用数字和字符串参数不同。

而-a阻止这种处理,不要会将数字抽象成‘N’,也会将字符串抽象成‘S’。Demo:

#!/bin/sh


cat /var/log/mysql/slow-query.log
# ......
#
# # Time: 2017-04-01T03:08:55.987817Z
# # User@Host: root[root] @ localhost [127.0.0.1]  Id:   106
# # Query_time: 2.549367  Lock_time: 0.000070 Rows_sent: 30  Rows_examined: 3226494
# SET timestamp=1491016135;
# SELECT * FROM tbk_article
# WHERE 1
# ORDER BY sort DESC,id DESC
# LIMIT 0, 30;
#
# ......

mysqldumpslow /var/log/mysql/slow-query.log
# ......
#
# Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts
#   Time: N-N-01T03:N:N.242579Z
#   # User@Host: taobaoke[taobaoke] @ localhost []  Id:   N
#   # Query_time: N.N  Lock_time: N.N Rows_sent: N  Rows_examined: N
#   SET timestamp=N;
#   SELECT * FROM tbk_article
#   WHERE N
#   ORDER BY sort DESC,id DESC
#   LIMIT N, N
#
# ......

mysqldumpslow /var/log/mysql/slow-query.log -a
#
# Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts
#   mysqld, Version: 5.7.15-log (MySQL Community Server (GPL)). started with:
#   # Time: 2017-04-01T01:11:13.039190Z
#   # User@Host: taobaoke[taobaoke] @ localhost []  Id:    87
#   # Query_time: 7.388035  Lock_time: 0.000113 Rows_sent: 30  Rows_examined: 18020
#   use taobaoke;
#   SET timestamp=1491009073;
#   SELECT * FROM tbk_article
#   WHERE 1
#   ORDER BY sort DESC,id DESC
#   LIMIT 0, 30
#

–debug, -d

运行在debug模式下。

-g pattern

只显示匹配pattern的查询。

-h host_name

文件名为*-slow.log的文件中的主机名。

host_name中可以包含通配符,默认是*(匹配所有)。

-i name

服务器实例的名字(如果使用mysql.server启动脚本)。

-l

不要从总时间减去锁时间

-n N

在名称中,抽象至少有N位数的数字。

-r

反向排序。

-s sort_type

控制如何排序输出的内容。sort_type 取值如下:

· t, at: 根据查询时间(t)或平均查询时间(at)排序

· l, al: 根据锁时间(l)或平均锁时间(al)排序

· r, ar: 根据发送的行数(r)或平均发送的行数(ar)排序

· c: 根据数量排序

默认为t。

-t N

只显示输出前N条查询。

–verbose, -v

打印更多关于程序执行的信息。

–help

显示帮助信息。

使用

默认只使用无参数的mysqldumpslow时,会根据my.cnf查找,datadir下的*-slow.log。如下:

shell> mysqldumpslow

Reading mysql slow query log from /usr/local/mysql/data/mysqld51-apple-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 t1

如果慢查询日志指定了别的位置(通过设置:slow_query_log_file = /var/log/mysql/slow-query.log),会提示没有找到日志文件。如下:

shell> mysqldumpslow

Can’t find ‘/usr/local/mysql/data/*-slow.log’