mysqldumpslow

作者admin

8月 17, 2023

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 指定排序方式,可选值包括 talc,分别对应按时间、按平均时间、按锁定时间和按次数排序;

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

 

 

作者 admin

百度广告效果展示