如何开启慢查询日志_mysql性能日志配置

来源:这里教程网 时间:2026-02-28 20:50:02 作者:

MySQL 慢查询日志(Slow Query Log)是定位性能瓶颈最直接有效的工具之一,它会记录执行时间超过指定阈值的 SQL 语句。开启后,结合

mysqldumpslow
或分析工具(如 pt-query-digest),能快速识别“拖慢数据库”的元凶。

确认当前慢查询日志状态

登录 MySQL 后执行以下命令查看是否已启用:

SHOW VARIABLES LIKE 'slow_query_log';<br>SHOW VARIABLES LIKE 'long_query_time';<br>SHOW VARIABLES LIKE 'slow_query_log_file';

slow_query_log
值为
OFF
,说明未开启;
long_query_time
默认是 10 秒,生产环境建议调低至 1–2 秒;
slow_query_log_file
是日志路径,确保 MySQL 进程对该路径有写权限。

动态开启(无需重启)

适用于临时诊断或测试环境,立即生效但服务重启后失效:

开启日志
SET GLOBAL slow_query_log = ON;
设置阈值(例如 2 秒)
SET GLOBAL long_query_time = 2;
指定日志文件路径(可选)
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

注意:修改

long_query_time
对已连接会话不生效,新连接或后续查询才按新值判断。

永久生效(推荐生产环境)

编辑 MySQL 配置文件(通常是

/etc/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
),在
[mysqld]
段落下添加:

slow_query_log = ON<br>slow_query_log_file = /var/log/mysql/mysql-slow.log<br>long_query_time = 2<br>log_queries_not_using_indexes = OFF  # 可选:避免索引缺失语句刷屏

保存后重启 MySQL 服务:

sudo systemctl restart mysql
(或
mysqld
)。重启前建议先手动创建日志目录并赋权:
sudo mkdir -p /var/log/mysql && sudo chown mysql:mysql /var/log/mysql

验证与基本分析

触发一条慢查询(如

SELECT SLEEP(3);
),然后检查日志文件是否写入:

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

典型日志行包含:执行时间、锁等待时间、返回行数、扫描行数、SQL 语句本身。重点关注

Rows_examined
远大于
Rows_sent
的语句——大概率缺少索引或存在全表扫描。

相关推荐