内容:介绍mysqldumpslow工具。
MySQL Version 5.7
mysqldumpslow是用于分析MySQL慢查询日志的工具。可以简化慢查询日志的分析。
mysqldumpslow会将相似的查询分到一起,这里的相似是指的只用数字和字符串参数不同。
关于MySQL慢查询日志相关内容请查看:《MySQL慢查询日志》
引用内容:
命令行选项、语法、参数含义
mysqldumpslow [options] [log_file …]
参数解释
以下是mysqldumpslow支持的选项:
-a
mysqldumpslow会将“相似”的查询分到一起,这里的“相似”是指的只用数字和字符串参数不同。
而-a阻止这种处理,不要会将数字抽象成‘N’,也会将字符串抽象成‘S’。Demo:
而-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中可以包含通配符,默认是*(匹配所有)。
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’
Can’t find ‘/usr/local/mysql/data/*-slow.log’