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秒钟的时间。