show profile是MySQL提供的可以用来分析当前会话中SQL都做了什么、执行的资源消耗情况的工具,可用于SQL调优的测量。默认情况下处于关闭状态,并保存最近15次的运行结果。
在会话级别开启这个功能:
show variables like 'profiling';
通过设置 profiling='on’ 来开启 show profile:
set profiling='on';
先执行2次查询语句:
select * from student where name='RMkRAc';
select * from student where stuno=3455655;
接着看下当前会话都有哪些 profiles,使用下面这条命令:
show profiles;
可以看到当前会话一共有2个查询。
如果我们想要查看最近一次查询的开销,即Query ID=2这条查询语句的开销,可以使用:
如果我们想查看指定的Query ID的开销, 可以使用:
// 查询show profiles;中第一行查询语句的开销
show profile cpu,block io for query 1;
通过结果可以看出,SQL查询是在执行的过程中比较慢,因此需要通过explain分析原因。
show profile的常用查询参数:
①ALL:显示所有的开销信息。
②BLOCK IO:显示块IO开销。
③CONTEXT SWITCHES:上下文切换开 销。
④CPU:显示CPU开销信息。
⑤IPC:显示发送和接收开销信息。
⑥MEMORY:显示内存开销信 息。
⑦PAGE FAULTS:显示页面错误开销信息。
⑧SOURCE:显示和Source_function,Source_file, Source_line相关的开销信息。
⑨SWAPS:显示交换次数开销信息。
注意:show profile命令将被弃用,我们可以从information_schema
中的profiling数据表进行查看。