如何查看slow query log

首先确认慢查询日志状态,若未开启则通过命令或配置文件启用,并设置阈值和日志路径;之后使用tail、mysqldumpslow等工具查看分析日志,定位执行时间长的SQL语句以优化。

查看慢查询日志(Slow Query Log)是排查数据库性能问题的重要手段,尤其在 MySQL 中使用广泛。下面介绍如何开启并查看慢查询日志。

确认慢查询日志是否开启

登录 MySQL 后,执行以下命令查看当前慢查询日志状态:

SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';

如果 slow_query_log 的值为 OFF,说明未开启。可以通过以下命令临时开启(重启后失效):

SET GLOBAL slow_query_log = 'ON';

long_query_time 表示超过多少秒的查询会被记录,默认是 10 秒,可根据需要调整:

SET GLOBAL long_query_time = 2;

设置慢查询日志文件路径

查看当前日志文件位置:

SHOW VARIABLES LIKE 'slow_query_log_file';

默认路径通常在数据目录下,如:/var/lib/mysql/hostname-slow.log。若需修改,可在 MySQL 配置文件中设置。

在配置文件中永久开启(推荐)

编辑 MySQL 配置文件(通常是 /etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段添加:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

其中 log_queries_not_using_indexes = 1 可记录未使用索引的查询,有助于优化。

保存后重启 MySQL 服务生效:

sudo systemctl restart mysql

查看和分析慢查询日志

使用文本工具查看日志内容:

sudo tail -f /var/log/mysql/mysql-slow.log

或使用 MySQL 自带的分析工具 mysqldumpslow

mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log

常用参数:

  • -s c:按查询次数排序
  • -t 10:显示前 10 条
  • -g:配合正则过滤,如只看 select 语句

也可使用第三方工具如 pt-query-digest(Percona Toolkit 提供)进行深度分析。

基本上就这些。只要日志开启且路径正确,就能看到哪些 SQL 执行时间过长,进而优化语句或索引。