mysql profiles清空_MySQL性能优化之 SHOW PROFILES 学习笔记

使用以下命令查看当前 show profile 的状态SHOW VARIABLES LIKE 'profiling'

默认是开启状态,然后执行SHOW PROFILES

就可看到之前执行的 SQL 清单,包括标识ID , 执行耗时,具体 SQL 等。如下图:

32442688eb6d0394863bc37db670e750.png

上图就是我们所有执行的 SQL 清单,但是 Query 列出现了很多并不是我们显示执行的 SQL ,这个我也不太清楚,先不管它。默认的查询时当前最新的 15 条清单记录。如果想修改的话可以通过下面命令修改SET profiling_history_size = 100; #注意这个最大值只能到 100

从上图可以看到我们执行的 SQL 的标识 ID 和查询耗时。如果这里遇到耗时很长的一条。可以使用下面命令详细查询该条 SQL 对系统性能、资源的消耗。SHOW PROFILE cpu,block io,memory,swaps,context switches,source FOR QUERY 21;

如下图

1340fcefd8a6947fe50beb10d830b7d0.png

第一列 Status 表示这条 SQL 执行的一系列步骤,包括开始、检查权限、打开表等等。然后第二列的 Duration 就是详细记录,每一个步骤的耗时。像这张图中都很正常,一般来说遇到耗时严重的会有几种情况。

1. create tmp table   #创建临时表

2. Copying to tmp table on disk  #把内存中的临时表复制到磁盘

3. lock                      #上锁了

还有其他很多情况,我不太了解。总之遇到耗时长的,就可以通过它的状态来判定是什么原因导致的。从而确定病因,对症下药!

show profile 和 explain 有啥区别呢? explain 是预估这条 SQL ,包括可能用到的索引,预估查询的类型等等,而 show profile 却是实打实的反应出这条 SQL 执行过程中每一个细节步骤到底消耗了系统资源多少的指标。可以说,show profile 要比 explain 权威的多。

总结:又打开了新世界的大门……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值