解决MySQL慢日志输出问题

最近在使用MySQL慢日志的过程中发现即使慢SQL的时间已经设置为1秒,但是小于1秒的SQL依然被输出到了慢日志文件中,先说原因:启用了 log_queries_not_using_indexes

如果你在配置中开启了

bash 复制代码
log_queries_not_using_indexes = ON

那么 即使查询执行时间远小于 long_query_time,只要它没走索引,也会被记入慢日志!

解决方法

检查是否启用了该选项:

bash 复制代码
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';

如果返回 ON,而你不希望记录未使用索引但很快的查询,请关闭它:

bash 复制代码
SET GLOBAL log_queries_not_using_indexes = OFF;

并在配置文件中确保:

bash 复制代码
[mysqld]
log_queries_not_using_indexes = 0

变量作用域

如果上面的配置依然无法解决问题,检查long_query_time 设置未全局生效(会话 vs 全局),执行

bash 复制代码
SHOW SESSION VARIABLES LIKE 'long_query_time';

如果不是1(需要设置的时间),执行

bash 复制代码
SET GLOBAL long_query_time = 1;

注意:SET GLOBAL 只影响新建立的连接,不影响已有连接。

查询变量值

经过上面的配置后,查询变量是否生效,执行

bash 复制代码
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
SHOW SESSION VARIABLES LIKE 'long_query_time';
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
SHOW VARIABLES LIKE 'slow_query_log_file';

开启慢日志

1、在线开启

bash 复制代码
-- 尝试设置日志文件路径(MySQL 8.0 支持动态修改,5.7 可能不支持)
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

-- 记录超过 1 秒的查询
SET GLOBAL long_query_time = 1;

SET GLOBAL slow_query_log = 'ON';

虽然在线开启了,但 MySQL 重启后会恢复默认。要永久生效,需用到下面的方法。

2、修改配置文件,编辑 my.cnf(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),需要重启

bash 复制代码
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log_queries_not_using_indexes = 0  # 可选:是否记录未使用索引的查询

修改后无需立即重启(需先执行1、在线开启),但下次启动时会沿用配置。

相关推荐
MonolithIoT17 分钟前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~39 分钟前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
心机之蛙qee1 小时前
Redis的主从、哨兵及集群
数据库·redis·缓存
gwf2162 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥2 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
码农coding2 小时前
android 12 中的VSYNC的请求
android
xixingzhe22 小时前
spring ai简单使用skills
数据库·人工智能·spring
YF02112 小时前
详解Android所有文件访问权限
android
Fu2067212 小时前
数据库第三次作业
数据库
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app