更新时间:2024-05-07 GMT+08:00

WAIT_EVENT_INFO

WAIT_EVENT_INFO视图显示wait event的具体信息。

表1 WAIT_EVENT_INFO字段

名称

类型

描述

module

text

event所属的模块名。

type

text

event类型。

event

text

event名称。

表2 Wait Events事件信息列表

模块分类

事件分类

事件

说明

Lock

等待事件

acquire lock

等待加锁,要么加锁成功,要么加锁等待超时。

SharedMemory

LWLOCK事件

ShmemIndexLock

用于保护共享内存中的主索引哈希表

Shared buffer

LWLOCK事件

BufMappingLock

用于保护对共享缓冲映射表的操作。

Lmgr

LWLOCK事件

LockMgrLock

用于保护常规锁结构信息。

LWLock

等待事件

acquire lwlock

等待获取轻量级锁

I/O

等待事件

wait io

等待IO完成

COMM

等待事件

wait cmd

等待完成读取网络通信包

COMM

等待事件

wait pooler get conn

等待pooler完成获取连接

COMM

等待事件

wait pooler abort conn

等待pooler完成终止连接

COMM

等待事件

wait pooler clean conn

等待pooler完成清理连接

COMM

等待事件

get conn

获取到其他节点的连接

COMM

等待事件

set cmd

在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL

COMM

等待事件

cancel query

取消某连接上正在执行的SQL语句

COMM

等待事件

stop query

停止某连接上正在执行的查询

COMM

等待事件

wait node

等待接收与某节点的连接上的数据

COMM

等待事件

flush data

等待向网络中的其他节点发送数据

COMM

等待事件

stream get conn

初始化stream flow时,等待建立到consumer nodes的连接。

COMM

等待事件

wait producer ready

初始化stream flow时,等待每个producer都准备好。

Stream

等待事件

synchronize quit

steam plan结束时,等待stream线程组内的线程统一退出。

Stream

等待事件

wait stream group destroy

steam plan结束时,等待销毁stream node group。

Transaction

等待事件

wait transaction sync

等待事务同步

Transaction

等待事件

wait data sync

等待完成数据页到备机的同步

Transaction

等待事件

wait data sync queue

等待把行存的数据页放入同步队列

Transaction

LWLOCK事件

OidGenLock

用于避免不同线程产生相同的OID。

Transaction

LWLOCK事件

XidGenLock

用于避免两个事务获得相同的xid。

Transaction

LWLOCK事件

ProcArrayLock

用于避免并发访问或修改ProcArray共享数组。

Transaction

LWLOCK事件

SubtransControlLock

用于避免并发访问或者修改子事务控制数据结构

Transaction

LWLOCK事件

MultiXactGenLock

用于串行分配唯一MultiXactid

Transaction

LWLOCK事件

TwoPhaseStateLock

用于避免并发访问或者修改两阶段信息共享数组

Transaction

LWLOCK事件

SerializableXactHashLock

用于避免对于可串行事务共享结构的写写并发和读写并发

Transaction

LWLOCK事件

SerializableFinishedListLock

用于避免对于已完成可串行事务共享链表的写写并发和读写并发

Transaction

LWLOCK事件

SerializablePredicateLockListLock

用于保护对于可串行事务持有的锁链表

Transaction

LWLOCK事件

PredicateLockMgrLock

用于保护可串行事务锁结构信息。

Transaction

LWLOCK事件

OldSerXid SLRU lwlock

保护old xids的slru buffer

Transaction

LWLOCK事件

OldSerXidLock

用于保护记录冲突可串行事务的结构

Transaction

LOCK事件

transactionid

对事务ID加锁

Transaction

LOCK事件

virtualxid

对虚拟事务ID加锁

Checkpoint

LWLOCK事件

CheckpointLock

用于避免多个checkpoint并发执行

Checkpoint

LWLOCK事件

CheckpointerCommLock

用于向checkpointer发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。

Analyze

LWLOCK事件

AutoanalyzeLock

用于获取和释放允许执行Autoanalyze的任务资源。

Vacuum

LWLOCK事件

