GaussDB-PG_THREAD_WAIT_STATUS

118 阅读21分钟

GaussDB-PG_THREAD_WAIT_STATUS

通过PG_THREAD_WAIT_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。具体字段信息如表1所示。

名称类型描述
node_nametext当前节点的名称。
db_nametext数据库名称。
thread_nametext线程名称。
query_idbigint查询id,对应debug_query_id。
tidbigint当前线程的线程号。
sessionidbigint当前会话id。
lwtidinteger当前线程的轻量级线程号。
psessionidbigint父会话ID。
tlevelintegerstreaming线程的层级。
smpidinteger并行线程的id。
wait_statustext当前线程的等待状态。等待状态的详细信息请参见表2
wait_eventtext如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、I/O的信息。否则是空。
locktagtext当前线程正等待获取的锁的信息。
lockmodetext当前线程正等待获取的锁的模式。包含表级锁、行级锁、页级锁下的各模式。
block_sessionidbigint阻塞当前线程获取锁的会话标识。
global_sessionidtext全局会话id。

wait_status列的等待状态如表2所示。

wait_status值含义
none没在等任意事件。
acquire lock等待加锁,要么加锁成功,要么加锁等待超时。
acquire lwlock等待获取轻量级锁。
wait io等待I/O完成。
wait cmd等待完成读取网络通信包。
wait pooler get conn等待pooler完成获取连接。
wait pooler abort conn等待pooler完成终止连接。
wait pooler clean conn等待pooler完成清理连接。
pooler create conn: [nodename], total N等待pooler建立连接,当前正在与nodename指定节点建立连接,且仍有N个连接等待建立。
get conn获取到其他节点的连接。
set cmd: [nodename]在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在nodename指定节点上执行。
cancel query取消某连接上正在执行的SQL语句。
stop query停止某连接上正在执行的查询。
wait node: nodename, total N, [phase]等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回。如果状态包含phase信息,则可能的阶段状态有:- begin:表示处于事务开始阶段。
  • commit:表示处于事务提交阶段。
  • rollback:表示处于事务回滚阶段。 | | wait transaction sync: xid | 等待xid指定事务同步。 | | wait wal sync | 等待特定LSN的wal log完成到备机的同步。 | | wait data sync | 等待完成数据页到备机的同步。 | | wait data sync queue | 等待把行存的数据页放入同步队列。 | | flush data: nodename, [phase] | 等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值。 | | stream get conn: [nodename], total N | 初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象。 | | wait producer ready: nodename, total N | 初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态。 | | synchronize quit | stream plan结束时,等待stream线程组内的线程统一退出。 | | nodegroup destroy | stream plan结束时,等待销毁stream node group。 | | wait active statement | 等待作业执行,正在资源负载管控中。 | | gtm connect | 等待与GTM建连。 | | gtm get gxid | 等待从GTM获取事务xid。 | | gtm get snapshot | 等待从GTM获取事务快照snapshot。 | | gtm begin trans | 等待GTM开始事务。 | | gtm commit trans | 等待GTM提交事务。 | | gtm rollback trans | 等待GTM执行事务回滚。 | | gtm start prepare trans | 等待GTM开始两阶段事务的prepare阶段。 | | gtm prepare trans | 等待GTM完成两阶段事务的prepare阶段。 | | gtm open sequence | 等待GTM打开sequence。 | | gtm close sequence | 等待GTM关闭sequence。 | | gtm create sequence | 等待GTM创建sequence。 | | gtm alter sequence | 等待GTM修改sequence。 | | gtm get sequence val | 等待从GTM获取sequence的下一个值。 | | gtm set sequence val | 等待GTM设置sequence的值。 | | gtm drop sequence | 等待GTM删除sequence。 | | gtm rename sequence | 等待GTM重命名sequence。 | | analyze: [relname], [phase] | 当前正在对表relname执行analyze。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的analyze分析操作。 | | vacuum: [relname], [phase] | 当前正在对表relname执行vacuum。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的vacuum清理操作。 | | vacuum full: [relname] | 当前正在对表relname执行vacuum full清理。 | | create index | 当前正在创建索引。 | | HashJoin - [ build hash | write file ] | 当前是HashJoin算子,主要关注耗时的执行阶段。- build hash:表示当前HashJoin算子正在建立哈希表。
  • write file:表示当前HashJoin算子正在将数据写入磁盘。 | | HashAgg - [ build hash | write file ] | 当前是HashAgg算子,主要关注耗时的执行阶段。- build hash:表示当前HashAgg算子正在建立哈希表。
  • write file:表示当前HashAgg算子正在将数据写入磁盘。 | | HashSetop - [build hash | write file ] | 当前是HashSetop算子,主要关注耗时的执行阶段。- build hash:表示当前HashSetop算子正在建立哈希表。
  • write file:表示当前HashSetop算子正在将数据写入磁盘。 | | Sort | Sort - [fetch tuple | write file] | 当前是Sort算子做排序,fetch tuple表示Sort算子正在获取tuple,write file表示Sort算子正在将数据写入磁盘。 | | Material | Material - write file | 当前是Material算子,write file表示Material算子正在将数据写入磁盘。 | | standby read recovery conflict | 备机只读与日志回放产生冲突。 | | standby get snapshot | 备机只读获取快照。 | | prune table | 等待堆表清理历史删除数据。 | | prune index | 等待索引清理历史删除数据。 | | vacuum gpi | 等待gpi索引清理历史删除数据。 | | gtm reset xmin | 等待gtm重置xmin。 | | gtm get xmin | 等待从gtm获取xmin。 | | gtm get csn | 等待从gtm获取csn。 | | gtm start preprare trans | 等待gtm启动二阶段事务。 | | gtm rename sequence | 等待gtm重命名sequence。 | | wait reserve td | 等待分配ustore事务槽。 | | wait td rollback | 等待ustore事务槽回滚。 | | wait available td | 等待ustore可用的事务槽。 | | wait transaction rollback | 等待事务回滚。 | | gtm set disaster cluster | 等待在gtm设置容灾集群信息。 | | gtm get disaster cluster | 等待从gtm获取容灾集群信息。 | | gtm del disaster cluster | 等待在gtm删除容灾集群信息。 | | gtm set consistency point | 等待在gtm设置一致性点。 | | wait sync bgworkers | 等待并行创建索引的子线程完成本地扫描和排序。 | | wait gs_sleep | 等待服务器线程延迟时间。 | | wait vacuum delay | 等待vacuum延迟时间。 | | wait seq scan | seq scan执行时间。 | | wait index scan | index scan执行时间。 | | wait checkpoint start | checkpoint开始阶段时间。 | | wait checkpoint done | checkpoint结束阶段时间。 | | wait xact start command | xact开始时间。 | | wait xact commit command | xact提交时间。 | | wait io control | 等待作业执行,正在I/O管控中。 | | security audit write pipe | 等待将审计日志写入管道。 |

