MySQL慢查询看这一篇就够了

前言

随着MySQL使用的越来越广泛,各个公司对个人的要求也越来越高,过去可能只要会写个SQL,就能找到工作。但是现在如果你已经工作两三年了对原理还一知半解,都不好意思说自己会MySQL。

基于以上的原因今天就来聊一聊慢查询日志,当数据库出现性能瓶颈时我们怎么发现去解决?用户提的时候再改?还是慢慢发现用户量下跌的时候再去处理呢?这个性能肯定是要定期去排查,定期的去处理,这样的场景下就需要有工具或者软件本身提供这样的能力去及时记录这些慢查询,供DBA或者开发人员去排查对应的问题。

MySQL提供的这个能力,我总结为三个参数,一个工具,掌握了三个参数和一个工具也就掌握了慢查询的80%的知识点。

一、什么叫做慢

参数一就是定义什么叫做慢。不同人、不同业务对慢的理解是不一样的,就像工业革命前,我们认为走着比马车慢,工业革命后我们认为马车比蒸汽机慢,其实都是技术发展导致了我们对慢有不同的理解。所以就引入了第一个参数:long_query_time.

该值就是让用户自定义你觉得什么叫做慢。(写到这里突然想起了余光中的诗歌:小时候 乡愁是一枚邮票 我在这头 母亲在那头。有事没事多打打电话)。

该值默认是10秒,但是默认情况MySQL是不会记录慢查询语句的日志。需要我们手动开启进行记录。

二、开启记录

long_query_time默认值是10秒,但是并不会开启记录,需要手动开启慢查询日志记录,这里就引入了第二个参数:log_slow_queries;将该值设为ON,即开启。这样数据库在运行的过程中就会将超过long_query_time的语句记录到日志中去,注意是超过,等于的并不会被记录

感觉好像是已经足够了,但是我们常用的优化手段是什么呢?相信大家肯定都会说加索引。是的,那么是否使用索引也可以给DBA或者开发人员提供很好的指引,这样就引入了下面的第三个参数。

三、log_queries_not_using_indexes

看名称就非常容易知道其代表的意思,当其被设置为ON时,MySQL就会记录没有使用索引的语句到慢查询日志中去。

其实还有另外一个参数log_throttle_queries_not_using_indexes,她代表每分钟最大允许记录到慢查询的语句数量。

随着记录的增多,如果用人眼去看就会变得非常的麻烦,而且效率也会越来越低。这时就需要一个工具来帮助我们去分析,帮助我们去处理这些事情。

四、一个工具

其实这些MySQL的工程师们已经帮我们考虑好了,那就是命令:mysqldumpslow。该命令可以帮助我们很好的去查看慢查询日志。

mysql默认安装时没有带mysqldumpslow,在bin目录我们能找到一个mysqldumpslow.pl的文件,但是并没有exe的可执行程序,那么我们该如何使用呢,请参考这篇文件

五、结语

道阻且长,行则将至,行而不辍,未来可期,加油。

原创不易,如果你觉得文章不错,对你的进步有那么一点帮助,那么就给个小心心,如果觉得文章非常对你的胃口,那么欢迎你关注我,或者关注个人的微信公众号,咱们一起打怪升级。
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿每日分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值