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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值