mysql 查询优化 ~ 善用profie利器

一 简介:利用profile分析慢语句的过程有助于我们进行语句的优化

二 执行过程
   set profiling=1;
   set profiling=0;
  2 执行sql
  3 查看过程消耗

三 结果

  1 查看执行过程耗时
  SHOW profile FOR query 1
  checking permissions:检查权限
  Opening tables:打开表
  init : 初始化
  System lock :系统锁
  optimizing : 优化
  statistics : 统计
  preparing :准备
  executing :执行
  Sending data :发送数据
  Sorting result :排序
  end :结束
  query end :查询 结束
  closing tables : 关闭表 /去除TMP 表
  freeing items : 释放物品
  cleaning up :清理
  值得关注的值 1 sending data 2 Sorting result 3 Opening tables 以上所有的值并不是都会出现,这点要注意
  2 查看资源消耗
 SHOW profile all FOR query 2
 "Duration": 持续时间
 "CPU_user": cpu用户
 "CPU_system": cpu系统
 "Context_voluntary":上下文主动切换
 "Context_involuntary": 上下文被动切换
 "Block_ops_in": 输入块的个数
 "Block_ops_out": 输出块的个数
 "Page_faults_major": 主分页错误
 "Page_faults_minor": 次分页错误
 值得关注的值 1 CPU相关值 2 Context 相关值 3 Block相关值
5 表查询
 SELECT STATE, FORMAT(DURATION, 6) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 1 ORDER BY SEQ;

6 主要问题

 简介: 本人对于大量的sql进行跟踪分析,遇到最多的就是sending data的耗时过多情况

 分析:Sending data 1读取数据 2 处理(过滤,排序等。。) 3发送数据,是主要的进行数据处理的过程,包含了所有server层和innodb层的交互

 

posted @ 2018-10-30 14:48  开心的蛋黄派  阅读(776)  评论(0编辑  收藏  举报