BtreeVacuumLock

用于防止vacuum清理btree中还在使用的页面。

Vacuum

LWLOCK事件

AutovacuumLock

用于串行化访问autovacuum worker数组

Vacuum

LWLOCK事件

AutovacuumScheduleLock

用于串行化分配需要vacuum的table

Auto vacuum

LWLOCK事件

AutovacuumLock

用于保护autovacuum shmem struct

Auto vacuum

LWLOCK事件

AutovacuumScheduleLock

用于保护auto vacuum worker信息

Auto analyze

LWLOCK事件

AutoanalyzeLock

用于保护autoAnalyzeFreeProcess变量,保证最多有10个auto analyze线程同时运行。

WAL

等待事件

wait wal sync

等待特定LSN的wal log完成到备机的同步

WAL

I/O事件

WALBootstrapSync

将初始化的WAL文件持久化到磁盘。在数据库初始化发生。

WAL

I/O事件

WALBootstrapWrite

写入初始化的WAL文件。在数据库初始化发生。

WAL

I/O事件

WALCopyRead

读取已存在的WAL文件并进行复制时产生的读操作。在执行归档恢复完后发生。

WAL

I/O事件

WALCopySync

将复制的WAL文件持久化到磁盘。在执行归档恢复完后发生。

WAL

I/O事件

WALCopyWrite

读取已存在WAL文件并进行复制时产生的写操作。在执行归档恢复完后发生。

WAL

I/O事件

WALInitSync

将新初始化的WAL文件持久化磁盘。在日志回收或写日志时发生。

WAL

I/O事件

WALInitWrite

将新创建的WAL文件初始化为0。在日志回收或写日志时发生。

WAL

I/O事件

WALRead

从xlog日志读取数据。两阶段文件redo相关的操作产生。

WAL

I/O事件

WALSyncMethodAssign

将当前打开的所有WAL文件持久化到磁盘。

WAL

I/O事件

WALWrite

写入WAL文件。

WAL

I/O事件

LOGCTRL_SLEEP

统计流控发生了多少次、日志流控的睡眠时间。

WAL

LWLOCK事件

RcvWriteLock

防止并发调用WalDataRcvWrite。

WAL

LWLOCK事件

WALBufMappingLock

初始化Xlogbufer的下一个page时需要加x锁。

WAL

LWLOCK事件

WALInsertLock

用于防止多个程序同时向同一个xlog缓冲区写。

WAL

LWLOCK事件

WALWriteLock

用于避免并发刷写wal日志。

Relation

LWLOCK事件

SInvalReadLock

用于避免与清理失效消息并发执行。

Relation

LWLOCK事件

SinvalWriteLock

用于避免与其它写失效消息、清理失效消息并发执行。

Relation

LWLOCK事件

RelCacheInitLock

用于失效消息场景对init文件进行操作时加锁。

Relation

LWLOCK事件

TablespaceCreateLock

用于确定tablespace是否已经存在。

Relation

LWLOCK事件

RelfilenodeReuseLock

避免错误地取消已重用的列属性文件的链接。

Relation

LOCK事件

relation

对表加锁。

Relation

LOCK事件

extend

对表扩展空间时加锁。

Relation

LOCK事件

partition

对分区表加锁。

Relation

LOCK事件

partition_seq

对分区表的分区加锁。

WLM

等待事件

wait active statement

WLM等待active statement。

WLM

等待事件

wait memory

WLM 等待空余内存。

DDL/DCL

等待事件

create index

等待index创建成功。

DDL/DCL

等待事件

analyze

等待analyze完成。

DDL/DCL

等待事件

vacuum

等待vacuum 完成。

DDL/DCL

LWLOCK事件

DelayDDLLock

防止并发ddl。

DDL/DCL

等待事件

vacuum full

等待vacuum full操作 完成。

Executor

等待事件

Sort

等待tuple 排序完成。

Executor

等待事件

Sort - write file

归并排序时内存受限,将排序完的数据暂时写入文件。

Executor

等待事件

Material

等待将tuple物化。

Executor

等待事件

Material - write file

