用于记录执行速度较慢的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环境下查看慢日志
- 在window环境下查看慢日志的教程: https://blog.csdn.net/johnstrive/article/details/46437547
- windows环境下要执行mysqldumpslow需要安装ActivePerl,因为windows上mysqldumpslow是一个perl脚本,需要安装ActivePerl才能执行,然而linux环境下就可以直接执行mysqldumpslow了
- ActivePerl官网: https://www.activestate.com/products/activeperl/
- 查看 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
← 导出导入现有数据库数据 执行计划 →