如何在MySQL中快速定位慢SQL语句呢?

【如何在MySQL中快速定位慢SQL语句呢?】本文出自头条号老王谈运维,转载请说明出处 。
当你正在全神贯注的投入工作时MySQL语句变得特别缓慢,怎么办?如何在MySQL语句中找到低效率执行的SQL语句呢?这个问题困扰着一批又一批的程序猿 。
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
什么是慢查询?
当SQL语句的查询返回结果速度超过了规定的时间(即通常为1S),则规定该查询语句为慢查询,慢查询会导致整个数据库的服务器性能下降,查询变得很缓慢 。
对于MySQL慢查询我们通常的查找解决思路是这样的,MySQL语句变慢一般分为三种情况:
  • 逐渐变慢
  • 突然变慢
  • 偶然变慢
当你遇到这样的问题,怎么办? 如何解决呢?
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
传统的解决思路是这样的:
一、 查询日志
使用查询日志代码 。查看日志的具体情况
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
slow_query_log 当这个参数设置为ON,可以搜寻到时间超过慢查询定义的时间(即1S)SQL语句 。
long_query_time 执行后会浏览所有SQL语句,当某些SQL语句执行超过设定时间后,系统会自动的将该条语句记录到日志中 。
所以,我们可以在日志中查询慢查询的SQL语句 。
二、 explain语句检查
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
我们知道索引查询在列上,重复值很少时,索引效率很高 。例如说:像like’%****’ 之类的语句比较多时,就会导致SQL语句的慢查询的负载变得很高 。所以,我们需要在SQL查询语句中看类似这样的重复值查询语句是否很多 。
三、 硬件问题
说到硬件问题,我们就不得不谈到CPU(当CPU的负载变高时,是会影响计算机的处理运行速率的,会使得计算机变得很缓慢) 。所以,我们此时此刻得看CPU是否负载变得很高,导致MySQL语句执行变得很缓慢 。
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
以上就例举常用的一些查找数据库变得缓慢的方法,是不是觉得很麻烦,还得一步步确认哪一个环节出现问题了 。下面就介绍你一个捷径,帮你省去很多麻烦 。
在这里不得不提到我们的运维神器 --王教授,助你团队实现高效运维,王教授的功能包括:
  • 资产管理
  • 健康诊断
  • 统一监控
  • 告警通知
  • 运维审计
  • 团队协作
工具地址:https://prof.wang/
当中的“健康诊断”功能就可以轻松帮助大家定位到存在慢查询的SQL语句,对于使用云(阿里云、腾讯云、AWS)的用户,你只需要绑定监控的AcessKey,即可对资产进行监控、检查 。不需要你使用传统的方法,一一定位排查问题,费时耗力 。
如何在MySQL中快速定位慢SQL语句呢?

文章插图
 
监控业务系统实时情况,快速指出系统问题所在,轻松变身运维达人 。




    推荐阅读