20.进阶-索引-性能分析-show profiles

20.进阶-索引-性能分析-show profiles

我们通过Mysql的慢查询日志就可以定位出哪些sql的执行耗时比较长,从而对这类sql进行优化。但是慢查询日志中他所记录的sql是执行耗时超过了我们预设指定时间之后才会记录。比如预设的指定时间是2s,超过2s他才会记录在慢查询日志中,假如说有一些sql语句他的执行耗时比如为1.8s,1.9s,1.95s等,这类sql是不会记录在慢查询日志中的。假如说我们业务系统中,有一些sql语句,它的业务很简单,但是他的执行达到了1.9几秒,这类的sql实际上相对来说性能也是比较低的,我们也需要对这类sql进行优化。怎么定位到这类sql呢?慢查询日志满足不了,可以借助另外一种手段叫做profiles详情。

(1)profiles详情

show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。通过have_profiling参数,能够看到当前MySQL是否支持profile操作:

SELECT @@have_profiling ;

image-20240702091135238

可以看到,当前MySQL是支持 profile操作的,但是开关默认是关闭的。可以通过set语句在session/global级别开启profiling:

select @@profiling; #查询是否开启了profiling开关
SET profiling = 1;	#开启profiling开关

开关已经打开了,接下来,我们所执行的SQL语句,都会被MySQL记录,并记录执行时间消耗到哪儿去 了。 我们直接执行如下的SQL语句:

select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';
select count(*) from tb_sku;

执行一系列的业务SQL的操作,然后通过如下指令查看指令的执行耗时:

-- 查看每一条SQL的耗时基本情况
show profiles;

-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;

-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id;

查看每一条SQL的耗时情况:

image-20240702091243633

查看指定SQL各个阶段的耗时情况 :

WzsJEg06-1720228386499)]

查看指定SQL各个阶段的耗时情况 :

image-20240702091300688

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值