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

为什么MySQL会出现慢查询日志中无记录但接口很慢

风芳同学_7163

风芳同学_7163

发布时间:2026-09-07 09:23:24

|

899人浏览过

|

来源于php中文网

原创

慢查询日志未记录卡顿接口,主因是slow_query_log未启用或log_output为NONE,且long_query_time仅对新会话生效;需查运行时变量、权限、阈值设置,并结合processlist、IO监控及performance_schema定位真因。

为什么mysql会出现慢查询日志中无记录但接口很慢

慢查询日志里没记录,但接口明显卡顿,90%不是 SQL 不慢,而是日志根本没捕获到——slow_query_log 还是 OFF,或者 log_output 是 NONE,其他所有配置都白搭。

确认 slow_query_log 和 log_output 是否真生效

别只看配置文件写了没,得查运行时状态。MySQL 启动后不会自动加载你改的配置,尤其云数据库(如阿里云 RDS)不支持 SET GLOBAL,必须走控制台修改并确认热生效。

  • 执行 SHOW VARIABLES LIKE 'slow_query_log';,返回值必须是字符串 'ON',不是 1、TRUE 或空
  • 执行 SHOW VARIABLES LIKE 'log_output';,必须是 'FILE' 或 'TABLE';默认是 'NONE',开了开关也白开
  • SET GLOBAL slow_query_log = ON; 只对新连接生效,已连上的客户端不会自动继承,得新开终端验证
  • Linux 下检查日志路径权限:ls -ld $(dirname $(mysql -Nse "SELECT @@slow_query_log_file")),确保属主是 mysql:mysql

long_query_time 的精度和作用域陷阱

long_query_time 不是“超了就记”,而是“执行时间 ≥ 阈值才记”,且它不向上取整——差 1ms 都不录。更麻烦的是,它只对新会话生效,当前连接仍用旧值。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 执行 SELECT @@long_query_time;(不是 SHOW VARIABLES),确认当前会话实际值
  • 刚 SET GLOBAL long_query_time = 0.5; 后,当前会话还得补一句 SET SESSION long_query_time = 0.5; 才立刻生效
  • 测试别用 SLEEP(0.5):系统调度可能导致耗时 0.499s,直接漏掉;改用 SLEEP(2.1) 更可靠
  • 线上建议从 1.0 起步,观察一周后再按业务 RT(比如核心接口 P95 在 300ms)逐步下调至 0.3

哪些“慢 SQL”天生不会进慢日志

MySQL 默认只记录 SELECT,且只算纯执行时间,锁等待、调度延迟、复制延迟、缓存失效抖动全不算在内。很多卡顿根源根本不在这个判定逻辑里。

  • 未命中索引的 SELECT 默认不记,除非显式开启 log_queries_not_using_indexes = ON
  • INSERT/UPDATE/DELETE 即使跑 20 秒也不进日志,要开 log_slow_admin_statements = ON
  • 存储过程里的 SQL 默认不单独判定,需 log_slow_sp_statements = ON
  • SELECT COUNT(*) 这类聚合,若走全表扫描但耗时略低于阈值,或因 buffer pool 预热不足导致首次极慢、后续飞快,日志里也看不到

绕过日志,实时抓正在卡住的查询

慢日志是“事后回放”,而卡顿常发生在“正在发生”的瞬间。与其等日志,不如直接查 information_schema.processlist。

  • 执行 SELECT * FROM information_schema.processlist WHERE TIME > 2 AND COMMAND != 'Sleep';,找已执行超 2 秒还在跑的语句
  • 重点看 State 列:Sorting result、Sending data、Copying to tmp table 都是典型瓶颈信号
  • 搭配 SHOW ENGINE INNODB STATUS\G 查最近锁等待、死锁、buffer pool 命中率,常能暴露隐性资源争抢
  • 终端跑 iostat -x 1 看 %util(接近 100% 表示磁盘饱和)和 await(>10ms 就危险),排除系统层 IO 拖累

真正难排查的,往往是那些“慢得不规律”的查询——比如第一次执行慢(冷读)、第二次飞快(buffer pool 缓存了),或者刚好卡在锁等待上(执行时间短,但排队时间长)。这些情况日志不记、processlist 一闪而过,得靠 performance_schema 或代理层埋点才能持续捕捉。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

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

WorkBuddy

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

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

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

豆包大模型

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

相关专题

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

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

2093

2023.06.20

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

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

1279

2023.06.21

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

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

755

2023.07.18

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

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

2812

2023.07.19

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

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

4688

2023.07.25

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

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

1079

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

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

4951

2023.08.11

mysql忘记密码
mysql忘记密码

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

4402

2023.08.14

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

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

精品课程

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

共1课时 | 180人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 287人学习

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

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