等待事件(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.2. Lock ¶
后端在等待一个重量级锁:重量级锁也被称为锁管理器锁或简单锁,主要保护SQL可见的对象,例如表,同时也被用于确保特定内部操作的互斥,如关系扩展。
| 等待事件名称 | 描述 |
|---|---|
| relation | 等待获得一个关系上的锁。 |
| extend | 等待扩展一个关系。 |
| page | 等待获得一个关系上的页面的锁。 |
| tuple | 等待获得一个元组上的锁。 |
| transactionid | 等待一个事务结束。 |
| virtualxid | 等待获得一个虚拟 xid 锁。 |
| speculative token | 等待获取一个 speculative insertion lock。 |
| object | 等待获得一个非关系数据库对象上的锁。 |
| userlock | 等待获得一个用户锁。 |
| advisory | 等待获得一个咨询用户锁。 |
5.3. BufferPin ¶
服务器进程在等待访问一个数据缓冲区:此时没有其他进程在检查该缓冲区。如果另一个进程持有一个即将需要读取的数据缓存区的游标,缓冲区 pin 等待可能会被延长。
| 等待事件名称 | 描述 |
|---|---|
| BufferPin | 等待在一个缓冲区上加 pin。 |
5.4. 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 ¶
客户端等待:服务器进程在一个套接字上等待来自用户应用的某种活动, 并且该服务器预计将有预期之外的事件发生。
| 等待事件名称 | 描述 |
|---|---|
| ClientRead | 等待从客户端读取数据。 |
| ClientWrite | 等待向客户端写入数据。 |
| LibPQWalReceiverConnect | 在WAL接收器中等待建立与远程服务器的连接。 |
| LibPQWalReceiverReceive | 在WAL接收器中等待从远程服务器接收数据。 |
| SSLOpenServer | 在尝试连接期间等待SSL。 |
| WalReceiverWaitStart | 等待startup进程发送流复制的初始数据。 |
| WalSenderWaitForWAL | 在WAL发送器进程中等待WAL被刷写。 |
| WalSenderWriteData | 在WAL发送器进程中处理来自WAL接收器的回复时等待任意活动。 |
5.6. Extension ¶
扩展插件等待:服务器进程在一个扩展模块中等待活动。这一类等待用于跟踪自定义等待点。
| 等待事件名称 | 描述 |
|---|---|
| Extension | 在一个扩展中等待。 |
5.7. 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 ¶
超时等待:服务器进程在等待一次超时发生。
| 等待事件名称 | 描述 |
|---|---|
| BaseBackupThrottle | 当有限流活动时在基础备份期间等待。 |
| PgSleep | 在调用pg_sleep的进程中等待。 |
| RecoveryApplyDelay | 在恢复时等待应用WAL,因为它被延迟了。 |
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文件的写操作。 |
最后
以上就是含蓄花卷最近收集整理的关于金仓数据库KingbaseES数据库参考手册(5. 等待事件 )5.1. LWLock ¶5.2. Lock ¶5.3. BufferPin ¶5.4. Activity ¶5.5. Client ¶5.6. Extension ¶5.7. IPC ¶5.8. Timeout ¶5.9. IO ¶的全部内容,更多相关金仓数据库KingbaseES数据库参考手册(5.内容请搜索靠谱客的其他文章。
发表评论 取消回复