MySQl提供了一种日志记录,终于记录响应时间超过阈值的sql语句(long_query_time,默认10s),默认关闭,开发时打开,部署时关闭

检查是否开启慢查询日志:show variables like '%slow_query_log%'

  • 临时开启:set gloabl slow_query_log = 1;在内存里
  • 永久开启:/etc/my.cnf

    [mysqld]
    slow_query_log = 1
    slow_query_log_file = /slow.log
  • 慢查询阈值

    • 临时设置:set global slow_query_time = 5;
    • 永久设置:/etc/my.cnf
    [mysqld]
    slow_query_time = 5

查询超过阈值的sql

1.show global status varibales like '%slow——queries%',具体通过日志查看
2.通过mysqldumpslow工具查看慢sql
s:排序方式
r:逆序
i:锁定时间
g:正则匹配模式

  • 获取返回记录最多的3个sql:mysqldumpslow -s -t 3 /日志路径
  • 获取访问次数最多的3个sql:mysqldumpslow -s c -t 3 /日志路径
  • 按照时间排序,钱10条包含left join的sql:mysqldumpslow -s t -t 10 -g " left join" /日志路径