暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL慢查询看这一篇就够了

程序猿每日分享 2021-12-16
325

前言

随着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的可执行程序,那么我们该如何使用呢,请关注我,查看明天的文章,该号都是发系列文章,关注了肯定不会亏。


五、结语

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

如果文章对你的成长有帮助,欢迎点赞评论转发,如果你对技术有热爱,你对编程有热情,欢迎加入程序猿大家庭,咱们一起成长,一起进步,原创不易,感谢支持。

如果你喜欢本文

请长按二维码,关注程序猿每日分享

转发至朋友圈,是对我最大的支持


点个在看

小时候有种感觉叫喜欢

长大后有种支持叫再看

💕💕💕💕💕💕


文章转载自程序猿每日分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论