可以查看系统视图 sys_stat_activity 来进行查看每个连接上的等待事件。
注意
当前执行的查询语句和等待事件状态需要在开启 track_activities 参数的情况下才可以查看。开启该参数会带来一定的性能损耗。
sys_stat_activity 视图结构如下:
表 1 视图结构 ¶
字段名 | 类型 | 说明 |
datid | oid | 数据库OID |
datname | name | 数据库名称 |
pid | integer | 服务于这个连接的进程ID |
usesysid | oid | 用户ID |
usename | name | 用户名 |
application_name | text | 应用名称 |
client_addr | inet | 客户端地址 |
client_hostname | text | 客户端主机名 |
client_port | integer | 客户端端口号 |
backend_start | timestamp with time zone | 该连接的启动时间 |
xact_start | timestamp with time zone | 当前事务开始时间 |
query_start | timestamp with time zone | 当前查询开始时间 |
state_change | timestamp with time zone | 当前状态改变时间 |
wait_event_type | text | 当前等待事件的类型 |
wait_event | text | 当前等待事件 |
state | text | 当前的状态 |
backend_xid | xid | 这个后端的顶层事务标识符 |
backend_xmin | xid | 这 个进程的当前事务被启动的时间 |
query | text | 当前查询语句 |
backend_type | text | 后端进程的类型 |
其中,state为当前连接的状态,其可能的值主要有:
active:后端正在执行一个查询。
idle:后端正在等待一个新的客户端命令。
idle in transaction:后端在一个事务中,但是当前没有正在执行一个查询。
idle in transaction (aborted):这个状态与 idle in transaction 相似,不过在该事务中的一个语句导致了一个错误。
fastpath function call:后端正在执行一个 fast-path 函数。
disabled:如果在这个后端中 track_activities 被禁用,则报告这个状态。
注意
如果一个查询或者事务执行的时间过长而一直没有结束,很有可能会拖累整个系统的性能表现,需要具体分析问题的原因并采取合适的办法。
1. 等待事件 ¶
等待事件是数据库内部记录的一种统计信息,该信息出现表明数据库的服务进程必须在等待事件完成后才能继续处理。等待事件揭示了可能影响性能的各种问题症状,比如缓冲区中争用、锁争用等。
sys_stat_activity 里记录的等待事件是瞬时信息,没有对等待事件的时间进行累计,所以量化等待事件上存在一些问题。用户可以考虑多次人工采样来收集等待事件信息,如果在等待的连接较多,则需要等待事件对系统性能造成了较大影响,需要做具体分析。
注意
当前执行的查询语句和等待事件状态需要在开启 track_activities 参数的情况下才可以查看。开启该参数会带来一定的性能损耗。
sys_stat_activity 视图中,wait_event_type 和 wait_event 字段记录了等待时间相关的内容。当一个会话处于等待状态时,wait_event 与 wait_event_type 两列非空,表示会话正在等待的事件和等待事件类型。
KingbaseES 的等待事件分类包括:
LWLock:轻量级锁
Lock:重量级锁
BufferPin:数据缓冲区等待
Activity:后台辅助进程活动等待
Client:客户端等待
Extension:扩展插件等待
IPC:进程间通讯等待
TimeOut:超时等待
IO:IO 等待
每一个等待事件的名称和产生的原因,可以参考《KingbaseES 等待事件》。
查询等待事件示例:
test=# select * from sys_stat_activity;-[RECORD 1 ]----+--------------------------------datid|datname|pid| 236705usesysid|usename|application_name|client_addr|client_hostname|client_port|backend_start| 2022-05-27 11:23:30.833022+08xact_start|query_start|state_change|wait_event_type| Activitywait_event| AutoVacuumMainstate|backend_xid|backend_xmin|query|backend_type| autovacuum launcher