mysql show profiles 看这篇就够了
定义:
显示sql执行过程中各个环节的消耗情况,例如cpu使用情况,打开表、检查权限、执行优化器、返回数据等分别用了多长时间,可以分析语句执行慢的瓶颈在哪。
如果要使用这个命令首先要设置profiling为on,mysql默认设置为off;
设置profiling,及查看当前profiling的值
查看当前profiling的值
select @@profiling
设置打开profiling
set profiling =1;
or
set profiling=on;
设置关闭profiling
set profiling=0;
or
set profiling=off;
show profiles 默认显示最近15条的sql执行情况,15这个数字由profiling_history_size常量决定,你可以配置为0到100的数字最大支持100,如果设置为0则类似于
关闭profiling选项。
除了show profile 和show profiles 两个命令不会被记录之外,其余的语句都会被记录,即使是语法错误的sql也会被记录。
show profile 命令默认获取最新一条执行的sql的消耗分析,如果想指定获取某一条sql的profile 用如下命令:
show profiles 先获取要分析的query_id,然后执行
show profile for query query_id;
show profiles以及show profile 命令同时也支持 limit语句。
show profile 命令 默认只显示Duration 列总消耗时间,如果要显示更多可以设置 all参数
show profile [type];
type 参数支持如下:
| ALL :表示所有的列
| BLOCK IO :数据块的输出出入操作次数
| CONTEXT SWITCHES : 上下文切换次数
| CPU:cpu使用时长 包括系统时长和用使用时长
| IPC :发送和接收数据的 次数
| PAGE FAULTS:重要的和次要的错误次数
| SOURCE:执行相应操作的mysql源文件,包括源文件方法名,地址、所在行;
| SWAPS:swap次数
提示:实际上这些数据全都存在mysql的表里,你可以执行如下查询一样可以获取相同的信息。
SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = query_id;
One thought on “mysql show profiles 看这篇就够了”
支持一下博主!