我们在日常开发中,一定遇见过某些SQL执行较慢的情况,我们俗称“慢SQL”,如果你对系统的接口性能要求较高的话,一定不会放过这种SQL,肯定会想办法进行解决,那么,导致慢 SQL 出现的原因,究竟可能都有哪些呢?
这是一道经典的面试题,就此我们来研究一番,下面我们就来好好看一下,原因可能出在哪里。
本篇我们将从如下几个方面进行讨论:
1.慢SQL捕获
2.执行计划分析
3.引擎参数配置分析
让我们就此开启本次慢SQL分析之旅,Let's go!
ps: 本篇文章的讨论,主要基于MySQL8.0数据库,Oracle等其他数据库不在本篇讨论范围之列。
一、慢SQL捕获
追查应用服务的慢SQL,首先需要追踪哪些SQL可能是慢SQL,对于Java服务,很多数据库中间件提供了慢SQL的追踪能力,例如Alibaba Druid,会将服务运行过程中的慢SQL打印到日志文件,方便开发运维人员追查。
MySQL当然也提供了捕获慢查询的监控能力,记录在MySQL中执行时间超过指定时间的SQL语句。
</