首页 >> 工具知识
mysql命令-mysqldumpslow
mysqldumpslow 是 MySQL 自带的一个慢查询日志分析工具,用于解析和统计 MySQL 慢查询日志文件,帮助 DBA 和开发人员快速定位性能问题。
一、基本语法
mysqldumpslow [选项] [日志文件...]
二、常用选项详解
| 选项 | 说明 |
|---|---|
-s ORDER | 排序方式(必选) |
-t NUM | 只显示前 N 条记录 |
-g PATTERN | 正则匹配,只显示符合模式的语句 |
-a | 不将数字抽象为 N,字符串抽象为 S |
-n NUM | 抽象数字时,至少 NUM 位数字才被抽象 |
-l | 不减去锁定时间 |
-r | 反转排序顺序 |
-v | 详细模式 |
-d | 调试模式 |
-h HOST | 数据库主机名(慢查询日志中记录) |
三、排序方式(-s 参数)
t, at 按查询时间排序(默认 at) l, al 按锁定时间排序 r, ar 按返回行数排序 c 按执行次数排序
四、使用示例
1. 查看最耗时的10条SQL
mysqldumpslow -s t -t 10 /var/lib/mysql/slow.log
2. 查看执行次数最多的10条SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/slow.log
3. 查看包含特定表的慢查询
mysqldumpslow -g "user" /var/lib/mysql/slow.log
4. 显示完整SQL(不抽象数字和字符串)
mysqldumpslow -a -s t -t 5 /var/lib/mysql/slow.log
5. 多个日志文件一起分析
mysqldumpslow -s t /var/lib/mysql/slow1.log /var/lib/mysql/slow2.log
五、输出结果解读
示例输出:
Count: 25 Time=12.34s (308s) Lock=0.00s (0s) Rows=100.0 (2500), root[root]@localhost SELECT * FROM users WHERE id = N AND name = 'S'
Count: 执行次数(25次)
Time: 平均执行时间(12.34秒),括号内是总时间(308秒)
Lock: 平均锁定时间(0.00秒)
Rows: 平均返回行数(100行),括号内是总行数(2500行)
用户信息: root[root]@localhost
SQL语句: 抽象后的SQL(N代表数字,S代表字符串)
六、实际案例
场景:分析生产环境慢查询
# 1. 找到最慢的5个查询 mysqldumpslow -s t -t 5 /var/lib/mysql/server-slow.log # 2. 查找特定操作的慢查询(如JOIN) mysqldumpslow -g "JOIN" /var/lib/mysql/server-slow.log # 3. 分析INSERT语句的性能 mysqldumpslow -s c -g "INSERT" /var/lib/mysql/server-slow.log # 4. 完整显示具体的数值 mysqldumpslow -a -s t -t 3 /var/lib/mysql/server-slow.log
七、结合其他工具使用
1. 与grep配合过滤
# 查找特定时间段的慢查询 mysqldumpslow /var/lib/mysql/slow.log | grep "2024-01-15" # 查找特定用户的慢查询 mysqldumpslow /var/lib/mysql/slow.log | grep "root@"
2. 输出到文件
# 生成分析报告 mysqldumpslow -s t -t 20 /var/lib/mysql/slow.log > slow_report.txt
八、注意事项
慢查询日志需要开启:
-- 查看慢查询配置 SHOW VARIABLES LIKE 'slow_query%'; SHOW VARIABLES LIKE 'long_query_time'; -- 临时开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 2; -- 2秒以上视为慢查询
权限要求:需要有读取慢查询日志文件的权限
日志格式:确保慢查询日志格式是文本格式(log_output = FILE)
最新文章
mysql命令-mysqlimport2026-02-01
mysql命令-mysql_tzinfo_to_sql2026-02-01
mysql命令-mysql2026-02-01
mysql命令-my_print_defaults2026-02-01
mysql命令-mysqldumpslow2026-02-01
mysql命令-mysqld2026-02-01
mysql命令-mysql_secure_installation2026-02-01
mysql命令-myisampack2026-02-01
mysql命令-perror2026-02-01
mysql命令-mysqldump2026-02-01
