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

目录

什么是慢日志检查开关

查看慢日志开关是否启动

查看慢日志变量信息

开启慢日志变量开关

自定义慢日志存放时间

开启慢日志开关

再次查看慢日志变量信息

测试

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


 

什么是慢日志检查开关

 

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

 

查看慢日志开关是否启动

 

以下命令均在MySQL客户端下输入!

另外需要注意,我们手动开启慢查询的命令,在mysql服务重启后就会失效,作为开发人员,我们需要时手动开启开关即可,如果你非要让mysql开机自启动慢查询,请在配置文件中修改参数,本篇不做介绍。

先看看慢查询是否开启

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或者新开一个会话,否则不会生效!!!

 

再次测试,执行一条SQL,

select sleep(4);

另一个端口查询日志, 

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

你会发现如果用时在3S以上会存入慢查询日志中,同理,如果SQL执行<3秒不会存入慢查询日志

 

 

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

 

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

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

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值