开启MySQL慢查询以及慢查询日志使用

目录

要开启慢查询,需要关注这几个参数

打开慢查询日志

把日志文件存储在文件中

模拟慢查询

如何寻找并查看慢查询日志

 把日志文件存储在表中:

 其他关注参数

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%';

开启MySQL慢查询以及慢查询日志使用_第1张图片

 开启MySQL慢查询以及慢查询日志使用_第2张图片

 把结果拼接起来,就是完整的地址了:C:\ProgramData\MySQL\MySQL Server 8.0\Data\LAPTOP-RVFQOG0R-slow.log

打开日志文件,查看慢sql

开启MySQL慢查询以及慢查询日志使用_第3张图片

 把日志文件存储在表中:

set global log_output='TABLE';

查询结果:

开启MySQL慢查询以及慢查询日志使用_第4张图片

 其他关注参数

log_slow_admin_statements

是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志。

show variables like 'log_slow_admin_statements';

开启MySQL慢查询以及慢查询日志使用_第5张图片

 Slow_queries

查询有多少条慢记录

show global status like '%Slow_queries%';

 

开启MySQL慢查询以及慢查询日志使用_第6张图片

在生产环境中: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

你可能感兴趣的:(高性能MySQL,mysql,sql,数据库)