本文出自头条号老王谈运维,转载请说明出处。
当你正在全神贯注的投入工作时MySQL语句变得特别缓慢,怎么办?如何在MySQL语句中找到低效率执行的SQL语句呢?这个问题困扰着一批又一批的程序猿。
什么是慢查询?
当SQL语句的查询返回结果速度超过了规定的时间(即通常为1S),则规定该查询语句为慢查询,慢查询会导致整个数据库的服务器性能下降,查询变得很缓慢。
对于MySQL慢查询我们通常的查找解决思路是这样的,MySQL语句变慢一般分为三种情况:
当你遇到这样的问题,怎么办? 如何解决呢?
传统的解决思路是这样的:
一、 查询日志
使用查询日志代码。查看日志的具体情况
slow_query_log
当这个参数设置为ON,可以搜寻到时间超过慢查询定义的时间(即1S)SQL语句。
long_query_time
执行后会浏览所有SQL语句,当某些SQL语句执行超过设定时间后,系统会自动的将该条语句记录到日志中。
所以,我们可以在日志中查询慢查询的SQL语句。
二、 explain语句检查
我们知道索引查询在列上,重复值很少时,索引效率很高。例如说:像like’%****’ 之类的语句比较多时,就会导致SQL语句的慢查询的负载变得很高。所以,我们需要在SQL查询语句中看类似这样的重复值查询语句是否很多。
三、 硬件问题
说到硬件问题,我们就不得不谈到CPU(当CPU的负载变高时,是会影响计算机的处理运行速率的,会使得计算机变得很缓慢)。所以,我们此时此刻得看CPU是否负载变得很高,导致MySQL语句执行变得很缓慢。
以上就例举常用的一些查找数据库变得缓慢的方法,是不是觉得很麻烦,还得一步步确认哪一个环节出现问题了。下面就介绍你一个捷径,帮你省去很多麻烦。
在这里不得不提到我们的运维神器 --王教授,助你团队实现高效运维, 王教授的功能包括:
工具地址:https://prof.wang/
当中的“健康诊断”功能就可以轻松帮助大家定位到存在慢查询的SQL语句,对于使用云(阿里云、腾讯云、AWS)的用户,你只需要绑定监控的AcessKey,即可对资产进行监控、检查。不需要你使用传统的方法,一一定位排查问题,费时耗力。
监控业务系统实时情况,快速指出系统问题所在,轻松变身运维达人。