MySQL优化之开启慢日志检查/如何通过慢日志分析有问题的SQL

目录

什么是慢日志检查开关

查看慢日志开关是否启动

查看慢日志变量信息

开启慢日志变量开关

自定义慢日志存放时间

开启慢日志开关

再次查看慢日志变量信息

测试

如何通过慢日志分析有问题的SQL


什么是慢日志检查开关

慢日志检查会根据用户自定义的时间,把自定义时间外执行成功的SQL语句性能信息存入到慢日志中,方便用户管理员对慢日志进行优化 

查看慢日志开关是否启动

show variables like 'slow_query_log';

可以看到它默认处于OFF状态 


 

查看慢日志变量信息

show variables like '%log%';

 记住这个开关默认是关闭状态的

这是慢日志文件默认存储的路径

开启慢日志变量开关

set global log_queries_not_using_indexes=on;

自定义慢日志存放时间

set global long_query_time=1;

开启慢日志开关

set global slow_query_log=on;

再次查看慢日志变量信息

show variables like '%log%'

可以看到慢日志变量和慢日志都已开启

测试

在mysql中执行一则查询语句

然后复制一个会话,在另一个会话中,不进入mysql,输入命令,查询慢日志文件

more /var/lib/mysql/master-slow.log

可以看到,这里面会详尽记录你执行的SQL的性能参数 

这时候你会奇怪,为什么我设置了只有超过1S的SQL语句才能存到日志中,而现在日志中存的是所有执行的SQL语句呢?

注意:慢日志默认会记录所有SQL语句,当你设置了自动存入的时间必须要重启mysql服务,否则不会生效!!!

systemctl restart mysqld.service

重启服务之后再次测试,执行一条SQL,另一个端口查询日志,你会发现如果用时在1S以内,无法被记录到慢加载日志中。

如何通过慢日志分析有问题的SQL

1.看查询次数多并且每次查询占用时间长的SQL

2.看IO大的SQL,看Rows examine项,扫描行数越多,IO越大

3. 看未命中索引的SQL,通过分析Rows examine和Rows Send,看索引的命中率

发布了568 篇原创文章 · 获赞 180 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/105585701
今日推荐