MOT JIT诊断

mot_jit_detail

该内置函数用于查询JIT编译(代码生成)的详细信息。

使用示例

  1. select * from mot_jit_detail();
  2. 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();
  2. 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';