当前位置: 首页 > news >正文

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

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

2019-05-10 14:47:45  阅读:78  来源: 互联网

标签:profile show explain sql profiles Profiler query Query

一、前言

      这篇博客是之前总结的一个知识点,也是偶然看别人博客的时候发现的这个东东,,也算是解析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

标签:profile,show,explain,sql,profiles,Profiler,query,Query

相关文章:

  • 【mySQL】mysql是行级锁还是表级锁
  • 【mySQL】提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
  • 【mySQL】数据库优化 方案
  • 【interview】遇到的困难
  • 【排序】常见排序算法及其时间复杂度
  • 【mySQL】数据库[配置]优化 方案(MySQL并行写入、查询性能调优(多核CPU))
  • 【C++11】C++ 中using 的使用
  • 【linux】进程间通信-消息队列
  • 【C++】C++ STL stack 用法
  • 【C++】什么是函数对象和函数对象的用处
  • 【C++】STL标准容器的排序操作和选择合适的排序算法
  • 【C++】程序猿c++(11) 字符串比较误区总结
  • 【C++】C++ STL中 next_permutation,prev_permutation函数的用法
  • 【C++】search、search_n和find、find_if
  • 【C++】迭代器iterator研究(input iterator、output iterator等)----编辑中
  • 《Java编程思想》读书笔记-对象导论
  • 03Go 类型总结
  • 0基础学习移动端适配
  • 10个确保微服务与容器安全的最佳实践
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • httpie使用详解
  • laravel with 查询列表限制条数
  • maven工程打包jar以及java jar命令的classpath使用
  • oschina
  • PhantomJS 安装
  • php ci框架整合银盛支付
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SQL 难点解决:记录的引用
  • web标准化(下)
  • XML已死 ?
  • ------- 计算机网络基础
  • 那些被忽略的 JavaScript 数组方法细节
  • 批量截取pdf文件
  • 前端相关框架总和
  • 区块链分支循环
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法系列——算法入门之递归分而治之思想的实现
  • 项目实战-Api的解决方案
  • 一些css基础学习笔记
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​ArcGIS Pro 如何批量删除字段
  • ​什么是bug?bug的源头在哪里?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 计算机视觉入门
  • #includecmath
  • (12)Linux 常见的三种进程状态
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4.10~4.16)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (编译到47%失败)to be deleted
  • (待修改)PyG安装步骤
  • (二)Linux——Linux常用指令
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)