mysql慢查询日志如何开启_mysql慢查询日志配置方法

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

MySQL慢查询日志是排查性能问题的重要工具,能记录执行时间超过指定阈值的SQL语句。开启并正确配置慢查询日志,有助于分析和优化数据库性能。

1. 检查是否已开启慢查询日志

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

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

返回结果中:

slow_query_log:ON表示已开启,OFF表示未开启 long_query_time:定义“慢查询”的时间阈值(单位:秒),默认为10秒 slow_query_log_file:慢查询日志文件的存储路径

2. 临时开启慢查询日志(重启后失效)

如果只是临时调试,可以在MySQL运行时动态开启:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
SET GLOBAL log_output = 'FILE';
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

注意:long_query_time 修改后需重新连接才能看到新值,但实际判断使用的是全局变量。

3. 永久开启慢查询日志(修改配置文件)

编辑MySQL配置文件 my.cnf 或 my.ini(Linux通常在 /etc/my.cnf 或 /etc/mysql/my.cnf):

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = ON

参数说明:

slow_query_log:启用慢查询日志 slow_query_log_file:指定日志文件路径,确保目录存在且MySQL有写入权限 long_query_time:设置慢查询阈值,如2秒 log_queries_not_using_indexes:记录未使用索引的查询,即使执行很快也记录,便于发现潜在问题

4. 创建日志目录并赋予权限(Linux系统)

确保日志文件所在目录可写:

sudo mkdir -p /var/log/mysql
sudo touch /var/log/mysql/slow.log
sudo chown mysql:mysql /var/log/mysql/slow.log

配置完成后重启MySQL服务:

sudo systemctl restart mysql

5. 验证配置是否生效

重新登录MySQL,执行:

SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'slow_query_log_file';

确认状态为ON,且文件路径正确。

可以手动执行一条耗时较长的SQL测试(如 SELECT SLEEP(3);),然后查看日志文件内容:

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

基本上就这些。合理设置 long_query_time 和启用 log_queries_not_using_indexes 能更全面地捕获潜在性能问题。记得定期清理或轮转慢查询日志,避免占用过多磁盘空间。

相关推荐

热文推荐