MySQL慢查询日志

  • 2019 年 10 月 7 日
  • 笔记

一、是什么是慢查询日志

MySQL 的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阀值的语句。

二、使用

1、查看是否开启慢查询

使用命令 :

show variables like '%slow_query_log%';

看看slow_query_log 是否为 ON,默认不开启非OFF。

2、开启慢查询

set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。

修改阈值为3

set global long_query_time=3;

查看阈值是多少

3、查看慢查询日志存放路径

使用命令:

show variables like 'slow_query_log_file';

4、查看慢查询日志

执行一句4秒的查询语句:

打开日志文件查看:

5、查看有多少慢查询

使用命令:

show global status like 'Slow_queries';

三、mysqldumpslow工具

在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活。

MySQL提供了日志分析工具 mysqldumpslow

查看mysqldumpslow的帮助信息:

比如,得到返回记录集最多的10个SQL。

  • mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log得到访问次数最多的10个SQL
  • mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log得到按照时间排序的前10条里面含有左连接的查询语句。
  • mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
  • mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more

4、注意

具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是记录运行10秒以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件和数据库表。

五、尾巴

笔记+学习来自b站尚硅谷周阳的MySQL高级慢查询日志。

整理引用来自博客:

https://blog.csdn.net/qq_40884473/article/details/89455740