当wait_status为acquire lwlock、acquire lock或wait io时,表示有等待事件。正在等待获取wait_event列对应类型的轻量级锁、事务锁或者正在进行I/O操作。

其中,wait_status值为acquire lwlock(轻量级锁)时对应的wait_event等待事件类型与描述信息如表3所示。(wait_event为extension时,表示此时的轻量级锁是动态分配的锁,未被监控。)

wait_event类型类型描述
ShmemIndexLock用于保护共享内存中的主索引哈希表。
OidGenLock用于避免不同线程产生相同的OID。
XidGenLock用于避免两个事务获得相同的xid。
ProcArrayLock用于避免并发访问或修改ProcArray共享数组。
SInvalReadLock用于避免与清理失效消息并发执行。
SInvalWriteLock用于避免与其它写失效消息、清理失效消息并发执行。
WALInsertLock用于避免与其它WAL插入操作并发执行。
WALWriteLock用于避免并发WAL写盘。
ControlFileLock用于避免pg_control文件的读写并发、写写并发。
CheckpointLock用于避免多个checkpoint并发执行。
CLogControlLock用于避免并发访问或者修改Clog控制数据结构。
SubtransControlLock用于避免并发访问或者修改子事务控制数据结构。
MultiXactGenLock用于串行分配唯一MultiXact id。
MultiXactOffsetControlLock用于避免对pg_multixact/offset的写写并发和读写并发。
MultiXactMemberControlLock用于避免对pg_multixact/members的写写并发和读写并发。
RelCacheInitLock用于失效消息场景对init文件进行操作时加锁。
CheckpointerCommLock用于向checkpointer发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。
TwoPhaseStateLock用于避免并发访问或者修改两阶段信息共享数组。
TablespaceCreateLock用于确定tablespace是否已经存在。
BtreeVacuumLock用于防止vacuum清理B-tree中还在使用的页面。
AlterPortLock用于保护CN更改注册端口号的操作。
AutovacuumLock用于串行化访问autovacuum worker数组。
AutovacuumScheduleLock用于串行化分配需要vacuum的table。
AutoanalyzeLock用于获取和释放允许执行Autoanalyze的任务资源。
SyncScanLock用于确定heap扫描时某个relfilenode的起始位置。
NodeTableLock用于保护存放CN和DN节点信息的共享结构。
PoolerLock用于保证两个线程不会同时从连接池里取到相同的连接。
RelationMappingLock用于等待更新系统表到存储位置之间映射的文件。
Async Ctl用于保护Async buffer。
AsyncCtlLock用于避免并发访问或者修改共享通知状态。
AsyncQueueLock用于避免并发访问或者修改共享通知信息队列。
SerializableXactHashLock用于避免对于可串行事务共享结构的写写并发和读写并发。
SerializableFinishedListLock用于避免对于已完成可串行事务共享链表的写写并发和读写并发。
SerializablePredicateLockListLock用于保护对于可串行事务持有的锁链表。
OldSerXidLock用于保护记录冲突可串行事务的结构。
FileStatLock用于保护存储统计文件信息的数据结构。
SyncRepLock用于在主备复制时保护xlog同步信息。
DataSyncRepLock用于在主备复制时保护数据页同步信息。
MetaCacheSweepLock用于元数据循环淘汰。
ExtensionConnectorLibLock用于初始化ODBC连接场景,在加载与卸载特定动态库时进行加锁。
SearchServerLibLock用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁。
LsnXlogChkFileLock用于串行更新特定结构中记录的主备机的xlog flush位置点。
GTMHostInfoLock用于避免并发访问或者修改GTM主机信息。
ReplicationSlotAllocationLock用于主备复制时保护主机端的流复制槽的分配。
ReplicationSlotControlLock用于主备复制时避免并发更新流复制槽状态。
ResourcePoolHashLock用于避免并发访问或者修改资源池哈希表。
OBSGetPathLock用于避免对obs路径的写写并发和读写并发。
JobShmemLock用于MPP兼容ORACLE定时任务功能中保护定时读取的全局变量。
OBSRuntimeLock用于获取环境变量,如GASSHOME。
LLVMDumpIRLock用于导出动态生成函数所对应的汇编语言。
LLVMParseIRLock用于在查询开始处从IR文件中编译并解析已写好的IR函数。
CriticalCacheBuildLock用于从共享或者本地缓存初始化文件中加载cache的场景。
WaitCountHashLock用于保护用户语句计数功能场景中的共享结构。
BufMappingLock用于保护对共享缓冲映射表的操作。
LockMgrLock用于保护常规锁结构信息。
PredicateLockMgrLock用于保护可串行事务锁结构信息。
OperatorRealTLock用于避免并发访问或者修改记录算子级实时数据的全局结构。
OperatorHistLock用于避免并发访问或者修改记录算子级历史数据的全局结构。
SessionRealTLock用于避免并发访问或者修改记录query级实时数据的全局结构。
SessionHistLock用于避免并发访问或者修改记录query级历史数据的全局结构。
CacheSlotMappingLock用于保护CU Cache全局信息。
BarrierLock用于保证当前只有一个线程在创建Barrier。
GPCCommitLock用于保护全局Plan Cache hash表的添加操作。
GPCClearLock用于保护全局Plan Cache hash表的清除操作。
GPCTimelineLock用于保护全局Plan Cache hash表检查Timeline的操作。
GPCMappingLock用于全局Plan Cache缓存管理。
GPCPrepareMappingLock用于全局Plan Cache缓存管理。
GPRCMappingLock用于管理自治事务全局缓存hash表的访问和修改操作。
BufFreelistLock用于保证共享缓冲区空闲列表操作的原子性。
AddinShmemInitLock保护共享内存对象的初始化。
wait active statement等待作业执行,正在资源负载管控中。
wait memory等待内存获取。
DnUsedSpaceHashLock用于更新会话对应的空间使用信息。
InstanceRealTLock用于保护共享实例统计信息hash表的更新操作。
IOStatLock用于资源管理IO统计信息哈希表并发维护操作。
PldebugLock用于存储过程调试并发维护操作。
StartBlockMappingLock用于globalstat从pgstat获取startblockarray等信息。
GlobalSeqLock用于全局seqence序列管理。
MatviewSeqnoLock用于物化视图缓存管理。
DataFileIdCacheLock管理共享内存中存储数据文件描述符的哈希表的并发访存。
GTMHostInfoLock保护共享GTM主机信息的并发访存。
TwoPhaseStatePartLock保护(各个分区)两阶段事务状态信息。
WALBufMappingLock保护共享内中各个wal缓存页面与lsn偏移的映射关系。
UndoZoneLock保护undozone的并发访存。
RollbackReqHashLock管理共享内存中存储回滚请求信息的哈希表的并发访存。
UHeapStatLock保护ustore统计信息的并发访存。
WALWritePaxosLock保护向paxos复制组件写wal日志的并发顺序。
SyncPaxosLock保护paxos同步队列的并发访存。
BackgroundWorkerLock保护background worker的并发顺序。
HadrSwitchoverLock保护容灾切换的并发顺序。
HashUidLock保护uid分配的并发顺序。
ParallelDecodeLock保护并行解码的并发顺序。
XLogMaxCSNLock保护容灾模式下本地最大可恢复CSN信息。
DisasterCacheLock保护共享内存中容灾信息缓存的并发访存。
MaxCSNArrayLock保护共享内存中各个分片备机CSN恢复进度信息。
RepairBadBlockStatHashLock保护共享内存中损坏页面哈希表的并发访存。
DropArchiveSlotLock保护删除归档槽信息的并发顺序。
ProcXactMappingLock保护事务号-线程信息映射哈希表的并发访存。
UndoPerZoneLock保护每个undozone内信息的并发访存。
UndoSpaceLock保护undospace的并发访存。
SnapshotBlockLock控制快照备份与页面刷盘的并发顺序。
DWSingleFlushFirstLock控制非段页式单页面双写文件的并发顺序。
DWSingleFlushSecondLock控制段页式单页面双写文件的并发顺序
DWSingleFlushSecondBufTagLock控制段页式单页面双写文件的元信息并发访存
RestartPointQueueLock控制备机restart Point数组的并发访存。
UnlinkRelHashTblLock保护共享内存中待删除文件哈希表的并发访存。
UnlinkRelForkHashTblLock保护共享内存中待删除文件fork哈希表的并发访存。
WALFlushWait保护日志刷盘的并发顺序。
WALConsensusWait保护日志达成一致才进行事务提交或日志回放操作。
WALBufferInitWait保护wal共享内存页面的初始化和刷盘顺序。
WALInitSegment保护wal日志段文件的初始化顺序。
SegmentHeadPartitionLock保护段页式segment头部元信息的分区锁。
PgwrSyncQueueLock保护待刷盘文件队列的并发访存。
BarrierHashTblLock保护共享内存中barrier列表信息的并发访存。
PageRepairHashTblLock保护页面修复哈希表的并发访存。
FileRepairHashTblLock保护文件修复哈希表的并发访存。
BadBlockStatHashLock保护共享损坏页面统计哈希表的并发访存。
BufferIOLock保护共享缓冲区单个页面加载或淘汰的IO并发。
BufferContentLock保护共享缓冲区单个页面的读写并发。
CUSlotListLock保护共享CU槽位链表的并发访存。
DataCacheLock保护共享CU只读缓存的并发访存。
MetaCacheLock保护共享cu meta缓存的并发访存。
CBMParseXlogLock控制cbm文件的并发访存。
CLogBufMappingLock控制共享clog页面映射的并发访存。
CLOG Ctl控制各个clog分区信息的并发访存。
CSNBufMappingLock控制共享csnlog页面映射的并发访存。
CSNLOG Ctl控制各个csnlog分区信息的并发访存。
DelayDDLLock控制删除类ddl和延迟备份功能的并发顺序。
DoubleWriteLock控制双写模块的并发顺序。
DfsConnectorCacheLock控制dfs连接缓存的并发访存。
DfsUserLoginLock控制dfs用户登录的并发顺序。
DfsSpaceCacheLock控制dfs空间管理缓存的并发顺序。
PGPROCLock保护全局共享线程状态数组的并发访存。
RelfilenodeReuseLock控制文件名复用的并发顺序。
ReplicationSlotLock保护逻辑复制槽信息的并发访存。
LogicalReplicationSlotPersistentDataLock控制逻辑复制槽持久化的并发顺序。
RowPageReplicationLock控制行存页面复制的并发顺序。
MultiXactOffset Ctl保护multixact offset文件信息的并发访存。
MultiXactMember Ctl保护multixact member文件信息的并发访存。
OldSerXid SLRU Ctl保护oldser事务号缓存信息的并发访存。
FullBuildXlogCopyStartPtrLock控制全量build起点位置的并发访存。
RcvWriteLock控制wal receiver writer的并发顺序。
XlogRemoveSegLock控制最新删除wal文件信息的并发访存。
CsnMinLock控制csn min信息的并发访存。
HypoIndexLock虚拟索引创建、删除、重置等动作中使用的轻量级锁。
XGBoostLibLockDB4AI特性调用xgboost库时启用的锁。
InstrUserLockId对保护用户登录或者退出登录哈希表并发修改加锁。
GsStackLock控制gs_stack函数不被并发调用。
InstrStmtTrackCtlLock在动态开启全量SQL时, 保护哈希表的并发访存。
CaptureViewFileHashLock开启性能视图采集时,保护哈希表的并发访存。
UniqueSqlEvictLock开启Unique SQL回收时,保护哈希表的并发访存。
ASPMappingLock用于管理ASP的hash表的并发访存。
AuditIndexFileLock控制审计日志index文件的并发读写。
TDEKeyCacheLock控制透明加密数据密钥缓存的并发读写。
SQLAdvisorLock用于管理分布列推荐中hash表的并发访存。
BlockchainVersionLock账本数据库中控制全局区块号的并发读写。
GlobalPrevHashLock账本数据库中控制全局校验哈希的并发读写。
LWTRANCHE_ACCOUNT_TABLE控制账户锁定状态hash表的并发读写。

