MOT JIT诊断
mot_jit_detail
该内置函数用于查询JIT编译(代码生成)的详细信息。
使用示例
1. select * from mot_jit_detail();
3. select proc_oid, substr(query, 0, 50), namespace, jittable_status, valid_status, last_updated, plan_type, codegen_time from mot_jit_detail();
输出说明
| 字段 | 说明 |
|---|---|
| proc_oid | 过程OID(数据库中过程的真实对象ID)。0表示查询。 |
| query | 查询字符串或存储过程名称。 |
| namespace | 查询或过程所属的命名空间。对于过程和顶级查询,值为GLOBAL。对于所有调用查询、子查询,此字段将显示父信息。 |
| jittable_status | 是否为JIT查询或过程:- jittable:JIT查询或过程 - unjittable:不是JIT查询或过程 - invalid:无效状态(DDL或JIT编译进行中导致失效后的临时状态) |
| valid_status | 查询或过程是否有效: - valid:查询或过程有效 - unavailable:JIT编译进行中 - error:错误状态 - dropped:过程已删除 - replaced:过程已替换 |
| last_updated | 上次更新状态时的时间戳。 |
| plan_type | 表示存储过程或查询类型。 |
| codegen_time | 代码生成(JIT编译)所需的总时间,单位为微秒。 |
| verify_time | LLVM验证时间(内部),单位为微秒。 |
| finalize_time | LLVM完成时间(内部),单位为微秒。 |
| compile_time | LLVM编译时间(内部),单位为微秒。 |
mot_jit_profile
此内置函数用于查找查询或存储过程执行的分析数据(性能数据)。
使用示例
1. select * from mot_jit_profile();
3. select proc_oid, id, parent_id, substr(query, 0, 50), namespace, weight, total, self, child_gross, child_net from mot_jit_profile();
输出说明
| 字段 | 说明 |
|---|---|
| proc_oid | 过程OID(数据库中过程的真实对象ID)。0表示查询。 |
| id | 用于操控输出的内部ID。 |
| parent_id | 父ID(内部ID)。仅适用于子查询和子过程。-1用于顶级查询和过程。 |
| query | 查询字符串或存储过程名称。 |
| namespace | 查询或过程所属的命名空间。对于过程和顶级查询,值为GLOBAL。对于所有调用查询、子查询,此字段将显示父信息。 |
| weight | 执行子查询或子过程的平均次数(每执行一次父存储过程),单位为微秒。 |
| total | 执行查询或过程所需的总时间,单位为微秒。 |
| self | 查询或过程所花费的时间,不包括子查询和子过程所花费的时间,单位为微秒。 |
| child_gross | 执行所有子查询和子过程所花费的总时间(child_net+准备执行所有子查询和子过程所花费的时间),单位为微秒。 |
| child_net | 所有子查询和子过程所花费的总时间,即,∑(child总数*weight),单位为微秒。 |
| def_vars | 定义变量(内部)所需的时间,单位为微秒。 |
| init_vars | 初始化变量(内部)所需的时间,单位为微秒。 |
其他
另外,PG_PROC系统表也可用于获取存储过程和函数的有关信息。
例如,存储过程内容的查询如下:
1. select proname,prosrc from pg_proc where proname='sp_call_filter_rules_100_1';
