讲师中心 微信公众号
AI工具推荐 视频效率加速

为什么MySQL慢查询日志没有记录SQL

阿婷大大_6639

阿婷大大_6639

发布时间:2026-08-22 09:59:00

|

164人浏览过

|

来源于php中文网

原创

慢查询日志未记录SQL,90%因slow_query_log为OFF;必须先执行SHOW VARIABLES LIKE 'slow_query_log'确认返回'ON',再检查log_output是否为'FILE'或'TABLE',否则所有配置均无效。

为什么mysql慢查询日志没有记录sql

慢查询日志没记录 SQL,90% 是因为 slow_query_log 还是 OFF —— 其他所有配置都白搭。

确认 slow_query_log 真的开着了吗?

很多人改了 long_query_time 就以为万事大吉,但 MySQL 根本不启动日志引擎,自然一条都不写。这不是 bug,是设计逻辑:开关没开,阈值再小也没意义。

  • 执行 SHOW VARIABLES LIKE 'slow_query_log';,返回值必须是字符串 'ON'(不是 1、TRUE 或空)
  • 临时开启用 SET GLOBAL slow_query_log = ON;,但注意:已存在的连接不会生效,得新开客户端验证
  • 云数据库(如阿里云 RDS)不支持 SET GLOBAL,必须走控制台或参数模板修改,且需重启或热生效确认
  • 配置文件里写 slow_query_log = 1 在某些旧版本(如 5.6)可能无效,推荐统一用 slow_query_log = ON

log_output 是不是设成了 FILE?

默认值是 'NONE',不是 'FILE'。即使 slow_query_log = ON,日志也只会“计算”是否该记,但不输出到任何地方。

MySQL8 CRM Schema Design Expert
MySQL8 CRM Schema Design Expert

面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。

下载
  • 查当前设置:SHOW VARIABLES LIKE 'log_output';,必须是 'FILE' 或 'TABLE'(后者需确保 mysql.slow_log 表存在且可写)
  • 临时设为文件输出:SET GLOBAL log_output = 'FILE';
  • 路径由 slow_query_log_file 指定,但 MySQL 是以 mysql 用户身份写入的,不是你登录的账号 —— ls -ld $(dirname $(mysql -Nse "SELECT @@slow_query_log_file")) 看属主和权限
  • 磁盘满、SELinux/AppArmor 拦截也会导致静默失败,df -h 和 setenforce 0(仅测试)可快速交叉验证

这条 SQL 真的“被判定为慢”了吗?

long_query_time 只对新连接生效,且判定逻辑有隐藏规则:它只算语句真正执行时间,不包括锁等待、调度延迟、复制延迟等。

  • 执行 SELECT @@long_query_time;(不是 SHOW VARIABLES),确认当前会话实际值;若刚 SET 过 GLOBAL,还得 SET SESSION long_query_time = 0.5; 才对当前会话有效
  • SELECT SLEEP(2) 测试时,系统调度可能导致实际耗时 1.999s,差 1ms 都不记 —— 改用 SLEEP(2.1) 更可靠
  • 未命中索引的查询,默认不进日志,除非开了 log_queries_not_using_indexes = ON
  • INSERT/UPDATE/DELETE 默认不记录,哪怕执行 10 秒,要捕获就得 log_slow_admin_statements = ON
  • 存储过程内 SQL 默认不单独判定,必须 log_slow_sp_statements = ON;从库上用户发起的查询不受 log_slow_slave_statements 影响

为什么 SELECT COUNT(*) 明显很慢却没进日志?

这是典型误判场景:InnoDB 扫全表计数时,rows_examined 可能远超 min_examined_row_limit,但若该参数设得太高(比如 1000),而实际扫描行数刚好卡在阈值下,就会被跳过。

  • 查当前值:SELECT @@min_examined_row_limit;
  • 这个参数和 long_query_time 是“与”关系:必须同时满足「耗时超阈值」且「扫描行数 ≥ 该值」才记录
  • SELECT COUNT(*) 在无二级索引时走聚簇索引,rows_examined = 表总行数 —— 如果表只有 500 行,min_examined_row_limit = 1000,那再慢也不记
  • 源码里 log_slow_applicable() 函数明确做了这层判断,不是配置遗漏,是逻辑过滤

最易被忽略的点:日志里没出现的慢 SQL,往往不是没发生,而是根本没通过这三重校验——开关、输出、判定。先盯死 slow_query_log 和 log_output 的实时值,比调 long_query_time 重要十倍。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2473

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1499

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

875

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3512

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

6048

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1279

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6311

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5442

2023.08.14

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 194人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn