解决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、在线开启),但下次启动时会沿用配置。

相关推荐
想摆烂的不会研究的研究生6 小时前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
码熔burning6 小时前
MySQL 8.0 新特性爆笑盘点:从青铜到王者的骚操作都在这儿了!(万字详解,建议收藏)
数据库·mysql
xiaolizi5674896 小时前
安卓远程安卓(通过frp与adb远程)完全免费
android·远程工作
阿杰100016 小时前
ADB(Android Debug Bridge)是 Android SDK 核心调试工具,通过电脑与 Android 设备(手机、平板、嵌入式设备等)建立通信,对设备进行控制、文件传输、命令等操作。
android·adb
猫头虎6 小时前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
梨落秋霜7 小时前
Python入门篇【文件处理】
android·java·python
哈库纳玛塔塔7 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
@LetsTGBot搜索引擎机器人8 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐9 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、