等待将物化的tuple写入文件。

Executor

等待事件

HashJoin - build hash

执行hashJoin时,等待hashtable建立完成。

Executor

等待事件

HashJoin - write file

执行hashJoin时,等待将tuple的hash结果写到磁盘。

Executor

等待事件

HashAgg - build hash

执行hashagg时,等待hashtable建立完成。

Executor

等待事件

HashAgg - write file

执行hashagg时,等待将tuple的hash结果写到磁盘。

Executor

等待事件

HashSetop - build hash

通过hash方式执行OP操作时,等待建立hash表。

Executor

等待事件

HashSetop - write file

通过hash方式执行OP操作时,等待将tuple的hash结果写到磁盘。

Executor

等待事件

wait sync consumer next step

等待stream consumer进行下一步处理。

Executor

等待事件

wait sync producer next step

等待stream producer进行下一步处理。

GTM

等待事件

gtm connect

等待与gtm连接

GTM

等待事件

gtm reset xmin

等待gtm重新设置xmin完成

GTM

等待事件

gtm get xmin

等待从gtm获取xmin

GTM

等待事件

gtm get gxid

启动事务时等待从gtm获取gxid

GTM

等待事件

gtm get csn

事务提交时等待从gtm获取CSN

GTM

等待事件

gtm get snapshot

事务启动时等待从gtm获取快照

GTM

等待事件

gtm begin trans

等待GTM开启事务

GTM

等待事件

gtm commit trans

等待GTM提交事务

GTM

等待事件

gtm rollback trans

等待GTM回滚事务

GTM

等待事件

gtm start preprare trans

两阶段提交时,等待GTM完成一阶段。

GTM

等待事件

gtm prepare trans

两阶段提交时,等待GTM完成第二阶段。

GTM

等待事件

gtm open sequence

等待gtm创建sequence。

GTM

等待事件

gtm close sequence

等待gtm完成alter sequence操作。

GTM

等待事件

gtm set sequence val

等待gtm设置sequence的值

GTM

等待事件

gtm drop sequence

等待gtm删除sequence

GTM

等待事件

gtm rename sequence

等待gtm重命名sequence

GTM

LWLOCK事件

GTMHostInfoLock

用于保护gtm的信息

Temp File

I/O事件

BufFileRead

从临时文件中读取数据到指定buffer

Temp File

I/O事件

BufFileWrite

向临时文件中写入指定buffer中的内容

Pg_control

I/O事件

ControlFileRead

读取pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。

Pg_control

I/O事件

ControlFileSync

将pg_control文件持久化到磁盘。数据库初始化时发生。

Pg_control

I/O事件

ControlFileSyncUpdate

将pg_control文件持久化到磁盘。主要在数据库启动、执行checkpoint和主备校验过程中发生。

Pg_control

I/O事件

ControlFileWrite

写入pg_control文件。数据库初始化时发生。

Pg_control

I/O事件

ControlFileWriteUpdate

更新pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。

Pg_control

LWLOCK事件

ControlFileLock

用于避免pg_control文件的读写并发、写写并发。

文件操作

I/O事件

CopyFileRead

copy文件时读取文件内容

文件操作

I/O事件

CopyFileWrite

copy文件时写入文件内容

文件操作

I/O事件

DataFileExtend

扩展文件时向文件写入内容

表数据文件

I/O事件

DataFileImmediateSync

将表数据文件立即持久化到磁盘

表数据文件

I/O事件

DataFilePrefetch

异步读取表数据文件

表数据文件

I/O事件

DataFileRead

同步读取表数据文件

表数据文件

I/O事件

DataFileSync

将表数据文件持久化磁盘

表数据文件

I/O事件

DataFileTruncate

表数据文件truncate

表数据文件

I/O事件

DataFileWrite

向表数据文件写入内容

表数据文件

LWLOCK事件

SyncScanLock

用于确定heap扫描时某个relfilenode的起始位置

表数据文件

LWLOCK事件

RelationMappingLock

用于等待更新系统表到存储位置之间映射的文件

元数据

LWLOCK事件

MetaCacheSweepLock

