比explain更加详细的分析计划:Query Profiler

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LJFPHP/article/details/90061119

一、前言

      这篇博客是之前总结的一个知识点,也是偶然看别人博客的时候发现的这个东东,,也算是解析sql语句性能的利器吧,记录一哈。
      Query ProfilerMYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MYSQL 5.0.37以及以上版本中才有实现。

      这个工具比explain更加详细,侧重点也在语句的资源消耗上,还会给出一些异常参数。和mysql的查询优化器侧重的点不一样,但是如果把这三个工具结合起来分析sql,那可真是太赞了。(PS:一般是想不起来三个一起用的,哈哈)

explain: MySQL的性能分析关键字,explain,及其返回值代表的意思

查询优化器: mysql的优化器执行过程(附代码解析,手动注释等)

二、正文

1、开启

		show variables like '%profil%';   解释:这种方式是查看自己版本的是否开启了Profile, profiling=on是开启了这个profile功能,
			show profiles;     	解释:Empty set (0.00 sec)显示为空,说明profiles功能是关闭的。下面开启
			SET profiling = 1;	解释:打开profiles
			select xx; #查询语句	解释:执行sql
			show profiles;	解释:此时里面会有id,还有query,query是咱们刚才执行的sql
			show profile all for query 1; # 1为上一步得到的id,查看详细信息

2、查看

show profile all for query id;   

直接看的话,太杂乱了,可以考虑使用show profile all for query 1 \G; 这样看起来方便,可以参考:
https://blog.csdn.net/LJFPHP/article/details/87873280

3、主要参数解析

这个工具的异常参数很多,而且网上大佬总结的很到位,这边直接看大佬的博客吧,记录下。

参考:[MySQL FAQ]系列 — processlist中哪些状态要引起关注
http://imysql.com/2015/06/10/mysql-faq-processlist-thread-states.shtml

这篇博客顺便把各个参数异常的解决方案给出了,大家可以看一下

4、新的查看方式

      还有一种说法:在MySQL5.7中, show profile 命令已经开始不推荐使用,MySQL使用performance_schema 中系统表的信息来替代show profile命令。链接:https://www.cnblogs.com/wy123/p/6979499.html

      这里虽然过时了,但是博主测试下,mysql5.7还是支持show profiles这种用法。而且就算用新的系统表来查看,得出的参数也是差不多的,甚至没有show profiles全面。相同参数的含义相同。

end

猜你喜欢

转载自blog.csdn.net/LJFPHP/article/details/90061119