MySQL慢查询日志分析工具mysqldumpslow教程
介绍
• mysqldumpslow
是 MySQL 自带的慢查询日志分析工具,用于汇总和统计慢查询日志中的 SQL 语句。以下是其核心参数的详细说明及使用场景:
• 文章已整理好,喜欢的朋友可以转存一下,方便查看:https://pan.quark.cn/s/f52968c518d3
基本语法
mysqldumpslow [OPTIONS] [LOG_FILE]
参数详解
1. 排序参数 -s
指定排序方式,支持以下排序类型:
• t
(默认):按总执行时间排序(Query_time
总和)。
• c
:按出现次数排序(COUNT(*)
)。
• l
:按锁定时间排序(Lock_time
总和)。
• r
:按单次查询的平均时间排序(Query_time / COUNT(*)
)。
• ar
:按平均返回行数排序(Rows_sent / COUNT(*)
)。
• al
:按平均锁定时间排序(Lock_time / COUNT(*)
)。
示例:
# 按总执行时间排序
mysqldumpslow -s t /path/to/slow.log# 按出现次数排序
mysqldumpslow -s c /path/to/slow.log
2. 显示数量 -t
限制输出结果的数量(默认显示所有结果)。
示例:
# 显示前 10 条最耗时的 SQL
mysqldumpslow -s t -t 10 /path/to/slow.log
3. 模式匹配 -g
仅显示匹配特定模式的 SQL 语句(支持正则表达式)。
示例:
# 筛选包含 "user" 表的慢查询
mysqldumpslow -g "user" /path/to/slow.log# 筛选 SELECT 语句
mysqldumpslow -g "SELECT" /path/to/slow.log
4. 抽象处理控制 -a
禁用自动抽象功能(默认自动将数字和字符串替换为 N
和 'S'
)。
示例:
# 显示原始数字和字符串(不抽象)
mysqldumpslow -a /path/to/slow.log
5. 数字抽象位数 -n
指定抽象数字时的最小位数(默认 1 位)。
示例:
# 将连续 3 位以上的数字替换为 N
mysqldumpslow -n 3 /path/to/slow.log
6. 反向排序 -r
将排序结果反向输出(默认升序,-r
改为降序)。
示例:
# 按总执行时间降序排序
mysqldumpslow -s t -r /path/to/slow.log
7. 调试模式 -d
输出调试信息(用于排查工具自身问题)。
示例:
mysqldumpslow -d /path/to/slow.log
8. 帮助和版本 -h
/ -v
• -h
:显示帮助信息。
• -v
:显示版本信息。
输出字段解析
默认输出格式如下:
Count: 5 Time=10.5s (52s) Lock=0.002s (0s) Rows=100.0 (500), user@hostSELECT * FROM table WHERE id = N
• Count
:SQL 出现的次数。
• Time
:平均执行时间(总执行时间)。
• Lock
:平均锁定时间(总锁定时间)。
• Rows
:平均返回行数(总返回行数)。
• user@host
:执行该 SQL 的用户和主机。
常用场景示例
1. 统计最频繁的慢查询
mysqldumpslow -s c -t 5 /path/to/slow.log
2. 查找平均耗时最长的 SQL
mysqldumpslow -s ar -t 10 /path/to/slow.log
3. 分析特定表的慢查询
mysqldumpslow -g "orders" /path/to/slow.log
4. 显示具体数值(禁用抽象)
mysqldumpslow -a -s t /path/to/slow.log
工具局限性
• 抽象问题:默认抽象数字和字符串,可能掩盖实际 SQL 特征。
• 复杂分析不足:无法像 pt-query-digest
提供执行计划或上下文分析。
总结建议
• 快速汇总日志时使用 mysqldumpslow
。
• 复杂场景使用 pt-query-digest
(Percona Toolkit)或可视化工具(如 MySQL Workbench)。