1、show profile 是什么?
Show profile 是mysql 提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于sql 调优的测量。
默认情况下,参数处于关闭状态,并保存最近15次的运行结果。
2、分析步骤:
2.1 是否支持:查看当前的mysql版本是否支持;
命令:show variables like ‘profiling%’;
默认关闭,使用前需要开启;
2.2 默认关闭,使用前需要开启:
命令:set profiling=on;
2.3 运行sql;
2.4 查看结果:
Show profiles;
2.5 诊断sql ,show profile cpu, block io for query 问题sql数字号码;
语法:Show profile type , block type for query 问题sql数字号码
其中type:
ALL: 显示所有的开销信息
BLOCK IO : 显示块IO相关开销
CONTEXT SWITCHS: 上下文切换相关开销
CPU : 显示cpu 相关开销
IPC: 显示发送和接收相关开销
MEMORY: 显示内存相关开销
PAGE FAULTS:显示页面错误相关开销信息
SOURCE : 显示和Source_function ,Source_file,Source_line 相关的开销信息
SWAPS:显示交换次数相关的开销信息
Status : sql 语句执行的状态
Duration: sql 执行过程中每一个步骤的耗时
CPU_user: 当前用户占有的cpu
CPU_system: 系统占有的cpu
Block_ops_in : I/O 输入
Block_ops_out : I/O 输出
3、日常开发需要注意的结论:
3.1 converting HEAP to MyISAM : 查询结果太大,内存都不够用了,往磁盘上搬了;
3.2 creating tmp table :创建临时表,拷贝数据到临时表,然后再删除;
3.3 copying to tmp table on disk :把内存中临时表复制到磁盘,危险!!!
3.5 locked
注:以上四个中若出现一个或多个,表示sql 语句 必须优化。