更新时间:2024-10-18 GMT+08:00
分享

STATEMENT_HISTORY

获得当前节点的执行语句的信息。只可在系统库中查询到结果,用户库中无法查询。

当前版本暂不支持对FOR UPDATE关键字进行识别并归一化处理。例如:SELECT * FROM table; 与SELECT * FROM table FOR UPDATE WAIT N; 会被归一化处理为相同的归一化SQL,在query字段中体现。涉及FOR UPDATE关键字的SQL,可以通过query_plan字段进行区分,执行计划中会含有'lockRows'。

表1 STATEMENT_HISTORY字段

名称

类型

描述

dbname

name

数据库名称

schemaname

name

schema名称

origin_node

integer

节点名称

user_name

name

用户名

application_name

text

用户发起的请求的应用程序名称

client_addr

text

用户发起的请求的客户端地址

client_port

integer

用户发起的请求的客户端端口

unique_query_id

bigint

归一化SQL ID

debug_query_id

bigint

唯一SQL ID

query

text

归一化SQL(仅CN上有值)

start_time

timestamp with time zone

语句启动的时间

finish_time

timestamp with time zone

语句结束的时间

slow_sql_threshold

bigint

语句执行时慢SQL的标准

transaction_id

bigint

事务ID

thread_id

bigint

执行线程ID

session_id

bigint

用户session id

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

query_plan

text

语句执行计划

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的块命中次数

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

通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,CN与CN、CN与客服端以及CN与DN之间都是通过物理连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}

net_recv_info

text

通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,CN与CN、CN与客服端以及CN与DN之间都是通过物理连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}

net_stream_send_info

text

通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,不同分片的DN之间通过逻辑连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。

例如:{"time":xxx, "n_calls":xxx, "size":xxx}

net_stream_recv_info

text

通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,不同分片的DN之间通过逻辑连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。

例如:{"time":xxx, "n_calls":xxx, "size":xxx}

lock_count

bigint

加锁次数

lock_time

bigint

加锁耗时

lock_wait_count

bigint

加锁等待次数

lock_wait_time

bigint

加锁等待耗时

lock_max_count

bigint

最大持锁数量

lwlock_count

bigint

轻量级加锁次数(预留)

lwlock_wait_count

bigint

轻量级等锁次数

lwlock_time

bigint

轻量级加锁时间(预留)

lwlock_wait_time

bigint

轻量级等锁时间

details

bytea

等待事件和语句锁事件的列表。

记录级别的值>=L0时,开始记录等待事件的列表。显示当前节点wait event的相关统计信息。内核中关键的事件信息见表2。或从视图wait_event_info中查看系统中所有的事件列表。关于每种事务锁对业务的影响程度,请参考LOCK语法小节的详细描述。

记录级别的值是L2时,开始记录语句锁事件的列表。该列表按时间顺序记录事件,记录的数量受参数track_stmt_details_size的影响。

该字段为二进制,需要借助解析函数pg_catalog.statement_detail_decode读取,见(其它函数

事件包括:

  • 加锁开始
  • 加锁结束
  • 等锁开始
  • 等锁结束
  • 放锁开始
  • 放锁结束
  • 轻量级等锁开始
  • 轻量级等锁结束

is_slow_sql

boolean

该SQL是否为slow SQL

trace_id

text

驱动传入的trace id,与应用的一次请求相关联。

advise

text

可能导致该SQL为slow SQL的风险信息。

说明:

如果语句通过SQLBypass方式执行(可通过explain查看计划判断),可以认为无慢SQL风险,本字段信息可能会缺失。

parent_unique_sql_id

bigint

当前语句的外层SQL的归一化SQL ID,对于存储过程内执行的语句,该值为调用存储过程语句的归一化SQL ID,存储过程外的语句该值为0。

相关文档