MySQL-Show Profile
简介: Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量。默认情况下处于关闭状态,并保存最近15次的运行结果。
1、开启show profile功能,默认该功能是关闭的,使用前需开启
mysql> show variables like 'profiling';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| profiling | OFF |
+---------------+-------+
1 row in set (0.00 sec)
mysql> set profiling=ON;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>
mysql> show variables like 'profiling';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| profiling | ON |
+---------------+-------+
1 row in set (0.01 sec)
2、随意对某张表进行查询
3、使用show profiles查询结果
![](http://media.teamshub.com/10000/tm/2021/02/22/c7d47d33-7185-4f1d-a069-062e85f2b6f7/2ba59b4f-7550-40be-a78b-599783b9bd29.png)
4、使用show profile对sql语句进行诊断
show profile cpu, block io for query Query_ID; #Query_ID就是步骤三种show profiles列表中的Query_ID
![](http://media.teamshub.com/10000/tm/2021/02/22/c7d47d33-7185-4f1d-a069-062e85f2b6f7/e44cdda4-dbe1-401a-8f4a-8ca9b84d52a7.png)
5、show profile的常用查询参数
①ALL:显示所有的开销信息;
②BLOCK IO:显示块IO开销;
③CONTEXT SWITCHES:上下文切换开销;
④CPU:显示CPU开销信息;
⑤IPC:显示发送和接收开销信息;
⑥MEMORY:显示内存开销信息;
⑦PAGE FAULTS:显示页面错误开销信息;
⑧SOURCE:显示和Source_function,Source_file,Source_line相关的开销信息;
⑨SWAPS:显示交换次数开销信息;
6、通过show profile诊断,如果status中出现如下几种 值,则表明该sql需要优化
①converting HEAP to MyISAM:查询结果太大,内存不够,数据往磁盘上搬了。
②Creating tmp table:创建临时表。先拷贝数据到临时表,用完后再删除临时表。
③Copying to tmp table on disk:把内存中临时表复制到磁盘上,危险!!!
④locked