一 简介:利用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层的交互