文章目录

  • 1、SQL分析、调优和排查的大体流程
  • 2、show profile是什么
  • 3、show profile分析步骤
    • (1)是否支持,看看当前的MySQL版本是否支持
    • (2)开启功能,默认是关闭,使用前需要开启
    • (3)运行SQL
    • (4)查看结果,show profiles
    • (5)诊断SQL,show profile cpu, block io for query 上一步前面的问题SQL数字号码
    • (6)日常开发需要注意的结论(以下情况必优化)

1、SQL分析、调优和排查的大体流程

  1. DBA或者运维人员通过监控系统监测到运行缓慢的SQL
  2. 在测试环境中,运行待优化的SQL语句,并开启慢查询日志,抓取运行缓慢的SQL语句
  3. 通过explain分析SQL的执行计划,通过explain的结果再结合相应的业务基本上可以定位并解决运行缓慢的问题
  4. 假如通过explain还是无法定位sql运行慢的问题,则需要分析sql在数据传输、网络、连接是否是死锁等需要使用比explain更加细粒度的查询和排查show profile;
  5. 假如通过explain和show profile还是无法解决的话,则需要配合DBA对服务器上的各种参数进行调优

2、show profile是什么

是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量。

利用show profile可以查看SQL的执行周期

该SHOW PROFILE和SHOW PROFILES语句被取消,并将在未来的MySQL版本中删除

默认情况下,参数处于关闭状态,并保存最近15次的运行结果

3、show profile分析步骤

(1)是否支持,看看当前的MySQL版本是否支持

(2)开启功能,默认是关闭,使用前需要开启

(3)运行SQL

select * from emp inner join dept on emp.deptid=dept.id;
select * from dept where id=9999;
select * from dept;
select * from emp group by id%10 limit 150000;

(4)查看结果,show profiles

(5)诊断SQL,show profile cpu, block io for query 上一步前面的问题SQL数字号码

show profile参数说明

主要的参数类型是CPU和 BLOCK IO.

参数类型 参数说明
ALL 显示所有的开销信息
BLOCK IO 显示块IO相关开销
CONTEXT SWITCHES 上下文切换相关开销
CPU 显示CPU相关开销信息
IPC 显示发送和接收相关开销信息
MEMORY 显示内存相关开销信息
PAGE FAULTS 显示页面错误相关开销信息
SOURCE 显示和Source_function,Source_file,Source_line相关的开销信息
SWAPS 显示交换次数相关开销信息

由上图可知,SQL的生命周期中有如此多的过程,不可能全部记住,那么当出现哪几种情况,说明该SQL语句一定存在性能问题呢?

我们分析一下运行时间6.98s的SQL语句的声明周期跟上面的SQL语句有什么不同之处,如下图所示:

(6)日常开发需要注意的结论(以下情况必优化)

在日常开发中通过show profile出现以下4种情况之一,就说明该SQL存在严重的问题,必须进行SQL优化操作。

类型 说明
converting HEAP to MyISAM 查询结果太大,内存都不够用了,往磁盘上搬了
Creating tmp table 创建临时表
    1. 拷贝数据到临时表
    2. 用完再删除
Copying to tmp table on disk 把内存中临时表复制到磁盘,危险操作
locked 加锁

MySQL优化篇:show profile进行SQL分析相关推荐

  1. 深入浅出Mysql - 优化篇(锁)

    深入浅出Mysql - 优化篇(锁) 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保 ...

  2. MySQL优化篇:SQL优化流程

    MySQL中SQL优化流程 SQL优化流程如下: 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在MySQL服务器里面的执行细节和生命周期情况 SQL数据库服务器 ...

  3. 秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)...

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

  4. MySQL优化系列_常见的sql使用-Mysql中的实践(Mysql优化系列8)

    看完了工具,死磕算法,那么怎么从算法和工具去解决我们忽略的用法呢,下面我们来个小试牛刀. 表table employees (id,name,age,position )几个字段 name, age, ...

  5. MySQL使用SHOW PROFILE进行SQL分析

    SHOW PROFILE 是MySQL提供可以用来分析当前会话语句执行的资源消耗情况,可以用于SQL 的调优测评依据.在默认的情况下,参数处于关闭状态,并保存着最近15 次的运行结果. 我们可以通过 ...

  6. MySQL优化篇:explain性能分析

    文章目录 1.概念 2.explain能干什么 3.使用方式 4.准备工作 5.各字段解释 5.1.id 5.2.select_type 5.3.table 5.4.type 5.5.possible ...

  7. MySQL优化篇:锁机制

    文章目录 1.概述 1.1 定义 1.2 分类 2.表锁(偏向于读操作) 2.1 特点 2.2 案例分析 2.3 案例结论 2.4 表锁分析 3.行锁(偏向于写操作) 3.1 特点 3.2 案例分析 ...

  8. MySQL优化篇:慢查询日志

    1.概念 MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中. ...

  9. 深入浅出Mysql - 优化篇(索引)

    SQL优化 通过show status了解各种sql执行的频率 mysql> show status like 'Innodb_rows_%';+----------------------+- ...

最新文章

  1. PyTorch Cookbook(常用代码段集锦)
  2. Buffer和Cache的区别
  3. 网络运维基础之IP地址学习
  4. Android旋转切换条目,Android:当我添加动态新的ListView条目时,ListView中的旋转器会丢失它们的值...
  5. 部署SAP HANA之前你需要知道的那些事
  6. 第四范式入围Gartner新兴技术与趋势影响力雷达全球代表厂商
  7. P2085 最小函数值 堆
  8. oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle
  9. 揭秘!一个高准确率的Flutter埋点框架如何设计
  10. topcoder srm 625 div1
  11. 深度学习(2)--深度学习中的这25个概念
  12. HTML中input是啥意思,HTML中input是什么意思
  13. 扫雷游戏详解——附源码
  14. %3cul%3e标签 php_php中lt
  15. Redis文档--详解redis
  16. Web服务器常用分类
  17. searchview怎么改hint大小_老司机偷偷告诉你:改水电一般多少钱?水电改造价格怎么算?...
  18. 如何自定义快捷方式图标为自己的图片(保姆级教程)
  19. 网页压缩算法deflate揭秘
  20. openwrt-17.01.6 LEDE下载

热门文章

  1. 华为南太无线解决方案部梁旭阳_工业互联网产业联盟网络组走进华为南京研究所技术研讨会顺利召开...
  2. ipa在线安装搭建_前端技术不懂打包IPA?打包 iOS 的 IPA 文件教程奉上
  3. c语言编写木马软件,【C语言】后台木马程序
  4. linux 支持7代cpu型号,win7最高支持几代cpu
  5. 07-图6 旅游规划 (25分)(以此感谢zyx佬)
  6. 2个422 并联一个总线_株洲新添2个全国“一村一品”示范村,一个在炎陵
  7. 封装成vla函数_不知道怎么封装代码?看看这几种设计模式吧!
  8. UVA1660 电视网络 Cable TV Network(网络流,最小割)
  9. 关于reference to ‘XXXX’ is ambiguous的解决办法
  10. 图片右击打印不弹出打印首选项