当前位置: 首页 > news >正文

Mysql出现问题:慢查询日志失效解决方案

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

PC端左侧加我微信,进社群,有送书等更多活动!

文章目录

  • 问题
  • 解决方案
  • 扩展
    • 慢查询日志失效原因二:未使用索引的 SQL 记录不会写入慢查询日志
    • 慢查询日志失效原因三:慢sql里有锁等待
    • 慢查询日志失效原因四:默认不记录管理类命令的慢sql
    • 慢查询日志失效原因五:min_examined_row_limit为非0
    • 慢查询日志失效原因六:slow log文件句柄发生了变化
    • 慢查询日志失效原因七:从库的复制语句默认不记录
  • 参考

问题

在线动态设置long_query_time,从10秒设置到了1秒,执行慢sql,没有记录到慢查询日志中。

解决方案

查看慢查询日志是否有开启

show variables like '%slow_query_log%'; 
show variables like '%long_query_time%'; 

在这里插入图片描述
在这里插入图片描述

是已经开启的。如果没有开启,请按上文介绍的方式操作,这里不再赘述。
慢查询阀值是10s,改为1s.

SET GLOBAL long_query_time = 1;

修改之后,建议重新开一个会话查询(旧会话查询出的值可能是原来的10s)
在这里插入图片描述

扩展

其它可能失效的原因

慢查询日志失效原因二:未使用索引的 SQL 记录不会写入慢查询日志

查看设置,默认是关闭的。

show variables like 'log_queries_not_using_indexes';

在这里插入图片描述
查看慢查询日志是否有开启

show variables like '%slow_query_log%'; 
show variables like '%long_query_time%'; 

在这里插入图片描述
在这里插入图片描述

是已经开启的。如果没有开启,请按上文介绍的方式操作,这里不再赘述。

测试sql
检查student 表的索引:

show index from student;

在这里插入图片描述
执行没有使用索引的sql:

select *
from student
where student_name ='student_name446741'

在这里插入图片描述

慢查询日志中,并没有记录到。
在这里插入图片描述
使用索引的 SQL 记录写入慢查询日志:

set global log_queries_not_using_indexes=on;

在这里插入图片描述
再执行慢查询的sql

select *
from student
where student_name ='student_name446741'

在这里插入图片描述
没有索引的数据也添加到慢查询日志了。

注:log_queries_not_using_indexes参数要跟参数log_throttle_queries_not_using_indexes配合使用

log_throttle_queries_not_using_indexes:该参数决定每分钟记录未使用索引的SQL的数量上限,因为未使用索引的SQL可能会非常多,导致慢日志空间增长飞快。

慢查询日志失效原因三:慢sql里有锁等待

慢SQL里有大量锁等待,慢SQL的执行时间不包含锁等待的时间

慢查询日志失效原因四:默认不记录管理类命令的慢sql

log_slow_admin_statements=0,因此alter, create index, analyze table等操作即使超过 long_query_time,也不会记录到慢日志中。
log_slow_admin_statements 该参数决定是否记录管理类的命令,有 ALTER TABLE,ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE,REPAIR TABLE,默认是不记录这一类语句到慢日志。
在这里插入图片描述

慢查询日志失效原因五:min_examined_row_limit为非0

min_examined_row_limit 该参数定义一个SQL所读取的数据行数;
min_examined_row_limit设置为非0值,SQL检查行数未超过该值,也不会记录。
默认值为0
在这里插入图片描述

慢查询日志失效原因六:slow log文件句柄发生了变化

slow log文件钻句柄发生了变化,如运行期间用vim打开log,最后又保存退出,此时文件句柄发生变化,需要执行flush slow logs。

慢查询日志失效原因七:从库的复制语句默认不记录

log_slow_slave_statements:该参数在从库上设置,决定是否记录在复制过程中超过long_query_time的SQL,如果binlog格式是row,则即使开启了该参数,也不会记录相关SQL。
除非binlog格式是statement且开启log_slow_slave_statements。

参考

SQL进阶-查询优化-慢查询日志(SQL 小虚竹)

相关文章:

  • Unity接入TopOn聚合广告平台SDK【聚合了穿山甲,优量汇(腾讯广告),快手,Mintegral,sigmob等各大广告平台SDK】
  • 【leetcode】和最小的 k 个数对
  • Java 程序控制结构(4)
  • C++动态空间申请
  • WEB安全之javascript基础(一):js的引入方法注释变量数据类型
  • 【node进阶】深度解析Express框架--路由、中间件
  • 硬件设计基础----通信协议UART
  • Python的基础语法
  • 详解CAN总线:CAN总线报文格式—过载帧
  • 论如何参与一个开源项目(上)
  • 【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
  • 【youcans 的图像处理学习课】11. 形态学图像处理(下)
  • 谈谈对链表的理解
  • create-react-app打包优化
  • Mycat 安装以及应用
  • hexo+github搭建个人博客
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • DOM的那些事
  • es的写入过程
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JSDuck 与 AngularJS 融合技巧
  • Logstash 参考指南(目录)
  • Octave 入门
  • React中的“虫洞”——Context
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 浮现式设计
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 山寨一个 Promise
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 智能合约开发环境搭建及Hello World合约
  • ​iOS安全加固方法及实现
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #mysql 8.0 踩坑日记
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (九十四)函数和二维数组
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十三)Flask之特殊装饰器详解
  • (算法)前K大的和
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET BackgroundWorker
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .Net各种迷惑命名解释
  • .net经典笔试题
  • .NET下的多线程编程—1-线程机制概述
  • .Net中的设计模式——Factory Method模式