mysql 性能优化 - 慢sql查询分析

最近公司内测网服务器非常卡,经过查看进程任务 发现是Mysql CPU 占用过高,试过重启Mysql 过一会CPU又上来,机器依旧是卡,心想肯定是有很多慢sql ,之前一直用的是大厂云数据库RDS 上面有sql 审计,觉得很有用,自己安装的mysql 有没有这种功能呢,经过一番查找,发现有一个参数需要打开后就会自动记录,记录执行sql ,执行时常,而且可以设置sql 执行时常超过一定阈值才记录 。

1、查询 数据库是否开启了 慢sql 记录

show variables like ‘%slow_query_log%’;
可以看到 慢日志文件保存在
E:\MySQL\mysql-5.7.25-winx64\data\LAPTOP-OERQEEH9-slow.log
文件中
在这里插入图片描述
2、如果跟上图一样
slow_query_log = OFF
使用
SET GLOBAL slow_query_log=‘ON’;
可以把慢查询日志打开,注意设置变量值的时候需要使用global,否则会报错
在这里插入图片描述

3、修改 long_query_time阈值
查看 long_query_time 阈值

show variables like ‘%long_query_time%’;
在这里插入图片描述
这里可以看到显示 阈值是10 单位是 秒s 表示sql 执行超过10s 会记录下来 这里可以根据自己的要求设置 。
4、设置阈值

# 测试发现:设置global的方式对当前session的long_query_time失效,对新连接的客户端有效。所以可以一并执行下述语句  更改global 也更改了session变量。
# set global long_query_time = 1 ;  这里设置阈值为1s
更改新连接session 变量
mysql> set global long_query_time = 1 ;
mysql> show global variables like ' %long-query_time% ';
更改当前session 变量
mysql> set long_query_time=1;
mysql> show variables like '%long_query_time%';  

5、永久配置 慢sql 记录
上面的这种方式只适合短时间临时的记录,这种设置只记录在内存中,当mysql 重启后,所有设置即失效,如果长期使用,建议将配置设置在配置文件中 my.ini

# 慢日志参数配置
slow_query_log=ON #开启慢查询日志的开关
slow_query_log_file=E:\MySQL\mysql-5.7.25-winx64\data\LAPTOP-OERQEEH9-slow.log #慢查询日志的目录和文件名信息
long_query_time=1 #设置慢查询的阈值为1秒,超出此设定值的SQL即被记录到慢查询日志
log_output=FILE

在这里插入图片描述

6、测试几条sql ,让执行时间大于1s
打开路径 E:\MySQL\mysql-5.7.25-winx64\data\LAPTOP-OERQEEH9-slow.log 文件,如下:
在这里插入图片描述
这里可以看到执行的慢 sql 语句 执行时长 等关键信息 。

7、关闭 慢日志记录

关闭临时 记录
SET GLOBAL slow_query_log=‘OFF’;
SET slow_query_log=‘OFF’;
永久关闭
将my.ini 文件中的配置删除,重启服务即可。

到此,慢sql 排查过程讲述完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值