mysql show profiles 看这篇就够了

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 看这篇就够了

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据