什么是 mysqldumpslow?
mysqldumpslow
是 MySQL 自带的一个强大的命令行工具,用于分析慢查询日志。它帮助数据库管理员和开发人员通过解析和汇总慢查询日志文件,以可读的格式识别性能瓶颈。
基本语法
mysqldumpslow [选项] [日志文件...]
常用选项详解
基本过滤选项
-s
- 排序方式 (t=时间, c=次数, r=行数, 等)-t
- 显示前N个查询-g
- grep模式:只显示匹配模式的语句
详细选项
-a
- 不将所有数字抽象为N,字符串抽象为’S’-n
- 抽象化至少N位数的数字-r
- 反向排序-l
- 不从总时间中减去锁定时间
实际使用示例
示例1:显示最慢的前10个查询
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
示例2:显示执行次数最多的查询
mysqldumpslow -s c -t 5 /var/log/mysql/slow.log
示例3:查找影响行数最多的查询
mysqldumpslow -s r -t 5 /var/log/mysql/slow.log
示例4:搜索特定模式的查询
mysqldumpslow -g "SELECT.*users" /var/log/mysql/slow.log
输出结果解释
Count: 5 Time=2.50s (12s) Lock=0.00s (0s) Rows=1000.0 (5000)
SELECT * FROM users WHERE name='S'
这表示:
- Count: 5 - 查询执行了5次
- Time=2.50s (12s) - 平均执行时间2.50秒,总计12秒
- Lock=0.00s (0s) - 锁定时间信息
- Rows=1000.0 (5000) - 平均检查行数1000,总计5000
使用前提
- 必须启用慢查询日志,在 MySQL 配置文件中设置:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
- 日志文件必须存在且可读
有用的排序选项
选项 | 排序依据 | 说明 |
---|---|---|
-s t |
时间 | 查询执行时间 |
-s c |
次数 | 执行次数 |
-s r |
行数 | 检查的行数 |
-s l |
锁定 | 锁定时间 |