当wait_status值为wait io时对应的wait_event等待事件类型与描述信息如表4所示。

wait_event类型类型描述
BufFileRead从临时文件中读取数据到指定buffer。
BufFileWrite向临时文件中写入指定buffer中的内容。
ControlFileRead读取pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。
ControlFileSync将pg_control文件持久化到磁盘。数据库初始化时发生。
ControlFileSyncUpdate将pg_control文件持久化到磁盘。主要在数据库启动、执行checkpoint和主备校验过程中发生。
ControlFileWrite写入pg_control文件。数据库初始化时发生。
ControlFileWriteUpdate更新pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。
CopyFileReadcopy文件时读取文件内容。
CopyFileWritecopy文件时写入文件内容。
DataFileExtend扩展文件时向文件写入内容。
DataFileFlush将表数据文件持久化到磁盘
DataFileImmediateSync将表数据文件立即持久化到磁盘。
DataFilePrefetch异步读取表数据文件。
DataFileRead同步读取表数据文件。
DataFileSync将表数据文件的修改持久化到磁盘。
DataFileTruncate表数据文件truncate。
DataFileWrite向表数据文件写入内容。
LockFileAddToDataDirRead读取"postmaster.pid"文件。
LockFileAddToDataDirSync将"postmaster.pid"内容持久化到磁盘。
LockFileAddToDataDirWrite将pid信息写到"postmaster.pid"文件。
LockFileCreateRead读取LockFile文件"%s.lock"。
LockFileCreateSync将LockFile文件"%s.lock"内容持久化到磁盘。
LockFileCreateWRITE将pid信息写到LockFile文件"%s.lock"。
NgroupDestoryLock对于保护nodegroup哈希表并发修改加锁。
NGroupMappingLock对于保护nodegroup哈希表的单个分桶并发修改加锁。
RelationMapRead读取系统表到存储位置之间的映射文件
RelationMapSync将系统表到存储位置之间的映射文件持久化到磁盘。
RelationMapWrite写入系统表到存储位置之间的映射文件。
ReplicationSlotRead读取流复制槽文件。重新启动时发生。
ReplicationSlotRestoreSync将流复制槽文件持久化到磁盘。重新启动时发生。
ReplicationSlotSynccheckpoint时将流复制槽临时文件持久化到磁盘。
ReplicationSlotWritecheckpoint时写流复制槽临时文件。
SLRUFlushSync将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生。
SLRURead读取pg_clog、pg_subtrans和pg_multixact文件。
SLRUSync将脏页写入文件pg_clog、pg_subtrans和pg_multixact并持久化到磁盘。主要在执行checkpoint和数据库停机时发生。
SLRUWrite写入pg_clog、pg_subtrans和pg_multixact文件。
TimelineHistoryRead读取timeline history文件。在数据库启动时发生。
TimelineHistorySync将timeline history文件持久化到磁盘。在数据库启动时发生。
TimelineHistoryWrite写入timeline history文件。在数据库启动时发生。
TwophaseFileRead读取pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。
TwophaseFileSync将pg_twophase文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。
TwophaseFileWrite写入pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。
WALBootstrapSync将初始化的WAL文件持久化到磁盘。在数据库初始化发生。
WALBootstrapWrite写入初始化的WAL文件。在数据库初始化发生。
WALCopyRead读取已存在的WAL文件并进行复制时产生的读操作。在执行归档恢复完后发生。
WALCopySync将复制的WAL文件持久化到磁盘。在执行归档恢复完后发生。
WALCopyWrite读取已存在WAL文件并进行复制时产生的写操作。在执行归档恢复完后发生。
WALInitSync将新初始化的WAL文件持久化磁盘。在日志回收或写日志时发生。
WALInitWrite将新创建的WAL文件初始化为0。在日志回收或写日志时发生。
WALRead从xlog日志读取数据。两阶段文件redo相关的操作产生。
WALSyncMethodAssign将当前打开的所有WAL文件持久化到磁盘。
WALWrite写入WAL文件。
DoubleWriteFileRead等待读取双写文件。
DoubleWriteFileSync等待刷盘双写文件。
DoubleWriteFileWrite等待写入双写文件。
PredoProcessPending等待并行回放处理剩余记录。
PredoApply等待并行回放应用回放。
DisableConnectFileRead等待读取锁分片文件。
DisableConnectFileSync等待刷盘锁分片文件。
DisableConnectFileWrite等待写入锁分片文件
BufHashTableSearch共享缓冲区hash表搜索(可能会触发页面淘汰)。
StrategyGetBuffer策略化缓冲区页面获取(可能会触发页面淘汰)。
UndoFileExtendundo文件扩展。
UndoFilePrefetchundo文件预取。
UndoFileReadundo文件读取。
UndoFileWriteundo文件写。
UndoFileSyncundo文件刷盘。
UndoFileUnlinkundo文件删除。
UndoMetaSyncundo元数据文件刷盘。
WALBufferAccessWAL Buffer访问(出于性能考虑,内核代码里只统计访问次数,未统计其访问耗时)。
WALBufferFullWAL Buffer满时,写wal文件相关的处理。
DWSingleFlushGetPos单页面双写文件查找可用位置。
DWSingleFlushWrite单页面双写文件刷盘。
CkptWaitPageWriterFlush执行全量checkpoint时等待刷页。
CkptWaitPageWriterSynccheckpoint打点前等待有修改的文件同步到磁盘。
CkptWaitCommitTransactionFinishcheckpoint打点前等待所有已经提交的事务提交完毕。
MPFL_INIT初始化max_page_flush_lsn。
MPFL_READ读取max_page_flush_lsn。
MPFL_WRITE写max_page_flush_lsn。
OBSList遍历OBS目录。
OBSRead读取OBS对象。
OBSWrite写入OBS对象。
LOGCTRL_SLEEP等待备机回放追赶。
ShareStorageWalRead共享盘读取日志文件。
ShareStorageWalWrite共享盘写入日志文件。
ShareStorageCtlInfoRead共享盘读取控制信息。
ShareStorageCtlInfoWrite共享盘写入控制信息。
SegFileExtend段页式文件扩展。
SegReadDisk段页式文件读取。
SegWriteDisk段页式文件写入。
SegSync段页式文件刷盘。
SegFileShrink段页式文件收缩。

当wait_status值为acquire lock(事务锁)时对应的wait_event等待事件类型与描述信息如表5所示。

wait_event类型类型描述
relation对表加锁。
extend对表扩展空间时加锁。
partition对分区表加锁。
partition_seq对分区表的分区加锁。
page对表页面加锁。
tuple对页面上的tuple加锁。
transactionid对事务id加锁。
virtualxid对虚拟事务id加锁。
object加对象锁。
userlock加用户锁。
advisory加advisory锁。
filenode对文件名加锁。
subtransactionid对子事务号加锁。
tuple_uid对元组头部的uid隐藏字段加锁。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…