WAIT_EVENT_INFO
WAIT_EVENT_INFO视图显示wait event的具体信息,如表1、表2所示。
| 模块分类 | 事件分类 | 事件 | 说明 | 
|---|---|---|---|
| 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 | stream plan结束时,等待stream线程组内的线程统一退出。 | 
| Stream | 等待事件 | wait stream group destroy | stream 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 | 用于避免并发访问或者修改资源池哈希表。 | 
| OBS | LWLOCK事件 | OBSGetPathLock | 用于避免对obs路径的写写并发和读写并发。 | 
| OBS | LWLOCK事件 | OBSRuntimeLock | 用于获取环境变量,如GAUSSHOME。 | 
| LLVM | LWLOCK事件 | LLVMDumpIRLock | 用于导出动态生成函数所对应的汇编语言。 | 
| LLVM | LWLOCK事件 | LLVMParseIRLock | 用于在查询开始处从IR文件中编译并解析已写好的IR函数。 | 
| 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 offset的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连接场景,在加载与卸载特定动态库时进行加锁。 | 
| COMM | 等待事件 | Accept client conn - Total Time | GaussDB数据库接受客户端的连接请求时,从建立连接开始到连接成功过程的整体耗时。 | 
| COMM | 等待事件 | Accept client conn - ThrdPool - add epoll | GaussDB数据库接受客户端的连接请求时,线程池模式下,从建立连接开始,到线程池将session的句柄加入到epoll的耗时。 | 
| COMM | 等待事件 | Accept client conn - ThrdPool - wait worker | GaussDB数据库接受客户端的连接请求时,线程池模式下,从线程池将session的句柄加入到epoll开始,到线程池中工作线程开始工作的耗时。 | 
| COMM | 等待事件 | Accept client conn - ThrdPool - init session | GaussDB数据库接受客户端的连接请求时,线程池模式下,从线程池中工作线程开始工作,到session初始化结束的耗时。 | 
| COMM | 等待事件 | Accept client conn - Worker - init proc | GaussDB数据库接受客户端的连接请求时,非线程池模式下,从建立连接开始,到线程初始化结束的耗时。 | 
| COMM | 等待事件 | Accept client conn - Worker - init session | GaussDB数据库接受客户端的连接请求时,非线程池模式下,从线程初始化结束,到session初始化结束的耗时。 | 
| Undo | 等待事件 | wait fetch undo record | 等待读取目标undo记录。 | 
| Heap | 等待事件 | wait heap hot search buffer | 等待通过hot链读取满足快照的Astore元组。 | 
| LWLock | 等待事件 | wait exclusive lwlock | 防饿死机制触发,新的轻量级锁加锁请求等待之前被阻塞的轻量级锁获取到。 | 
 
    