用于元数据循环淘汰

postmaster.pid

I/O事件

LockFileAddToDataDirRead

读取"postmaster.pid"文件

postmaster.pid

I/O事件

LockFileAddToDataDirSync

将"postmaster.pid"内容持久化到磁盘

postmaster.pid

I/O事件

LockFileAddToDataDirWrite

将pid信息写到"postmaster.pid"文件

Pid File

I/O事件

LockFileCreateRead

读取LockFile文件"%s.lock"

Pid File

I/O事件

LockFileCreateSync

将LockFile文件"%s.lock"内容持久化到磁盘

Pid File

I/O事件

LockFileCreateWRITE

将pid信息写到LockFile文件"%s.lock"

系统表映射文件

I/O事件

RelationMapRead

读取系统表到存储位置之间的映射文件

系统表映射文件

I/O事件

RelationMapSync

将系统表到存储位置之间的映射文件持久化到磁盘

系统表映射文件

I/O事件

RelationMapWrite

写入系统表到存储位置之间的映射文件

Streaming replication

I/O事件

ReplicationSlotRead

读取流复制槽文件。重新启动时发生

Streaming replication

I/O事件

ReplicationSlotRestoreSync

将流复制槽文件持久化到文件

Streaming replication

I/O事件

ReplicationSlotSync

checkpoint时将流复制槽临时文件持久化到磁盘

Streaming replication

I/O事件

ReplicationSlotWrite

checkpoint时写流复制槽临时文件

Streaming replication

LWLOCK事件

ReplicationSlotAllocationLock

方式分配同一个复制槽

Streaming replication

LWLOCK事件

ReplicationSlotControlLock

检测复制槽名称冲突,识别出具体可分配的复制槽,需要ReplicationSlotControlLock锁。

Clog

I/O事件

SLRUFlushSync

将pg_clog文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生

Clog

I/O事件

SLRURead

读取pg_clog文件

Clog

I/O事件

SLRUSync

将脏页写入文件pg_clog并持久化到磁盘。主要在执行checkpoint和数据库停机时发生。

Clog

I/O事件

SLRUWrite

写入pg_clog文件

Clog

LWLOCK事件

CLogControlLock

用于避免并发访问或者修改Clog控制数据结构

Clog

LWLOCK事件

MultiXactOffsetControlLock

用于避免对pg_multixact/offset的写写并发和读写并发

Clog

LWLOCK事件

MultiXactMemberControlLock

用于避免对pg_multixact/members的写写并发和读写并发

timelinehistory

I/O事件

TimelineHistoryRead

读取timelinehistory文件。在数据库启动时发生。

timelinehistory

I/O事件

TimelineHistorySync

将timelinehistory文件持久化到磁盘。在数据库启动时发生。

timelinehistory

I/O事件

TimelineHistoryWrite

写入timelinehistory文件

pg_twophase

I/O事件

TwophaseFileRead

读取pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。

pg_twophase

I/O事件

TwophaseFileSync

将pg_twophase文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。

pg_twophase

I/O事件

TwophaseFileWrite

写入pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。

Cluster

LWLOCK事件

NodeTableLock

用于保护存放CN和DN节点信息的共享结构

Concurrency

LWLOCK事件

PoolerLock

用于保证两个线程不会同时从连接池里取到相同的连接

Concurrency

LWLOCK事件

AsyncCtlLock

用于避免并发访问或者修改共享通知状态

Concurrency

LWLOCK事件

AsyncQueueLock

用于避免并发访问或者修改共享通知信息队列

Double write

I/O事件

DoubleWriteFileWrite

Double write过程中将页面写到Double write文件中

Double write

I/O事件

DoubleWriteFileRead

发生半写进行恢复时读取Double write文件

Statistics file

LWLOCK事件

FileStatLock

用于保护存储统计文件信息的数据结构

Master-slave replication

LWLOCK事件

SyncRepLock

用于在主备复制时保护xlog同步信息。

Master-slave replication

LWLOCK事件

ReplicationSlotAllocationLock

用于主备复制时保护主机端的流复制槽的分配。

