答案:通过检查并配置慢查询日志参数可有效排查MySQL性能问题。首先查看slow_query_log、long_query_time和slow_query_log_file状态,临时开启需设置全局变量,永久开启则在my.cnf中添加相应配置,同时创建日志目录并赋权,重启服务后验证配置生效,结合log_queries_not_using_indexes全面捕获问题SQL。

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/mysqlsudo touch /var/log/mysql/slow.log
sudo chown mysql:mysql /var/log/mysql/slow.log
配置完成后重启MySQL服务:
sudo systemctl restart mysql5. 验证配置是否生效
重新登录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 能更全面地捕获潜在性能问题。记得定期清理或轮转慢查询日志,避免占用过多磁盘空间。









