用于记录执行速度较慢的SQL语句

1. 查看慢日志的配置项(内存变量)

show variables like '%query%';


show variables like '%queries%';


慢日志主要的配置项
slow_query_log = OFF/ON
是否开启慢日志记录
long_query_time = num
时间限制,超过此时间,则记录,单位是秒
slow_query_log_file = '路径'
慢日志文件的路径,将记录保存到该日志里面
路径写法一: 'd:/xxx.log'
路径写法二: 'd:\\xxx.log'
log_queries_not_using_indexes = OFF/ON
是否记录没有使用索引搜索数据的SQL语句
2.开启慢日志的方法一 -> 直接修改慢日志的配置项(常用)

  • set global 变量名 = 值;

  • 开启慢日志

set global slow_query_log = ON;


  • 设置时间的限制

set global long_query_time = 0.2;


  • 设置慢日志的路径

set global slow_query_log_file = 'D:/slow_log.log';


  • 开启记录没有使用索引搜索数据的SQL语句

set global log_queries_not_using_indexes = ON;


3.开启慢日志的方法二 -> 修改配置文件

  • 在启动mysql服务端的时候后面其实还可以跟上配置文件

  • 修改配置文件之后,需要重启MySQL服务

# mysqld --defaults-file='配置文件路径'

mysqld --defaults-file='D:\my-default.conf'

# 配置文件的内容

slow_query_log = ON
long_query_time = 0.2
slow_query_log_file = 'D:/slow_log.log'
log_queries_not_using_indexes = ON


4.在window环境下查看慢日志


  • windows环境下要执行mysqldumpslow需要安装ActivePerl,因为windows上mysqldumpslow是一个perl脚本,需要安装ActivePerl才能执行,然而linux环境下就可以直接执行mysqldumpslow了


  • 查看 ActivePerl 是否安装成功

C:\Users\KX201711>perl -v

This is perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread
(with 2 registered patches, see perl -V for more detail)
……

  • 在 mysql/bin 文件夹下运行 mysqldumpslow

  • 查看 mysqldumpslow 常用命令说明

D:\Program Files\mysql-8.0.15-winx64\bin>perl mysqldumpslow.pl -help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

  --verbose    verbose -- 版本
  --debug      debug -- 调试
  --help       write this text to standard output -- 帮助

  -v           verbose -- 版本
  -d           debug -- 调试模式
  -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default -- 排序方式
                al: average lock time -- 按照平均锁定排序
                ar: average rows sent -- 按照平均返回记录时间
                at: average query time -- 按照平均查询时间(默认)
                 c: count -- 计数
                 l: lock time -- 锁定时间
                 r: rows sent -- 返回记录
                 t: query time -- 查询时间
  -r           reverse the sort order (largest last instead of first) -- 反转排序顺序
  -t NUM       just show the top n queries -- 返回前面 NUM 条数据
  -a           don't abstract all numbers to N and strings to 'S'
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string -- -g 正则表达式,大小写不敏感
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME      name of server instance (if using mysql.server startup script)
  -l           don't subtract lock time from total time

  • 查看慢日志

D:\Program Files\mysql-8.0.15-winx64\bin>perl mysqldumpslow.pl -s c -a d:\slow_log.log

5.在linux环境下查看慢日志

  • 直接运行 mysqldumpslow 就可以了

mysqldumpslow -s c -a d:\slow_log.log