等待事件(Wait event)是KingbaseES数据库性能分析的一项重要的参考指标。
本部分提供KingbaseES数据库系统等待事件的相关信息。
你可以通过下面的SQL语句查询/分析KingbaseES等待事件相关信息。
下面的例子展示了如何查看实时等待事件sys_stat_activity视图
SELECT pid, wait_event_type, wait_event FROM sys_stat_activity WHERE wait_event is NOT NULL; pid | wait_event_type | wait_event ------+------------------+--------------- 2540 | Lock | relation 6644 | LWLock | ProcArrayLock (2 rows)
每一行代表一个服务器进程,显示进程当前所处的等待事件。
5.1. LWLock ¶
后端在等待一个轻量级锁:轻量级锁用于保护共享内存中的数据结构,防止并发问题。
等待事件名称 | 描述 |
|---|---|
ShmemIndexLock | 等待 在共享内存中查找或者分配空间。 |
OidGenLock | 等待分配或者赋予一个 OID。 |
XidGenLock | 等待分配或者赋予一个事务 ID。 |
ProcArrayLock | 等待在事 务结尾得到一个快照或者清除事务 ID。 |
SInvalReadLock | 等待从共享无 效消息队列中检索或者移除消息。 |
SInvalWriteLock | 等待在共 享无效消息队列中增加一个消息。 |
WALBufMappingLock | 等待在 WAL 缓冲区中替换一个页面。 |
WALWriteLock | 等待 WAL 缓冲区被写入到磁盘。 |
ControlFileLock | 等待读取 或者更新控制文件或创建一个新的 WAL 文件。 |
CheckpointLock | 等待执行检查点。 |
CLogControlLock | 等待读取或者更新事务状态。 |
SubtransControlLock | 等待读取或者更新子事务信息。 |
MultiXactGenLock | 等 待读取或者更新共享多事务状态。 |
MultiXactOffsetControlLock | 等 待读取或者更新多事务偏移映射。 |
MultiXactMemberControlLock | 等 待读取或者更新多事务成员映射。 |
RelCacheInitLock | 等待读取 或者写入关系缓冲区初始化文件。 |
CheckpointerCommLock | 等待管理 fsync 请求。 |
TwoPhaseStateLock | 等 待读取或者更新预备事务的状态。 |
TablespaceCreateLock | 等待创建或者删除表空间。 |
BtreeVacuumLock | 等待读取或者更新一个 B-树索引的 vacuum 相关的信息。 |
AddinShmemInitLock | 等待管理共享内存中的空间分配。 |
AutovacuumLock | 自动清 理工作者或者启动器等待更新或者 读取自动清理工作者的当前状态。 |
AutovacuumScheduleLock | 等待确 认选中进行清理的表仍需要清理。 |
SyncScanLock | 等待为同步扫 描得到一个表上扫描的开始位置。 |
RelationMappingLock | 等待更新用来存储目录 到文件节点映射的关系映射文件。 |
AsyncCtlLock | 等待读取或者更新共享通知状态。 |
AsyncQueueLock | 等待读取或者更新通知消息。 |
SerializableXactHashLock | 等待检索或 者存储有关可序列化事务的信息。 |
SerializableFinishedListLock | 等待 访问已结束可序列化事务的列表。 |
SerializablePredicateLockListLock | 等待在由可序列化事 务持有的所列表上执行一个操作。 |
OldSerXidLock | 等待读 取或者记录冲突的可序列化事务。 |
SyncRepLock | 等待读 取或者更新有关同步复制的信息。 |
BackgroundWorkerLock | 等 待读取或者更新后台工作者状态。 |
DynamicSharedMemoryControlLock | 等待 读取或者更新动态共享内存状态。 |
AutoFileLock | 等 待更新kingbase.auto.conf文件。 |
ReplicationSlotAllocationLock | 等待分配或者释放一个复制槽。 |
ReplicationSlotControlLock | 等待读取或者更新复制槽状态。 |
CommitTsControlLock | 等 待读取或者更新事务提交时间戳。 |
CommitTsLock | 等待读取或 者更新事务时间戳的最新设置值。 |
ReplicationOriginLock | 等 待设置、删除或者使用复制源头。 |
MultiXactTruncationLock | 等待读取或者阶段多事务信息。 |
OldSnapshotTimeMapLock | 等待 读取或者更新旧的快照控制信息。 |
LogicalRepWorkerLock | 等 待逻辑复制工作者上的动作完成。 |
CLogTruncationLock | 等待执行txid _status或更新可用的最新事务id。 |
clog | 在等地clog (事务状态)缓冲区上的I/O。 |
commit_timestamp | 等待提交时间戳缓冲区上的 I/O。 |
subtrans | 等待子事务缓冲区上的 I/O。 |
multixact_offset | 等待多事务偏移缓冲区上的 I/O。 |
multixact_member | 等待多事务成员缓冲区上的 I/O。 |
async | 等待 async(通知)缓冲区上的 I/O。 |
oldserxid | 等待 oldserxid 缓冲区上的 I/O。 |
wal_insert | 等待把 WAL 插入到一个内存缓冲区。 |
buffer_content | 等待读 取或者写入内存中的一个数据页。 |
buffer_io | 等待一个数据页面上的 I/O。 |
replication_origin | 等待读取或者更新复制进度。 |
replication_slot_io | 等待一个复制槽上的 I/O。 |
proc | 等待读取或者更新 fast-path 锁信息。 |
buffer_mapping | 等待把一个数据 块与缓冲池中的一个缓冲区关联。 |
lock_manager | 等待增加或检查用 于后端的锁,或者等待加入或退 出一个锁定组。 |
predicate_lock_manager | 等待增加或者检查谓词锁信息。 |
serializable_xact | 等待在并行查询 中对一个可序列化事务执行操作。 |
parallel_query_dsa | 等 待并行查询动态共享内存分配锁。 |
tbm | 等待TBM共享迭代器锁。 |
parallel_append | 在Parallel Append计划 执行期间等待选择下一个子计划。 |
parallel_hash_join | 在Parallel Hash计划执行期间等待分配 或交换一块内存或者更新计数器。 |
5.9. IO ¶
IO等待:服务器进程在等待一次IO完成。
等待事件名称 | 描述 |
|---|---|
BufFileRead | 等待从一个缓存的文件中读取。 |
BufFileWrite | 等待向一个缓存的文件中写入。 |
ControlFileRead | 等待从控制文件中读取。 |
ControlFileSync | 等待控制文件到达稳定存储。 |
ControlFileSyncUpdate | 等待对控制文件的更新到达稳定存储。 |
ControlFileWrite | 等待一个对控制文件的写入。 |
ControlFileWriteUpdate | 等待一个写操作更新控制文件。 |
CopyFileRead | 在文件拷贝操作期间等待一个读操作。 |
CopyFileWrite | 在文件拷贝操作期间等待一个写操作。 |
DataFileExtend | 等待一个关系数据文件被扩充。 |
DataFileFlush | 等待一个关系数据文件到达稳定存储。 |
DataFileImmediateSync | 等待一 个关系数据文件的立即同步到达稳定存储。 |
DataFilePrefetch | 等 待从一个关系数据文件中的一次异步预取。 |
DataFileRead | 等待一次对一个关系数据文件的读操作。 |
DataFileSync | 等待 对一个关系数据文件的更改到达稳定存储。 |
DataFileTruncate | 等待一个关系数据文件被截断。 |
DataFileWrite | 等待一次对一个关系数据文件的写操作。 |
DSMFillZeroWrite | 等待 向一个动态共享内存备份文件中写零字节。 |
LockFileAddToDataDirRead | 在向数据 目录锁文件中增加一行时等待一个读操作。 |
LockFileAddToDataDirSync | 在向数据目录锁 文件中增加一行时等待数据到达稳定存储。 |
LockFileAddToDataDirWrite | 在向数据 目录锁文件中增加一行时等待一个写操作。 |
LockFileCreateRead | 在创建数据目录锁文件期间等待读取。 |
LockFileCreateSync | 在创建数 据目录锁文件期间等待数据到达稳定存储。 |
LockFileCreateWrite | 在 创建数据目录锁文件期间等待一个写操作。 |
LockFileReCheckDataDirRead | 在重新检查 数据目录锁文件的过程中等待一个读操作。 |
Lo gicalRewriteCheckpointSync | 在一个检 查点期间等待逻辑重写映射到达稳定存储。 |
LogicalRewriteMappingSync | 在一次 逻辑重写期间等待映射数据到达稳定存储。 |
LogicalRewriteMappingWrite | 在一 次逻辑重写期间等待对映射数据的写操作。 |
LogicalRewriteSync | 等待逻辑重写映射到达稳定存储。 |
LogicalRewriteWrite | 等待对逻辑重写映射的写操作。 |
RelationMapRead | 等待对关系映射文件的读操作。 |
RelationMapSync | 等待关系映射文件到达稳定存储。 |
RelationMapWrite | 等待对关系映射文件的写操作。 |
ReorderBufferRead | 在重排序缓冲区管理期间等待一个读操作。 |
ReorderBufferWrite | 在重排序缓冲区管理期间等待一个写操作。 |
ReorderLogicalMappingRead | 在重排序缓冲 区管理期间等待对一个逻辑映射的读操作。 |
ReplicationSlotRead | 等待对一个复制槽控制文件的读操作。 |
ReplicationSlotRestoreSync | 在把一个复制槽控制文件 恢复到内存的过程中等待它到达稳定存储。 |
ReplicationSlotSync | 等待一个复制槽控制文件到达稳定存储。 |
ReplicationSlotWrite | 等待对一个复制槽控制文件的写操作。 |
SLRUFlushSync | 在检查点或者数 据库关闭期间等待SLRU数据到达稳定存储。 |
SLRURead | 等待对一个SLRU页面的读操作。 |
SLRUSync | 等待 SLRU数据在一个页面写之后到达稳定存储。 |
SLRUWrite | 等待一个SLRU页面上的写操作。 |
SnapbuildRead | 等待一个序列化历史目录快照的读操作。 |
SnapbuildSync | 等 待一个序列化历史目录快照到达稳定存储。 |
SnapbuildWrite | 等待一个序列化历史目录快照的写操作。 |
TimelineHistoryFileSync | 等待一个通过流复 制接收到的时间线历史文件到达稳定存储。 |
TimelineHistoryFileWrite | 等待一个通过 流复制接收到的时间线历史文件的读操作。 |
TimelineHistoryRead | 等待一个时间线历史文件上的读操作。 |
TimelineHistorySync | 等待一 个新创建的时间线历史文件达到稳定存储。 |
TimelineHistoryWrite | 等待 一个新创建的时间线历史文件上的写操作。 |
TwophaseFileRead | 等待一个两阶段状态文件的读操作。 |
TwophaseFileSync | 等待一个两阶段状态文件到达稳定存储。 |
TwophaseFileWrite | 等待一个两阶段状态文件的写操作。 |
WALBootstrapSync | 在自举期间等待WAL到达稳定存储。 |
WALBootstrapWrite | 在自举期间等待一个WAL页面的写操作。 |
WALCopyRead | 在通过拷贝一个已有W AL段创建一个新的WAL段时等待一个读操作。 |
WALCopySync | 等待一个通过拷 贝已有WAL段创建的新WAL段到达稳定存储。 |
WALCopyWrite | 在通过拷贝一个已有W AL段创建一个新的WAL段时等待一个写操作。 |
WALInitSync | 等待一个新初始化的WAL文件到达稳定存储。 |
WALInitWrite | 在初 始化一个新的WAL文件期间等待一个写操作。 |
WALRead | 等待一次对一个WAL文件的读操作。 |
WA LSenderTimelineHistoryRead | 在walsender的时间线命令 期间等待对一个时间线历史文件的读操作。 |
WALSync | 等待WAL文件到达持久的存储空间。 |
WALSyncMethodAssign | 在 指派WAL同步方法时等待数据到达稳定存储。 |
WALWrite | 等待一次对一个WAL文件的写操作。 |




