MySQL之慢查询日志

慢查询日志定义

  • 慢查询日志是MySQL提供的一种日志记录,用来记录响应时间超过阀值的SQL语句。
  • 如果某条SQL语句运行时间超过long_query_time设定的值,就会被记录到慢查询日志中。
  • long_query_time的默认值为 10(10秒)
  • 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能 收集超过5秒的sql,结合之前explain进行全面分析

使用

默认情况下,MySQL 数据库没有开启慢查询日志,需要我们手动来设置这个参数

如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会将SQL语句写入日志,因此或多或少带来一定的性能影响。

SQL语句说明
SHOW VARIABLES LIKE ‘%slow_query_log%’查看慢查询日志是否开启(默认OFF)
set global slow_query_log=1开启慢查询日志
set global slow_query_log=0关闭慢查询日志
SHOW VARIABLES LIKE ‘long_query_time%’查看慢查询设定阈值(默认10秒)
set long_query_time=5设定慢查询阈值为5秒 (单位:秒 )

在这里插入图片描述

注意:

  • set global slow_query_log=1开启慢查询日志,仅对当前数据库生效,MySQL重启后失效。
  • 如果需要永久生效,则需要修改my.ini配置文件,在[mysqld]下增加 slow_query_log = 1slow_query_log_file = G:\Programs\mysql-8.0.18\data\layman-slow.loglong_query_time = 5log_output = FILE(和数据库查询的一致)

永久配置

[mysqld]
#开启慢查询 
slow_query_log = 1 
#设置日志路径
slow_query_log_file = G:\Programs\mysql-8.0.18\data\layman-slow.log
#设置慢查询阈值为5秒
long_query_time = 5
log_output = FILE

日志分析工具

生产环境中手工查找,分析日志,非常的耗费时间,因此MySQL提供了日志分析工具mysqldumpslow

帮助信息

在这里插入图片描述

简单实用案例

--获取返回集最多的10条SQL
mysqldumpslow -s r -t 10 G:\Programs\mysql-8.0.18\data\layman-slow.log
--获取访问次数最多的10条SQL
mysqldumpslow -s c -t 10 G:\Programs\mysql-8.0.18\data\layman-slow.log
--获取按时间排序的前10条含有LEFT JOIN的SQL语句
mysqldumpslow -s t -t 10 -g "LEFT JOIN" G:\Programs\mysql-8.0.18\data\layman-slow.log
--结合|more使用,否则有可能会爆屏
mysqldumpslow -s r -t 10 G:\Programs\mysql-8.0.18\data\layman-slow.log |more
posted @ 2021-02-20 15:43  layman~  阅读(102)  评论(0编辑  收藏  举报