目的

使用 MySQL 提供的慢查询日志,找出记录的响应时间超过阈值的 SQL 语句。

使用方法

慢查询日志默认是关闭的。

可以通过 2 种方式开启:

临时开启是在内存中开启。重启 MySQL 服务会设置失效。

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(1)

永久开启是在配置文件中追加。

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(2)

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(3)

阈值设定方式有 2 种:

临时设置,设置完毕重新登陆起效。

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(4)

永久设置

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(5)

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(6)

代码实例

实例 1

目的:通过 sleep(n) 来模拟慢查询,并在慢查询日志中查看。

select sleep(4)

执行结果:

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(7)

实例 2

目的:通过 sleep(n) 来模拟慢查询,并使用 mysqldumpslow 工具在慢查询日志中查看。

select sleep(4)

执行结果:

获取返回记录最多的 3 个 SQL

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(8)

获取访问次数最多的 3 个 SQL

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(9)

按照时间排序,前 10 条包含 left join 查询语句的 SQL

如何解决慢sql(SQL高级SQL的常见问题-慢查询排查)(10)

,