1、show profile 是什么?
Show profile 是mysql 提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于sql 调优的测量。
-- 默认情况下,参数处于关闭状态,并保存最近15次的运行结果。
show variables like 'profiling%';
-- 开启profile
set profiling=on;
set profiling_history_size=50;
2、诊断sql
show profiles;
show profile cpu, block io for query 问题sql数字号码;
show profile all for query 144;
-- 日常开发需要注意的结论:
converting HEAP to MyISAM : 查询结果太大,内存都不够用了,往磁盘上搬了;
creating tmp table :创建临时表,拷贝数据到临时表,然后再删除;
copying to tmp table on disk :把内存中临时表复制到磁盘,危险!!!
locked
注:以下四个中若出现一个或多个,表示sql 语句 必须优化。
type:
ALL --显示所有的开销信息
BLOCK IO --显示块IO相关开销
CONTEXT SWITCHES --上下文切换相关开销
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 输出
总结:
show profile默认是关闭的,并且开启后只存活于当前会话,也就说每次使用前都需要开启。
通过show profiles查看sql语句的耗时时间,然后通过show profile命令对耗时时间长的sql语句进行诊断。
注意show profile诊断结果中出现相关字段的含义,判断是否需要优化sql语句。














网友评论