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执行时间,设置一个偏大的慢查询阈值即可(这是个笨办法,如果项目规模较大,直接设置一个大概值,然后上灰度发布,走正式的运营场景效果会更佳)。

相关推荐
神奇侠20244 小时前
Hive SQL常见操作
hive·hadoop·sql
一只叫煤球的猫4 小时前
MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
后端·sql·mysql
寒山李白4 小时前
MySQL安装与配置详细讲解
数据库·mysql·配置安装
多多*4 小时前
微服务网关SpringCloudGateway+SaToken鉴权
linux·开发语言·redis·python·sql·log4j·bootstrap
文牧之4 小时前
PostgreSQL 的扩展pg_freespacemap
运维·数据库·postgresql
deriva5 小时前
某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
数据库·sql
Leo.yuan6 小时前
数据库同步是什么意思?数据库架构有哪些?
大数据·数据库·oracle·数据分析·数据库架构
zhangzhangkeji6 小时前
(33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
mysql
Kookoos6 小时前
ABP VNext 与 Neo4j:构建基于图数据库的高效关系查询
数据库·c#·.net·neo4j·abp vnext