金仓数据库KingbaseES数据库参考手册(5. 等待事件 )

等待事件(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 ¶

后端在等待一个轻量级锁:轻量级锁用于保护共享内存中的数据结构,防止并发问题。

表 5.1.6 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.2. Lock ¶

后端在等待一个重量级锁:重量级锁也被称为锁管理器锁或简单锁,主要保护SQL可见的对象,例如表,同时也被用于确保特定内部操作的互斥,如关系扩展。

表 5.2.7 Lock类型等待事件  ¶

等待事件名称

描述

relation

等待获得一个关系上的锁。

extend

等待扩展一个关系。

page

等待获得一个关系上的页面的锁。

tuple

等待获得一个元组上的锁。

transactionid

等待一个事务结束。

virtualxid

等待获得一个虚拟 xid 锁。

speculative token

等待获取一个 speculative insertion lock。

object

等待获得一个非关系数据库对象上的锁。

userlock

等待获得一个用户锁。

advisory

等待获得一个咨询用户锁。

5.3. BufferPin ¶

服务器进程在等待访问一个数据缓冲区:此时没有其他进程在检查该缓冲区。如果另一个进程持有一个即将需要读取的数据缓存区的游标,缓冲区 pin 等待可能会被延长。

表 5.3.4 BufferPin类型等待事件  ¶

等待事件名称

描述

BufferPin

等待在一个缓冲区上加 pin。

5.4. Activity ¶

后台辅助进程活动等待:服务器进程处于闲置状态。这类等待被用于在其主处理循环中等待系统进程的活动。

表 5.4.6 Activity类型等待事件  ¶

等待事件名称

描述

ArchiverMain

在归档进程的主循环中等待。

AutoVacuumMain

在autovacuum启动器进程的主循环中等待。

BgWriterHibernate

在后台写入器进程中等待,休眠中。

BgWriterMain

在后台写入器进程的后台工作者的主循环中等待。

CheckpointerMain

在检查点进程的主循环中等待。

LogicalApplyMain

在逻辑应用进程的主循环中等待。

LogicalLauncherMain

在逻辑启动器进程的主循环中等待。

PgStatMain

在统计收集器进程的主循环中等待。

RecoveryWalAll

在恢复时 等待来自于任意类型来源(本地、归档或流)的WAL。

RecoveryWalStream

在恢复时等待来自于一个流的WAL。

SysLoggerMain

在系统日志进程的主循环中等待。

WalReceiverMain

在WAL接收器进程的主循环中等待。

WalSenderMain

在WAL发送器进程的主循环中等待。

WalWriterMain

在WAL写入器进程的主循环中等待。

KshMain

在KSH进程的主循环中等待。

KwrMain

在KWR进程的主循环中等待。

5.5. Client ¶

客户端等待:服务器进程在一个套接字上等待来自用户应用的某种活动, 并且该服务器预计将有预期之外的事件发生。

表 5.5.2 Client类型等待事件  ¶

等待事件名称

描述

ClientRead

等待从客户端读取数据。

ClientWrite

等待向客户端写入数据。

LibPQWalReceiverConnect

在WAL接收器中等待建立与远程服务器的连接。

LibPQWalReceiverReceive

在WAL接收器中等待从远程服务器接收数据。

SSLOpenServer

在尝试连接期间等待SSL。

WalReceiverWaitStart

等待startup进程发送流复制的初始数据。

WalSenderWaitForWAL

在WAL发送器进程中等待WAL被刷写。

WalSenderWriteData

在WAL发送器进程中处理来自WAL接收器的回复时等待任意活动。

5.6. Extension ¶

扩展插件等待:服务器进程在一个扩展模块中等待活动。这一类等待用于跟踪自定义等待点。

表 5.6.3 Extension类型等待事件  ¶

等待事件名称

描述

Extension

在一个扩展中等待。

5.7. IPC ¶

进程间通讯等待:服务器进程在等待来自服务器中另一个进程的某种活动。

表 5.7.3 IPC类型等待事件  ¶

等待事件名称

描述

BgWorkerShutdown

等待后台工作者关闭。

BgWorkerStartup

等待后台工作者启动。

BtreePage

等待继续并行 B-树扫描所需的页号变得可用。

CheckpointDone

等待检查点完成。

CheckpointStart

等待检查点开始。

ClogGroupUpdate

等待组领 袖在事务结束时更新事务状态。

ExecuteGather

在执行Gathe r节点时等待来自子进程的活动。

Hash/Batch/Allocating

等待一个选出的Parallel Hash参与者分配哈希表。

Hash/Batch/Electing

在选出一个Parallel Hash参与者来分配一个哈希表。

Hash/Batch/Loading

等待其他Parallel Hash参与者完成装载哈希表。

Hash/Build/Allocating

等待一个选出的Parallel Hash参与者分配初始哈希表。

Hash/Build/Electing

在选出一个Parallel Hash参与者以分配初始哈希表。

Hash/Build/HashingInner

等待其他Parallel Hash参 与者完成对内关系的哈希操作。

Hash/Build/HashingOuter

等待其他Parallel Hash参 与者完成对外关系的哈希操作。

Hash/GrowBatches/Allocating

等待一个选出的Parallel Hash参与者分配更多批次。

Hash/GrowBatches/Deciding

在选出一个Parallel H ash参与者决定未来的批次增长。

Hash/GrowBatches/Electing

在选出一个Parallel Hash参与者分配更多批次。

Hash/GrowBatches/Finishing

在等待一个选出的Parallel H ash参与者决定未来的批次增长。

Hash/GrowBatches/Repartitioning

等待其他Parallel Hash参与者完成重新分区。

Hash/GrowBuckets/Allocating

等待一个选出的Parallel Hash参与者完成更多桶的分配。

Hash/GrowBuckets/Electing

在选出一个Parallel Hash参与者分配更多桶。

Hash/GrowBuckets/Reinserting

等待其他Parallel Hash参与者 完成将元组插入到新桶的操作。

LogicalSyncData

等待逻辑复制的远程服务 器发送用于初始表同步的数据。

LogicalSyncStateChange

等待逻 辑复制的远程服务器更改状态。

MessageQueueInternal

等待其 他进程被挂接到共享消息队列。

MessageQueuePutMessage

等待把一个协 议消息写到一个共享消息队列。

MessageQueueReceive

等待 从一个共享消息队列接收字节。

MessageQueueSend

等待向 一个共享消息队列中发送字节。

ParallelBitmapScan

等待并行位图扫描被初始化。

ParallelCreateIndexScan

等待并行CREATE INDEX工作者完成堆扫描。

ParallelFinish

等待并行工作者完成计算。

ProcArrayGroupUpdate

等待组 领袖在事务结束时清除事务ID。

Promote

等待备用节点升级。

ReplicationOriginDrop

等待一个复 制源头变得不活跃以便被删除。

ReplicationSlotDrop

等待一个 复制槽变得不活跃以便被删除。

SafeSnapshot

等待一个用于READ ONLY DEFERRABLE事务的快照。

SyncRep

在同步复制期 间等待来自远程服务器的确认。

5.8. Timeout ¶

超时等待:服务器进程在等待一次超时发生。

表 5.8.1 Timeout类型等待事件  ¶

等待事件名称

描述

BaseBackupThrottle

当有限流活动时在基础备份期间等待。

PgSleep

在调用pg_sleep的进程中等待。

RecoveryApplyDelay

在恢复时等待应用WAL,因为它被延迟了。

5.9. IO ¶

IO等待:服务器进程在等待一次IO完成。

表 5.9.1 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文件的写操作。

你可能感兴趣的:(KingbaseES产品手册,数据库,java,开发语言,金仓数据库,kingbase)