1、mysql慢查询日志包含了执行花费较长时间的查询语句信息。
mysqldumpslow解析慢日志文件并打印出内容摘要。
mysqldumpslow进行分组查询,除了有特殊数值和字符串数据值之外。当现实摘要输出是,将数值抽象化为n(数字)和s(字符串)。参数-a和-n可以用于修改抽象化行为。
0、-a 表示不使用抽象的字符串s,数字n替换查询sql语句的内容
不指定-a参数,查询结果中数值和字符串分别用n和s代替
/data/mysql/bin/mysqldumpslow -t 2 /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
添加-a参数,查询结果中数值和字符串用各自的对应值表示,未被抽象化:
/data/mysql/bin/mysqldumpslow -a -t 2 /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
2、-n 名称中抽象化数字的最少个数
3、–debug 写入调试信息
4、-g 后面可以写正则表达式匹配,大小写不敏感。根据个人需要,过滤需要的关键字:
/data/mysql/bin/mysqldumpslow -t 5 -l -g ‘test’ /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
5、–help 显示帮助信息并退出
6、-h 日志文件名中服务的主机名
使用-h hostname参数,可使用通配符去过滤慢日志
查看当前目录下的慢日志文件名称:
1 | ll *-slow.log |
如果使用-slow.log去过滤慢日志,会把所有-slow.log为后缀的文件都过滤。
mysqldumpslow -a -t 20 -h dax-mysql-slave /data/mysql/log/-slow.log
1 | Reading mysql slow query log from /data/mysql/log/10.0.7.4-slow.log /data/mysql/log/test-slow.log |
也可以指定匹配主机范围:
mysqldumpslow -a -t 20 -h dax-mysql-slave /data/mysql/log/10.0.7.*-slow.log
1 | Reading mysql slow query log from /data/mysql/log/10.0.7.4-slow.log |
-h 后面如果不加任何参数,会匹配出test-slow.log为日志文件名的日志:
[root@dax-mysql-slave log]# mysqldumpslow -a -t 20 -h /data/mysql/log/*-slow.log
1 | Reading mysql slow query log from /data/mysql/log/test-slow.log |
-h 后面不加任何参数,日志文件名使用过滤条件会报错:
[root@dax-mysql-slave log]# mysqldumpslow -a -t 20 -h /data/mysql/log/10.0.7.*-slow.log
1 | Reading mysql slow query log from /data/mysql/data//data/mysql/log/10.0.7.4-slow.log-slow.log |
7、-i 服务的实例名(官方文档说通过mysql.server启动查看服务实例名,测试之后未找到)
8、-l 不从总时间内减去锁时间
9、-r 反转排序顺序
10、-s 何种方式排序:t,at:按查询时间或平均查询时间排序;l,al:按锁定时间或平均锁定时间排序;r,ar:按发送的行或发送的平均行排序;c:按计数排序;默认情况下,按平均查询时间(相当于-s at)排序。
按总时间排序:
/data/mysql/bin/mysqldumpslow -s t -t 5 -l /data/mysql/log/slow.log
1 | Count: 50831 Time=1.49s (75892s) Lock=0.00s (4s) Rows=1.0 (50831), cdax[cdax]@4hosts |
按平均时间排序:
/data/mysql/bin/mysqldumpslow -s at -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
按锁表时间排序
[root@mw-mysql-2 ~]# /data/mysql/bin/mysqldumpslow -s l -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
按锁表平均时间排序
[root@mw-mysql-2 ~]# /data/mysql/bin/mysqldumpslow -s al -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
按返回行排序
/data/mysql/bin/mysqldumpslow -s r -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
按平均返回行排序
/data/mysql/bin/mysqldumpslow -s ar -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
按查询次数排序
/data/mysql/bin/mysqldumpslow -s c -t 5 -l /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
添加-r参数对取到值反转排序:
/data/mysql/bin/mysqldumpslow -s c -t 5 -l -r /data/mysql/log/slow.log
1 | Reading mysql slow query log from /data/mysql/log/slow.log |
11、-t 按指定数字显示行输出
12、–verbose 详细模式
13、如果不小心删掉了slow.log可通过flush-log参数来重新生成慢日志文件(定期做日志切割的时候可能会用到)
1 | mysqladmin -u root -ptest flush-logs slow |