STATEMENT
获得当前节点的执行语句(归一化SQL)的信息。查询视图必须具有sysadmin权限或者monitor admin权限。数据库主节点上可以看到此数据库主节点接收到的归一化的SQL的全量统计信息(包含数据库节点);数据库节点上仅可看到归一化的SQL的此节点执行的统计信息。
表 1 STATEMENT字段
名称
|
类型
|
描述
|
node_name
|
name
|
数据库进程名称。
|
node_id
|
integer
|
节点的ID。
|
user_name
|
name
|
用户名称。
|
user_id
|
oid
|
用户OID。
|
unique_sql_id
|
bigint
|
归一化的SQL ID。
|
query
|
text
|
归一化的SQL。
备注:长度受track_activity_query_size控制。
|
n_calls
|
bigint
|
调用次数。
|
min_elapse_time
|
bigint
|
SQL在内核内的最小运行时间(单位:微秒)。
|
max_elapse_time
|
bigint
|
SQL在内核内的最大运行时间(单位:微秒)。
|
total_elapse_time
|
bigint
|
SQL在内核内的总运行时间(单位:微秒)。
|
n_returned_rows
|
bigint
|
SELECT返回的结果集行数。
|
n_tuples_fetched
|
bigint
|
随机扫描行。
|
n_tuples_returned
|
bigint
|
顺序扫描行。
|
n_tuples_inserted
|
bigint
|
插入行。
|
n_tuples_updated
|
bigint
|
更新行。
|
n_tuples_deleted
|
bigint
|
删除行。
|
n_blocks_fetched
|
bigint
|
buffer的块访问次数。
|
n_blocks_hit
|
bigint
|
buffer的块命中次数。
|
n_soft_parse
|
bigint
|
软解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。
|
n_hard_parse
|
bigint
|
硬解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。
|
db_time
|
bigint
|
有效的DB时间花费,多线程将累加(单位:微秒)。
|
cpu_time
|
bigint
|
CPU时间(单位:微秒)。
|
execution_time
|
bigint
|
执行器内执行时间(单位:微秒)。
|
parse_time
|
bigint
|
SQL解析时间(单位:微秒)。
|
plan_time
|
bigint
|
SQL生成计划时间(单位:微秒)。
|
rewrite_time
|
bigint
|
SQL重写时间(单位:微秒)。
|
pl_execution_time
|
bigint
|
plpgsql上的执行时间(单位:微秒)。
|
pl_compilation_time
|
bigint
|
plpgsql上的编译时间(单位:微秒)。
|
data_io_time
|
bigint
|
IO上的时间花费(单位:微秒)。
|
net_send_info
|
text
|
通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
|
net_recv_info
|
text
|
通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
|
net_stream_send_info
|
text
|
通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
|
net_stream_recv_info
|
text
|
通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
|
sort_count
|
bigint
|
排序执行的次数。
|
sort_time
|
bigint
|
排序执行的时间(单位:微秒)。
|
sort_mem_used
|
bigint
|
排序过程中使用的work memory大小(单位:KB)。
|
sort_spill_count
|
bigint
|
排序过程中,若发生落盘,写文件的次数。
|
sort_spill_size
|
bigint
|
排序过程中,若发生落盘,使用的文件大小(单位:KB)。
|
hash_count
|
bigint
|
hash执行的次数。
|
hash_time
|
bigint
|
hash执行的时间(单位:微秒)。
|
hash_mem_used
|
bigint
|
hash过程中使用的work memory大小(单位:KB)。
|
hash_spill_count
|
bigint
|
hash过程中,若发生落盘,写文件的次数。
|
hash_spill_size
|
bigint
|
hash过程中,若发生落盘,使用的文件大小(单位:KB)。
|
last_updated
|
timestamp with time zone
|
最后一次更新该语句的时间。
|
相关特性
STATEMENT对应系统函数get_instr_unique_sql,主要目的是保留数据库启动后,运行的SQL的状态记录。
一般使用形式:
openGauss=# select * from dbe_perf.statement;
主要受到以下参数控制:
-
enable_resource_track:允许运行时候的资源使用追踪。
-
instr_unique_sql_count:允许记录在内存中的SQL总数量。每次修改此参数,都会重置掉内存中已经存在的所有的归一化SQL。
-
instr_unique_sql_track_type:归一化SQL追踪的方式,参数取值为top、all,目前仅支持top,对于存储过程,仅记录最外层调用而非所有SQL。
-
enable_auto_clean_unique_sql:是否打开归一化SQL的自动清理机制,当记录达到上限后,可以自动随机清理其中10%的记录。如果不打开,则会记录错误日志,SQL相关内容也不会记录到内存中。
另请参阅:GUC参数 - Query