Master-slave replication

LWLOCK事件

ReplicationSlotControlLock

用于主备复制时避免并发更新流复制槽状态。

Master-slave replication

LWLOCK事件

LsnXlogChkFileLock

用于串行更新特定结构中记录的主备机的xlogflush位置点

Master-slave replication

LWLOCK事件

DataSyncRepLock

用于在主备复制时保护数据页同步信息。

Speed up the cluster

LWLOCK事件

SearchServerLibLock

用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁。

Resource manage

LWLOCK事件

ResourcePoolHashLock

用于避免并发访问或者修改资源池哈希表。

Resource manage

LWLOCK事件

WorkloadStatHashLock

用于避免并发访问或者修改包含CN侧的SQL请求构成的哈希表。

Resource manage

LWLOCK事件

WorkloadIoStatHashLock

用于避免并发访问或者修改用于统计当前DN的IO信息的哈希表。

Resource manage

LWLOCK事件

WorkloadCGroupHashLock

用于避免并发访问或者修改cgroup信息构成的哈希表。

Resource manage

LWLOCK事件

WorkloadRecordLock

用于避免并发访问或修改在内存自适应管理时对CN收到请求构成的哈希表。

Resource manage

LWLOCK事件

WorkloadIOUtilLock

用于保护记录iostat,CPU等负载信息的结构。

Resource manage

LWLOCK事件

WorkloadNodeGroupLock

用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表。

OBS

LWLOCK事件

OBSGetPathLock

用于避免对obs路径的写写并发和读写并发。

OBS

LWLOCK事件

OBSRuntimeLock

用于获取环境变量,如GASSHOME。

MPP is compatible with ORACLE scheduled task function

LWLOCK事件

JobShmemLock

用于MPP兼容ORACLE定时任务功能中保护定时读取的全局变量。

Operator history information statistics

LWLOCK事件

OperatorRealTLock

用于避免并发访问或者修改记录算子级实时数据的全局结构。

Operator history information statistics

LWLOCK事件

OperatorHistLock

用于避免并发访问或者修改记录算子级历史数据的全局结构。

query history information statistics

LWLOCK事件

SessionRealTLock

用于避免并发访问或者修改记录query级实时数据的全局结构。

query history information statistics

LWLOCK事件

SessionHistLock

用于避免并发访问或者修改记录query级历史数据的全局结构。

query history information statistics

LWLOCK事件

WaitCountHashLock

用于保护用户语句计数功能场景中的共享结构。

barrier

LWLOCK事件

BarrierLock

用于保证当前只有一个线程在创建Barrier。

CSN

LWLOCK事件

CSNBufMappingLock

保护csn页面

instrumentation

LWLOCK事件

UniqueSQLMappingLock

用于保护uniquesql hash table

instrumentation

LWLOCK事件

InstrUserLock

用于保护InstrUserHTAB。

instrumentation

LWLOCK事件

PercentileLock

用于保护全局PercentileBuffer

instrumentation

LWLOCK事件

InstrWorkloadLock

保护全局instr workload xact info hash table

Pgproc

LWLOCK事件

Pgproc lwlock

用于保护pgproc

Async buffer

LWLOCK事件

AsyncCtlLock

保护Async buffer

MultiXact

LWLOCK事件

MultiXactOffset lwlock

保护MultiXact offet的slru buffer

MultiXact

LWLOCK事件

MultiXactMemberlwlock

保护MultiXact member的slrubuffer

CBM

LWLOCK事件

CBMParseXlogLock

Cbm 解析xlog时的保护锁

BadBlock

LWLOCK事件

BadBlockStatHashLock

用于保护global_bad_block_stat hash表

Page

LOCK事件

page

对表页面加锁

Tuple

LOCK事件

tuple

对页面上的tuple加锁

object

LOCK事件

object

加对象锁

user

LOCK事件

userlock

加用户锁

advisor

LOCK事件

advisory

加advisory锁

ODBC

LWLOCK事件

ExtensionConnectorLibLock

用于初始化ODBC连接场景,在加载与卸载特定动态库时进行加锁。