MySQL Show Profile

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语句。

你可能感兴趣的:(MySQL Show Profile)