首页/数据/SQL 速查/慢查询日志开启与查看
性能与执行计划72 条

慢查询日志开启与查看

把执行时间超过 long_query_time 的语句记入日志文件:定位慢 SQL 的常规入口,可加开关同时记录未使用索引的语句。

SQL 速查数据更新于 2026-10-12

运行时开启

运行时开启
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;                -- 单位秒,可带小数
SET GLOBAL log_queries_not_using_indexes = ON;
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';

配置文件持久化

配置文件持久化
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
min_examined_row_limit = 100
long_query_time会话级也可设置;生产常用 0.5 到 2 秒
未使用索引记录log_queries_not_using_indexes 会显著增加日志量
持久化SET GLOBAL 重启失效;可用 SET PERSIST 或写配置文件
长期开启未使用索引记录前先评估日志量与磁盘:配合 min_examined_row_limit 过滤小结果集噪音。

易错点

  • 只 SET GLOBAL 不改配置:实例重启后开关丢失,问题复现时日志没开
  • long_query_time 设得过小:日志快速增长挤占磁盘,同时拖慢高并发写入

数据来源与参考

  • MySQL 8.0 Reference Manual §5.4.5 The Slow Query Log
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