MySQL中Slow-log慢查询日志的作用

对于线上响应缓慢的问题,一步步的排查过程之后还未找到问题,最终就会来到数据库,尝试对SQL或索引调优,MySQL官方支持开启慢查询日志。

当一条SQL执行的时间超过规定的阈值后,就会被记录在慢查询日志中,当线上出现响应缓慢的问题时,可以直接通过查看慢查询日志定位问题,再用explain这类工具去生成SQL的执行计划,然后根据生成的执行计划来判断为什么耗时长,是由于没走索引,还是索引失效等情况导致的。

  • slow_query_log:设置是否开启慢查询日志,默认OFF关闭。
  • slow_query_log_file:指定慢查询日志的存储目录及文件名。
  • setglobal long_query_time =1; 指定超时阈值,默认单位是秒,该参数也可不设置,默认为10s,即执行时间超过10s的查询SQL才会记录到慢查询日志中。

**慢查询阈值要设置合理:**慢查询日志在内存中是没有缓冲区的,每次记录慢查询SQL,都必须触发磁盘IO来完成,阈值设的太小,容易使得MySQL性能下降;设的太大,又会导致无法检测到问题SQL。可以先开启general log,观察后实际的业务情况后再决定。

**general log即查询日志:**写入所有收到的查询命令,如select、show等,无论SQL的语法正确还是错误、执行成功还是失败,MySQL都会将其记录下来。对于该日志可以通过下述参数开启:

  • general_log:是否开启查询日志,默认OFF关闭。
  • general_log_file:指定查询日志的存储路径和文件名(默认在库的目录下,主机名+.log)。

项目测试阶段,可以先开启查询日志,然后压测所有业务,紧接着再分析日志中SQL的平均耗时,再根据正常的SQL执行时间,设置一个偏大的慢查询阈值即可(这是个笨办法,如果项目规模较大,直接设置一个大概值,然后上灰度发布,走正式的运营场景效果会更佳)。

相关推荐
布朗克1682 小时前
MySQL UNION 操作符详细说明
数据库·mysql·union
喵桑..5 小时前
视图是什么?有什么用?什么时候用?MySQL中的视图
数据库·mysql
奋进小子6 小时前
达梦DISQL执行SQL和SQL脚本
数据库·sql
叁沐6 小时前
MySQL 26 备库为什么会延迟好几个小时
mysql
EasyCVR7 小时前
视频汇聚系统EasyCVR调用设备录像保活时视频流不连贯问题解决方案
数据库·ubuntu·音视频·云存储·云端录像
YueiL7 小时前
Linux文件系统基石:透彻理解inode及其核心作用
linux·网络·数据库
陈壮实的搬砖日记8 小时前
一文读懂 Hive、Trino 和 SparkSQL:三大大数据 SQL 引擎的全面对比
mysql
苹果醋39 小时前
React Native jpush-react-native极光推送 iOS生产环境接收不到推送
java·运维·spring boot·mysql·nginx
老华带你飞9 小时前
数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码论坛系统
独泪了无痕10 小时前
Hutool-RedisDS:简化Redis操作的Java工具类
数据库·redis