在目前的项目生产方式之中,我们很乐意去使用数据库MySQL这个工具。但是很多人不知道在MySQL中如何去定位一个慢查询。
慢查询主要是为了来检测出MySQL中哪个接口的响应时长太久了,从而来对其进行一个改造优化。
在MySQL中,慢查询一般出现在以下几点
- 聚合查询
- 多表查询
- 表数据量过大查询
- 深度分页查询
慢查询的出现的表面现象就是 : 页面加载时间过长,接口压测响应时间过长(超过1s)
那在MySQL中,该如何去定位一个慢查询呢?
1.在不同的业务场景之下有不同的方法。假如这个时候有个项目已经上线了,我们可以在系统中提前部署运维的监控系统skywalking,在这个系统的展示之中我们可以看到是哪一个接口比较慢,点击进去之后再看是不是他的MySQL层面的速度慢,可以看到SQL的具体的执行时间,从而定位到具体的SQL。
2.如果项目中没有这种运维的监控系统,我们也可以直接在MySQL中进行一个慢日志的查询。要在SQL的系统配置文件之中开启这个慢日志的功能,并且可以设置当响应时间超过多少秒的时候,将其定义为一个慢查询。当设置好时间之后,可以在开启的slow.log日志文件之中看到是哪一个SQL执行的比较慢了。