慢查询日志:就是sql执行时间超过long_query_time设置的时间阈值的sql语句日志。
默认情况下是关闭的,需要开启慢查询日志功能
慢查询相关的查询和设置
-- 查看是否已经开启慢查询以及log日志存储目录。
show global VARIABLES like '%slow_query_log%';
-- 查看log日志存储目录。
show global VARIABLES like '%slow_query_log_file%';
-- 查看慢查询阈值。
show global VARIABLES like '%long_query_time%';
-- 是否记录未使用索引的sql。
show global VARIABLES like '%log_queries_not_using_indexes%';
-- 查看日志存储方式,默认为FILE。
show global VARIABLES like 'log_output';
-- 开启慢查询日志功能。
set global slow_query_log = 1;
-- 设置慢查询阈值时间(单位:秒)(默认是10秒)
set global long_query_time=0;
-- 设置日志存储方式,默认为FILE。
-- FILE:默认存储路径:data/xxx-show.log(mysql data存储目录下的xxx-show.log)
set global log_output='FILE,TABLE';
-- 开启记录未使用索引的sql
set global log_queries_not_using_indexes=1;
慢查询记录解析
结果 | 含义 |
---|---|
User@Host: root[root] @ localhost [] Id: 1768 | 用户名,用户的ip信息,线程id |
Query_time: 0.032578 | 执行sql花费的时间(毫秒) |
Lock_time: 0.000108 | 执行获得锁的时间 |
Rows_sent: 14214 | 获取结果行数 |
Rows_examined: 14214 | 扫描数据行数 |
SET timestamp=1604814938; | sql执行的具体时间 |
Time: 2020-11-08T05:55:38.603328Z | sql执行的具体时间 |
select * from video; | 执行的sql语句 |
慢查询分析工具
mysqldumpslow
语法:mysqldumpslow -s r -t 10 xxx-show.log
参数 | 选项 | 解释 |
---|---|---|
-s | order(s),可选参数:c,t,l,r,at,al,ar | |
c | 总次数 | |
t | 总时间 | |
l | 锁的时间 | |
r | 总数据行 | |
at | 总时间的平均数 | |
al | 锁的时间的平均数 | |
ar | 总数据行的平均数 | |
-t | top,指定取前面几天作为结果输出 |