mysqldumpslow慢查询分析工具,是mysql安装后自带的。
[root@mysql57 bin]# ./mysqldumpslow --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default #order的顺序
al: average lock time # 平均锁定时间
ar: average rows sent #平均返回记录时间
at: average query time #平均查询时间(默认)
c: count #计数
l: lock time #锁定时间
r: rows sent #返回记录
t: query time #查询时间
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries #是top n的意思,即为返回前面多少条的数据
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string #后边可以写一个正则匹配模式,大小写不敏感的
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don't subtract lock time from total time
常见用法:
./mysqldumpslow -s c -t 10 /usr/local/mysql/data/mysql57-slow.log # 取出使用最多的10条慢查询
./mysqldumpslow -s t -t 3 /usr/local/mysql/data/mysql57-slow.log # 取出查询时间最慢的3条慢查询
./mysqldumpslow -s t -t 10 -g “left join” /usr/local/mysql/data/mysql57-slow.log # 得到按照时间排序的前10条里面含有左连接的查询语句
./mysqldumpslow -s r -t 10 -g 'left join' /usr/local/mysql/data/mysql57-slow.log # 按照扫描行数最多的
注意: 使用mysqldumpslow的分析结果不会显示具体完整的sql语句,只会显示sql的组成结构;,如下图所示,第一次执行的语句是select sleep(10);
第二次执行的语句是:第一次执行的语句是select sleep(20);
再次使用mysqldumpslow查看。
已经统计2个慢查询,但是sql语句都是select sleep(N)
mysqldumpslow的分析结果详解:
Count:表示该类型的语句执行次数,上图中表示select sleep(N)语句执行了2次。
Time:表示该类型的语句执行的平均时间(总计时间),如上图中,Time=15s (30s)中15s是两次平均值,(30s)是指sleep(10)、sleep(20)执行时间总和。
Lock:锁时间0s。
Rows:单次返回的结果数是1条记录,2次总共返回2条记录。