mysqldumpslow是什么?
mysqldumpslow
是 MySQL 自带的一个命令行工具,用于解析慢查询日志并生成报告。它可以帮助用户快速定位数据库中的性能问题,提高查询效率。
注意:使用前需要先打开 MySQL 的慢查询日志功能。
在 MySQL 配置文件(一般是 /etc/my.cnf
或 /etc/mysql/my.cnf
)中,找到 [mysqld]
标签,添加以下配置:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
slow_query_log
表示是否开启慢查询日志功能slow_query_log_file
表示慢查询日志的存放位置long_query_time
表示查询执行时间超过多少秒才会被记录
等待一段时间后,可以使用以下命令来查看慢查询日志:
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log
-s
指定排序方式,可选值包括 t
、a
、l
和 c
,分别对应按时间、按平均时间、按锁定时间和按次数排序;
-s t
表示按照查询执行时间排序-s c
表示按照查询出现的次数排序-s l
表示按查询长度排序-s r
表示按逆序排序
-t
指定输出结果的行数;
-g
指定只输出符合正则表达式模式的查询语句;
-i
指定只输出不符合正则表达式模式的查询语句;
-r
指定输出结果为完整的 SQL 语句;
-n
指定只输出前面的 SQL 语句;
-h
显示命令行帮助信息。
-a
表示显示完整的报告,该选项会将所有相同的查询合并,并且在结果中显示查询的次数。
/var/log/mysql/mysql-slow.log
是慢查询日志文件的路径。
查看完整的慢查询报告:
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log -a
根据指定的条件筛选查询:
查找执行时间超过 5 秒的查询:
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log -t 5
统计最慢的10个查询并按照查询数量排序,并将相同的查询合并:
mysqldumpslow -s c -t 10 -a /var/log/mysql/mysql-slow.log
输出结果:
Count: 500 Time=10.00s (5000s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@[127.0.0.1]
SELECT * FROM `table1` WHERE `id` = 1;
Count
表示查询的数量Time
表示查询的总时间Lock
表示锁定时间Rows
表示查询的结果行数。
在这个例子中,查询 SELECT * FROM table1 WHERE id = 1;
在日志中出现了500次,并且总共花费了10秒钟的时间。