目录
要开启慢查询,需要关注这几个参数
打开慢查询日志
把日志文件存储在文件中
模拟慢查询
如何寻找并查看慢查询日志
把日志文件存储在表中:
其他关注参数
log_slow_admin_statements
Slow_queries
在生产环境中:mysqldumpslow工具分析慢查询
得到返回记录集最多的10个SQL。
得到访问次数最多的10个SQL
得到按照时间排序的前10条里面含有左连接的查询语句。
建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
要开启慢查询,需要关注这几个参数
# 开启慢查询关注这几个参数
# 是否开启慢查询:0关1开
show VARIABLES LIKE '%slow_query_log%';
# 慢查询日志存储路径
show VARIABLES LIKE '%slow_query_log_file%';
# 慢查询阈值,超过多长时间记录
show VARIABLES LIKE '%long_query_time%';
# 未使用到索引的sql也记录
show VARIABLES LIKE '%log_queries_not_using_indexes%';
# 日志存储方式:FILE:日志存储文件、TABLE:日志存入数据库
show VARIABLES LIKE '%log_output%';
查询结果
slow_query_log ON
slow_query_log_file LAPTOP-RVFQOG0R-slow.log
long_query_time 10.000000
log_queries_not_using_indexes OFF
log_output FILE
打开慢查询日志
把日志文件存储在文件中
注意:修改long_query_time之后,要重新打开一个查询才能看到修改之后的值
# 开启慢查询日志\mysql重启后会失效
set global slow_query_log=1
# 时间单位是秒,修改之后,要重新连接mysql才能看到修改值
set global long_query_time=3
# 记录未使用索引的sql,根据需要开启
set global log_queries_not_using_indexes=1
# 把日志记录到文件,和下面设置二选一
set global log_output='FILE'
# 把日志记录到表
set global log_output='TABLE'
模拟慢查询
SELECT SLEEP(5);
如何寻找并查看慢查询日志
由于 show VARIABLES LIKE '%slow_query_log_file%'; 查询到的结果只有个文件名,并没有完整路径,所以使用下面的查询获取完整路径
show VARIABLES like 'datadir';
# 慢查询日志存储路径
show VARIABLES LIKE '%slow_query_log_file%';
把结果拼接起来,就是完整的地址了:C:\ProgramData\MySQL\MySQL Server 8.0\Data\LAPTOP-RVFQOG0R-slow.log
打开日志文件,查看慢sql
把日志文件存储在表中:
set global log_output='TABLE';
查询结果:
其他关注参数
log_slow_admin_statements
是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志。
show variables like 'log_slow_admin_statements';
Slow_queries
查询有多少条慢记录
show global status like '%Slow_queries%';
在生产环境中: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