openGauss MOT JIT Diagnostics
Tags: opengauss
Published: 2023-04-19 02:27:10

mot_jit_detail
This built-in function is used to query the details about JIT compilation (code generation).

Usage Examples
""
select * from mot_jit_detail();

select proc_oid, substr(query, 0, 50), namespace, jittable_status, valid_status, last_updated, plan_type, codegen_time from mot_jit_detail();
Output Description
Field

Description

proc_oid

Procedure OID (Real Object ID of the procedure in the database). 0 for queries.

query

Query string or stored procedure name.

namespace

Namespace to which the query or procedure belongs to. For procedures and top level queries, the value will be GLOBAL. For all the invoke queries, sub-queries, this field will show the parent information.

jittable_status

Whether the query or procedure is jittable:
jittable – Query or procedure is jittable
unjittable - Query or procedure is not jittable
invalid - Invalid state (temporary state after invalidation due to DDL or when JIT compilation is in progress)
valid_status

Whether the query or procedure is valid or not:

valid – Query or procedure is valid
unavailable – JIT compilation is in progress
error – Error state
dropped – Procedure is dropped
replaced – Procedure is replaced
last_updated

Timestamp when the status was updated last time.

plan_type

Whether this is a stored procedure (SP) or query type.

codegen_time

Total time taken for code generation (JIT compilation), in micro seconds.

verify_time

LLVM Verification time (internal), in micro seconds.

finalize_time

LLVM Finalize time (internal), in micro seconds.

compile_time

LLVM Compile time (internal), in micro seconds.

mot_jit_profile
This built-in function is used to query the profiling data (performance data) of the query or stored procedure execution.

Usage Examples
""
select * from mot_jit_profile();

select proc_oid, id, parent_id, substr(query, 0, 50), namespace, weight, total, self, child_gross, child_net from mot_jit_profile();
Output Description
Field

Description

proc_oid

Procedure OID (Real Object ID of the procedure in the database). 0 for queries.

id

Internal ID to manipulate the output.

parent_id

Parent ID (Internal ID of the parent). Applicable only for sub-queries and sub-procedures. -1 for top-level queries and procedures.

query

Query string or stored procedure name.

namespace

Namespace to which the query or procedure belongs to. For procedures and top level queries, the value will be GLOBAL. For all the invoke queries, sub-queries, this field will show the parent information.

weight

The average number of times the sub-query or sub-procedure was executed (per one parent SP execution), in micro seconds.

total

Total time taken to execute the query or procedure, in micro seconds.

self

Time taken by the query or procedure excluding the time taken by the sub-queries & sub-procedures, in micro seconds.

child_gross

Total time spent in execution of all the sub-queries & sub-procedures (child_net + time spent to prepare for execution of all the sub-queries & sub-procedures), in micro seconds.

child_net

Total time taken by all the sub-queries & sub-procedures i.e., ∑ (total of child * weight), in micro seconds.

def_vars

Time taken to define variables (internal), in micro seconds.

init_vars

Time taken to initialize variables (internal), in micro seconds.

Miscellaneous
Another useful system table to get information about stored procedures and functions is pg_proc.

For example, body of a stored procedure can be queried using the following query:

""
select proname,prosrc from pg_proc where proname='sp_call_filter_rules_100_1';