【MySQL】慢SQL语句

1. 查看慢SQL是否开启

查看慢SQL是否启用,查看命令:show variables like ‘slow_query_log’; 如果结果为ON则是开启了,如果为OFF则表示禁用了

show variables like 'slow_query_log'; 

在这里插入图片描述

2. 开启慢查询

开启慢查询命令:set global slow_query_log = 'ON'; 
退出重新登录查询,查看是否开启:show variables like 'slow_query_log';

查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令: show global variables like 'long_query_time';
在这里插入图片描述
mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。

这里设置时间为3秒,即超过3秒就会被认为慢查询。设置命令:set global long_query_time =3;用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。

查看慢查询存放日志,命令: show variables like 'slow_query_log_file';去相应目录下查看即可。
在这里插入图片描述

3. 《Mysql新能优化和高可用框架》关于慢SQL语句优化思路

3.1 前言

对于慢SQL语句优化一般可以按下面几步思路:
开启慢查询日志,
设置超过几秒为慢SQL语句,
抓取慢SQL语句,
通过explain查看执行计划,
对慢SQL语句分析;
创建索引并调整语句,
再查看执行计划,
对比调优结果。

3.2 抓取慢SQL语句

索引是提高Mysql查询性能的一个重要途径。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的SQL才能定位到问题所在,而且增加索引的时间肯定远大于初始增加索引所需要的时间。
某些SQL语句执行完毕所花费的时间特别长,我们将这种影响比较慢的语句记录在慢查询日志中。不要被“查询日志”的名字误导。错误地认为慢查询日志只会记录执行比较慢的select语句,其实不然,insert、delete、update、call等DML操作只要是超过了指定的时间,都可以称为“慢查询”,都会被记录在慢查询日志中,默认情况下慢查询日志是不被开启的,如果需要可以手动开启。开启慢查询日志之后,默认设置下执行超过10秒的语句才会被记录到慢查询日志中,当然这个时间可以自己设置。
慢查询日志相关的参数如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3利用explain分析查询语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 利用show profiles分析慢SQL语句

show profile 也是分析慢SQL语句的一种手段,通过它可以分析出一条SQL语句的性能瓶颈在什么地方,它可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,I/O等,以及该SQL执行所耗费的时间等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.索引使用原则

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值