PG中的等待事件列表

0    293    4

Tags:

👉 本文共约35046个字,系统预计阅读时间或需132分钟。

简介

等待事件表示会话正在等待的资源。例如,当 Aurora PostgreSQL 等待从客户端接收数据时,会发生等待事件 Client:ClientRead。会话等待的典型资源包括以下内容:

  • 例如,当会话试图修改缓冲区时,对缓冲区的单线程访问
  • 当前被另一个会话锁定的行
  • 已读取一个数据文件
  • 已写入一个日志文件

例如,为了满足查询,会话可能会执行完整的表扫描。如果数据尚未在内存中,会话将等待磁盘输入/输出完成。当缓冲区读取到内存时,会话可能需要等待,因为其他会话正在访问相同的缓冲区。数据库使用预定义的等待事件记录等待。这些事件按类别进行分组。

等待事件本身并不显示性能问题。例如,如果请求的数据不在内存中,则必须从磁盘读取数据。如果一个会话锁定行以进行更新,则另一个会话将等待解锁该行,以便它可以更新该行。提交需要等待对日志文件的写入完成。等待是数据库正常运行不可或缺的组成部分。

大量等待事件通常显示性能问题。在这种情况下,您可以使用等待事件数据来确定会话将时间花费在哪里。例如,如果通常在几分钟内运行的报告现在运行了数小时,则可以确定对总等待时间贡献最大的等待事件。如果您能确定顶级等待事件的原因,您有时就可以进行更改来提高性能。例如,如果您的会话正在等待已被另一个会话锁定的行,则可以结束锁定会话。

等待事件的关联根因都是相对笼统的,因为从等待事件我们还无法直接定位直接原因,只能初步明确一个大体的方向。如果我们想进一步定位问题,可以通过存在较严重问题的等待事件在pg_activity中对应的会话的其他字段,比如SQL语句等来进一步定位,或者根据等待事件关联的问题领域,再使用其他分析工具去做进一步定位。比如如果我们发现IO问题比较多,那么通过OS的iostat就可以进一步分析IO是否真正存在问题,IO问题到底在哪。

PostgreSQL 9.6动态视图pg_stat_activity新增了wait_event_type, wait_event的等待事件展示。通过查阅pg_stat_activity中的wait_event_type和wait_event我们可以了解到每个sql进程“当前”更详细的执行状态,无论是对于异常定位排查,还是系统优化来说都更加方便了。

当会话处于等待状态时,wait_event与wait_event_type非空,表示会话正在等待的类型。根据等待信息,可以了解当前会话的状态。

将来也可以通过插件的形式,掌握数据库在某个时间段内的等待事件统计,更好的诊断数据库的健康状态。

已有的插件如下

https://github.com/postgrespro/pg_wait_sampling

https://postgrespro.com/docs/enterprise/10/pg-wait-sampling

用于对等待事件进行采样。

所有等待事件

分类名称描述关联根因
ActivityArchiverMain归档进程的主循环等待后台进程,一般可忽略
ActivityAutoVacuumMainautovacuum启动进程的主循环等待后台进程,一般可忽略
ActivityBgWriterHibernate后台写入进程等待,正在休眠后台进程,一般可忽略
ActivityBgWriterMainbgwriter进程的主循环等待后台进程,一般可忽略
ActivityCheckpointerMainCKPT进程主循环等待后台进程,一般可忽略
ActivityLogicalApplyMain逻辑应用进程主循环等待后台进程,一般可忽略
ActivityLogicalLauncherMain逻辑启动进程主循环等待后台进程,一般可忽略
ActivityPgStatMain统计信息采集进程主循环等待后台进程,一般可忽略
ActivityRecoveryWalAll实例恢复时等待WAL数据流到达等待新的WAL数据
ActivityRecoveryWalStream在恢复时再次尝试检索 WAL 数据之前,等待任何类型的源(本地、存档或流)中的 WAL 数据不可用时等待新的WAL数据
ActivitySysLoggerMainsyslogger进程主循环等待后台进程,一般可忽略
ActivityWalReceiverMainWAL接收进程主循环等待后台进程,一般可忽略
ActivityWalSenderMainWAL发送进程主循环等待后台进程,一般可忽略
ActivityWalWriterMainWAL写进程主循环等待后台进程,一般可忽略
BufferPinBufferPin等待获得BUFFER的PIN锁热块、DBCACHE
ClientClientRead等待读取客户端输入未提交事务,空闲等待
ClientClientWrite等待向客户端发送数据网络、TOPSQL
ClientLibPQWalReceiverConnect在 WAL 接收器中等待建立与远程服务器的连接。网络、远程服务器性能
ClientLibPQWalReceiverReceive等待 WAL 接收器接收来自远程服务器的数据。网络、远程服务器性能
ClientSSLOpenServer等待SSL连接网络问题、SSL配置问题
ClientWalReceiverWaitStart等待启动进程发送初始化复制数据流网络问题、SSL配置问题
ClientWalSenderWaitForWAL进程正等待在 WAL 发件人进程中刷新预写日志 (WAL)主库性能问题
ClientWalSenderWriteData进程正在等待 WAL 发件人进程中处理来自预写日志 (WAL) 接收方的回复时的任何活动网络问题、主库性能问题
ExtensionExtension等待和extension交换数据或消息和扩展插件有关
IOBaseBackupRead等待基础备份读取文件磁盘IO
IOBaseBackupSync等待基础备份数据写入持久化存错磁盘IO
IOBaseBackupWrite等待基础备份数据写入文件磁盘IO
IOBufFileReadbffered文件读等待磁盘IO,热块,DBCACHE
IOBufFileWritebuffered文件写等待DBCACHE,磁盘IO
IOBufHashTableSearch缓冲区HASH 表查询缓冲区hash表查询
IOControlFileRead等待控制文件读磁盘IO
IOControlFileSync等待控制文件写入持久化存储磁盘IO
IOControlFileSyncUpdate等待控制文件修改到达持久化存储磁盘IO
IOControlFileWrite等待写入控制文件磁盘IO
IOControlFileWriteUpdate等待一个修改控制文件的写操作磁盘IO
IOCopyFileReadCOPY命令中的读等待磁盘IO
IOCopyFileWriteCOPY命令中的写等待磁盘IO
IODataFileExtend等待 relation数据文件扩展磁盘IO,磁盘容量
IODataFileFlush等待 relation数据文件写入持久存储磁盘IO
IODataFileImmediateSync等待一个立即同步 relation 数据文件写入持久存储磁盘IO
IODataFilePrefetch等待从Relation数据文件异步预读数据磁盘IO
IODataFileRead等待从relation数据文件读数据磁盘IO
IODataFileSync等待 relation 数据文件的变化写入持久存储磁盘IO
IODataFileTruncate等待relation 数据文件截断磁盘IO
IODataFileWrite等待 relation数据文件写磁盘IO
IODisableConnectFileReadHA锁分片逻辑文件读取磁盘IO,分布式事务
IODisableConnectFileSyncHA锁分片逻辑文件强制刷盘磁盘IO,分布式事务
IODisableConnectFileWriteHA锁分片逻辑文件写入磁盘IO,分布式事务
IODoubleWriteFileRead双写文件读,和双写区IO有关的读磁盘IO,DML操作
IODoubleWriteFileWrite双写文件写,与脏快写盘有关并发DML、DML操作
IODSMFillZeroWrite等待向一个动态共享内存文件写入字节0并行查询、系统并发、后台任务
IODWSingleFlushGetPos单页面双写文件查找可用位置磁盘IO,并发DML
IODWSingleFlushWrite刷新双写数据到永久存储磁盘IO,并发DML
IOLockFileAddToDataDirRead向数据目录中添加锁文件时的等待磁盘IO,读写权限,数据库配置错误
IOLockFileAddToDataDirSync向数据目录添加锁文件时刷新产生的等待磁盘IO,读写权限,数据库配置错误
IOLockFileAddToDataDirWrite向数据目录添加锁文件时写入产生的等待磁盘IO,读写权限,数据库配置错误
IOLockFileCreateRead向数据目录中添加锁文件前读取产生的等待磁盘IO,读写权限,数据库配置错误
IOLockFileCreateSync创建目录锁文件时同步到持久存储磁盘IO
IOLockFileCreateWRITE创建目录锁文件时写入数据磁盘IO
IOLockFileCreateWrite创建目录锁文件时写入数据磁盘IO
IOLockFileReCheckDataDirRead在重新检查数据目录中的锁文件时等待读取锁文件的操作磁盘IO,读写权限,数据库配置错误
IOLOGCTRL_SLEEP在等待一个用于日志控制的事件类型,发生在执行需要管理日志的操作时磁盘IO,数据库错误、并发执行
IOLogicalRewriteCheckpointSyncCKPT时等待逻辑重写映射到达持久化存储磁盘IO,检查点,逻辑复制
IOLogicalRewriteMappingSync逻辑重写时等待映射数据达到持久化存储磁盘IO、逻辑复制
IOLogicalRewriteMappingWrite逻辑重写时等待写映射数据达到持久化存储磁盘IO、逻辑复制
IOLogicalRewriteSync等待逻辑重写映射到达持久化存储磁盘IO、逻辑复制
IOLogicalRewriteTruncate等待映射数据截断到达持久化存储磁盘IO、逻辑复制
IOLogicalRewriteWrite等待一个逻辑重写映射写操作磁盘IO、逻辑复制
IOMPFL_INIT初始化max_page_flush_lsn,启动数据库时,设置每个节点的最大页面刷新日志序列号(LSN)的操作数据库启动
IOMPFL_READ在读取多进程文件日志(MPFL)时等待文件操作的完成磁盘IO,并发事务
IOMPFL_WRITE在写入多进程文件日志(MPFL)时等待文件操作的完成磁盘IO,并发事务
IOOBSList对象存储相关,遍历OBS目录磁盘IO
IOOBSRead对象存储相关,读取OBS对象磁盘IO
IOOBSWrite对象存储相关,写入OBS对象
IOPredoApply等待并行回放应用回放并行恢复、流复制
IOPredoProcessPending并行日志回放中当前记录回放等待其它记录回放完 成并行日志恢复
IORelationMapRead读取系统表到存储位置之间的映射文件磁盘IO、并发DDL、并发SQL执行
IORelationMapSync等待Relation Map文件写入持久存储磁盘IO
IORelationMapWrite等待Relation Map文件写磁盘IO、并发DML、并发DDL
IOReorderBufferReadRecorderBuffer管理中等待读操作(逻辑复制)磁盘IO、逻辑复制
IOReorderBufferWriteRecorderBuffer管理中等待写操作(逻辑复制)磁盘IO、逻辑复制
IOReorderLogicalMappingReadRecorderBuffer管理中等待逻辑映射文件读操作磁盘IO、逻辑复制
IOReplicationSlotRead等待复制槽控制文件的读操作磁盘IO、复制
IOReplicationSlotRestoreSync当复制槽控制文件从内存中复制时等待该文件写入持久存储磁盘IO、复制
IOReplicationSlotSync等待复制槽控制文件写入持久存储磁盘IO、复制
IOReplicationSlotWrite等待一个复制槽控制文件写操作磁盘IO、复制
IOSLRUFlushSync将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生磁盘IO、检查点、数据库关闭、并发事务
IOSLRURead后台进程正在等待从SLRU(Simple LRU)文件中读取数据。SLRU文件是一种用于存储固定大小的记录的简单缓冲区管理器,例如pg_clog、pg_subtrans和pg_multixact磁盘IO、并发事务、子事务嵌套
IOSLRUSync页写入后等待SLRU数据写入持久存储磁盘IO、并发事务、子事务嵌套
IOSLRUWrite等待 SLRU 页写操作磁盘IO、并发事务、子事务嵌套
IOSnapbuildRead后台进程正在等待从snapbuild文件中读取数据,snapbuild文件是一种用于存储逻辑复制的快照信息的文件,例如pg_logical/snapshots和pg_logical/replorigin_checkpoint磁盘IO、并发事务、逻辑复制
IOSnapbuildSync等待序列化的历史目录快照写入持久存储磁盘IO、并发事务、逻辑复制
IOSnapbuildWrite等待写入序列化的历史目录快照磁盘IO、并发事务、逻辑复制
IOStrategyGetBuffer表示后台进程正在等待从缓冲区管理器中获取一个可用的缓冲区页面。缓冲区管理器使用Clock Sweep算法来选择一个候选的缓冲区页面,如果该页面是干净的,或者可以被写回磁盘,那么就可以分配给后台进程。如果该页面是脏的,或者被其他进程锁定或引用,那么就需要继续扫描下一个页面。当缓冲区中的页面都很繁忙时,就会出现StrategyGetBuffer等待事件缓冲区配置、热块冲突、并发过大、检查点不合理
IOTimelineHistoryFileSync等待通过流式复制接收到的时间线历史文件写入持久存储磁盘IO,流复制
IOTimelineHistoryFileWrite流式复制时等待时间线文件上的一个写操作被收到磁盘IO,流复制
IOTimelineHistoryRead等待时间线历史文件上的读操作磁盘IO,流复制
IOTimelineHistorySync等待新创建的时间线历史文件写入持久存储磁盘IO,流复制
IOTimelineHistoryWrite等待新创建的时间线历史文件上的写操作磁盘IO,流复制
IOTwophaseFileRead等待两阶段状态文件读操作磁盘IO、分布式事务
IOTwophaseFileSync等待两阶段状态文件写入持久存储磁盘IO、分布式事务
IOTwophaseFileWrite等待两阶段状态文件写操作磁盘IO、分布式事务
IOUndoFileExtendUNDO文件扩展UNDO量增加
IOUndoFileFlushUNDO文件刷盘并发事务
IOUndoFilePrefetchUNDO文件预读一致性读
IOUndoFileReadUNDO文件读一致性读
IOUndoFileSyncUNDO文件同步并发事务
IOUndoFileWriteUNDO文件写并发事务
IOVersionFileWrite创建数据库时写入VERSION文件产生的等待磁盘IO
IOWALBootstrapSyncbootstrap的时候等待WAL文件写入持久存储磁盘IO、启动
IOWALBootstrapWritebootstrap的时候等待WAL页写操作磁盘IO、启动
IOWALBufferAccessWAL BUFFER访问并发事务
IOWALBufferFullWAL缓冲区满WAL并发、并发修改、IO性能
IOWALCopyRead当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待读操作磁盘IO、复制
IOWALCopySync当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待写入持久存储磁盘IO、复制
IOWALCopyWrite当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待写操作磁盘IO、复制
IOWALInitSync等待一个新初始化的WAL文件写入持久存储磁盘IO、检查点
IOWALInitWrite初始化新的WAL文件的时候等待写操作磁盘IO、检查点
IOWALRead等待WAL文件读磁盘IO
IOWALSenderTimelineHistoryRead在 walsender 时间线命令期间等待从时间线历史文件中读取磁盘IO、复制
IOWALSync等待 WAL 文件到达持久的存储空间磁盘IO、WAL量
IOWALSyncMethodAssignWAL 同步模式时等待数据写入持久存储磁盘IO、WAL量
IOWALWrite等待WAL文件写磁盘IO、WAL量
IPCBgWorkerShutdown等待后台worker关闭关闭实例
IPCBgWorkerStartup等待后台worker启动启动实例
IPCBtreePage等待继续并行 B 树扫描所需的页可用(并行索引扫描)并行执行
IPCExecuteGather执行Gather时等待子进程的活动表分析
IPCHash/Batch/AllocatingHASH JOIN 相关HASH JOIN
IPCHash/Batch/ElectingHASH JOIN 相关HASH JOIN
IPCHash/Batch/LoadingHASH JOIN 相关HASH JOIN
IPCHash/Build/AllocatingHASH JOIN 相关HASH JOIN
IPCHash/Build/ElectingHASH JOIN 相关HASH JOIN
IPCHash/Build/HashingInnerHASH JOIN 相关HASH JOIN
IPCHash/Build/HashingOuterHASH JOIN 相关HASH JOIN
IPCHash/GrowBatches/AllocatingHASH JOIN 相关HASH JOIN
IPCHash/GrowBatches/DecidingHASH JOIN 相关HASH JOIN
IPCHash/GrowBatches/ElectingHASH JOIN 相关HASH JOIN
IPCHash/GrowBatches/FinishingHASH JOIN 相关HASH JOIN
IPCHash/GrowBatches/RepartitioningHASH JOIN 相关HASH JOIN
IPCHash/GrowBuckets/AllocatingHASH JOIN 相关HASH JOIN
IPCHash/GrowBuckets/ElectingHASH JOIN 相关HASH JOIN
IPCHash/GrowBuckets/ReinsertingHASH JOIN 相关HASH JOIN
IPCLogicalSyncData等待逻辑复制远程服务发送数据,用于初始表同步逻辑复制
IPCLogicalSyncData等待逻辑复制的远程服务器发送用于初始表 同步的数据逻辑复制
IPCLogicalSyncStateChange等待逻辑复制远程服务改变状态逻辑复制
IPCLogicalSyncStateChange等待逻辑复制的远程服务器更改状态逻辑复制
IPCMessageQueueInternal等待其他进程连接到共享消息队列中并行执行
IPCMessageQueueInternal等待其他进程被挂接到共享消息队列并行执行
IPCMessageQueuePutMessage等待写一条协议消息到共享消息队列中并行执行
IPCMessageQueuePutMessage等待把一个协议消息写到一个共享消息队列并行执行
IPCMessageQueueReceive等待从共享消息队列中接收字节并行执行
IPCMessageQueueReceive等待从一个共享消息队列接收字节并行执行
IPCMessageQueueSend等待向共享消息队列发送字节并行执行
IPCMessageQueueSend等待向一个共享消息队列中发送字节并行执行
IPCParallelBitmapScan等待并行位图索引扫描初始化并行执行
IPCParallelCreateIndexScan等待并行 CREATE INDEX 工作者完成堆扫描并行创建索引
IPCParallelFinish等待并行查询worker结束计算并行执行
IPCParallelFinish等待并行工作者完成计算并行执行
IPCProcArrayGroupUpdate当事务结束时等待组leader清除transaction id长事务,并行执行
IPCPromote等待备用节点升级备库升级
IPCReplicationOriginDrop等待复制源变为非活动状态以被删除复制槽
IPCReplicationOriginDrop等待一个复制源头变得不活跃以便被删除复制槽
IPCReplicationSlotDrop等待复制槽变为非活动状态以被删除复制槽
IPCReplicationSlotDrop等待一个复制槽变得不活跃以便被删除复制槽
IPCSafeSnapshot等 待 一 个 用 于 READ ONLY DEFERRABLE 事务的快照,一般在串行事务隔离级别出现只读事务、串行隔离级别
IPCSyncRep同步复制时等待远程服务确认同步复制
Lockadvisory等待获取建议用户锁并发事务
Lockcstore_freespace对列存空闲空间加锁列存储
Lockextend等待扩展 relation结束文件扩展,并发写入
Lockfilenode对文件名加锁,文件扩展、TRUNCATE等并发执行,并发DDL
Lockfrozenid等待修改 pg_database.datfrozenxid和 pg_database.datminmxid.VACUUM、磁盘IO性能、数据库配置
Lockobject除了relation外的其他数据库对象(DB,SCHEMA等)DDL操作
Lockpage等待获取relation中的一个页面的锁热块、SHARED BUFFERS
Lockpartition保护分区元数据一致性的串行化等待DDL操作,并发执行
Lockpartition_seq对分区表的分区加锁DDL操作,并发执行
Lockrelation等待获得一个关系上的锁并发执行
Lockspeculative token等待获取推测插入锁热块、事务并发、热表
Locksubtransactionid对子事务号加锁子事务
Locktransactionid等待一个事务结束事务并发
Locktuple等待获取元组(tuple)锁热块、事务并发
Lockuserlock等待获取用户锁用户锁
Lockvirtualxid等待获取虚拟XID锁并发执行、活跃会话
LWLockAddinShmemInit等待共享内存中的内存空间管理共享内存初始化
LWLockAddinShmemInitLock等待共享内存中的内存空间管理共享内存初始化
LWLockAlterPortLock用于保护CN更改注册端口号的操作修改端口号
LWLockASPMappingLock用于管理ASP的hash表的并发访存活跃会话历史数据
LWLockasync等待async (notify) buffer IO完成活跃会话、磁盘IO性能
LWLockAsync Ctl用于保护Async buffer会话交互
LWLockAsyncCtlLock等待读取或者修改共享通知状态会话数,并发执行,并发事务
LWLockAsyncQueueLock等待读取或者修改通知消息会话数,并发执行,并发事务
LWLockAutoanalyzeLock自动分析自动分析
LWLockAutoFile等待修改postgresql.auto.conf 文件参数文件修改
LWLockAutoFileLock等待修改postgresql.auto.conf 文件参数文件修改
LWLockAutovacuum等待Autovacuum worker 或者launcher等待读取或者修改 autovacuum worker的当前状态VACUUM
LWLockAutovacuumLock等待Autovacuum worker 或者launcher等待读取或者修改 autovacuum worker的当前状态VACUUM
LWLockAutovacuumSchedule等待被选择做vacuum 的表仍然需要 vacuuming的确认信息VACUUM
LWLockAutovacuumScheduleLock等待被选择做vacuum 的表仍然需要 vacuuming的确认信息VACUUM
LWLockBackendRandomLock等待生成随机数随机数生成
LWLockBackgroundWorker等待读取后者修改后台worker进程的状态并行执行,后台进程启动,后台进程关闭
LWLockBackgroundWorkerLock等待读取后者修改后台worker进程的状态并行执行,后台进程启动,后台进程关闭
LWLockBadBlockStatHashLock访问坏块统计信息内存数据产生的等待坏块统计信息
LWLockBarrierLock确保主备节点达到一致性的屏障机制集群高可用
LWLockBlockchainVersionLock在不同节点间传递区块链同步信息区块链
LWLockBtreeVacuum等待读取或者修改vacuum相关的B树索引信息VACUUM,索引
LWLockBtreeVacuumLock等待读取或者修改vacuum相关的B树索引信息VACUUM,索引
LWLockbuffer_content等待在DB CACHE中读写数据页磁盘IO性能、热块、DBCACHE
LWLockbuffer_io等待数据页IO完成磁盘IO性能、检查点、热块
LWLockbuffer_mapping等待将数据块与缓冲池中的缓冲区关联DBCACHE,热块冲突
LWLockBufferContent等待在DB CACHE中读写数据页磁盘IO性能、热块、DBCACHE
LWLockBufferContent等待访问内存中的PAGEDBCACHE,热块冲突
LWLockBufferContentLock等待访问内存中的PAGEDBCACHE,热块冲突
LWLockBufferIOLock类似于Oracle的BBW的read by other sessionDBCACHE,热块冲突
LWLockBufferMapping等待将数据块与缓冲池中的缓冲区关联DBCACHE,热块冲突
LWLockBufFreelistLock会话试图从缓冲区中分配或者释放缓冲区产生的等待DBCACHE,热块冲突
LWLockBufMapping大量会话并发房屋shared buffer的HASH表产生的等待DBCACHE,热块冲突
LWLockBufMappingLock大量会话并发房屋shared buffer的HASH表产生的等待DBCACHE,热块冲突
LWLockCacheSlotMappingLock用于保护CU Cache全局信息列存
LWLockCaptureViewFileHashLock开启性能视图采集时,保护哈希表的并发访存性能采集
LWLockCBMParseXlogLock控制cbm文件(变更位图文件)的并发访存变更位图文件访问锁,增量备份
LWLockCheckpointerComm等待管理fsync 请求磁盘IO性能,并发写入
LWLockCheckpointerCommLock等待管理fsync 请求磁盘IO性能,并发写入
LWLockCheckpointLock等待执行CKPT并发事务
LWLockclog等待CLOG缓冲区的IO操作事务并发、磁盘IO性能
LWLockCLOG Ctl控制各个clog分区信息的并发访存并发事务,并发DML
LWLockCLogBufMappingLock控制共享clog页面映射的并发访存并发事务,并发DML
LWLockCLogControlLock等待读取或者修改事务状态并发事务
LWLockCLogTruncationLock等待执行txid_status 或者将可获得的最老的transaction id赋给它事务并发、磁盘IO性能、检查点配置
LWLockClusterRPLock用于加速集群的CCN中维护的集群负载数据的并发存取控制(新版本已废弃)集群负载控制
LWLockcommit_timestamp等待 commit timestamp buffer IO操作完成事务并发、参数配置、磁盘IO性能
LWLockCommitTs等待 commit timestamp buffer IO操作完成事务并发、参数配置、磁盘IO性能
LWLockCommitTsBuffer为一个commit timestamp SLRU BUFFER等待IO完成事务并发、参数配置、磁盘IO性能
LWLockCommitTsControlLock等待读取或者修改事务提交时间戳事务提交,页控制相关,DB CACHE,并发事务,
LWLockCommitTsLock等待读取或者修改事务时间戳的最后值集合事务提交,并发事务,
LWLockCommitTsSLRU等待访问commit timestamp SLRU CACHE事务并发、参数配置、磁盘IO性能
LWLockConsumerStateLock用于时序consumer工作状态更新时序数据压缩
LWLockControlFile等待读取或者修改控制文件,或者创建一个新的WAL文件DML,并发写入,磁盘IO性能
LWLockControlFileLock等待读取或者修改控制文件,或者创建一个新的WAL文件DML,并发写入,磁盘IO性能
LWLockCSNBufMappingLock控制共享csnlog页面映射的并发访存全局事务,并发事务
LWLockCSNLOG Ctl控制各个csnlog分区信息的并发访存全局事务,并发事务
LWLockCsnMinLock控制csn min信息的并发访存并发事务,MVCC
LWLockCStoreColspaceCacheLock用于保护列存表的CU空间分配列存储缓冲
LWLockCStoreCUCacheSweepLock用于列存CU Cache循环淘汰列存储缓冲
LWLockCUSlotListLock用于存储列存储分布表的数据分布信息,便于为优化器编译提供数据列存储、SQL解析
LWLockDataCacheLock列存模式下CU的并发修改锁列存储,DML
LWLockDataFileIdCacheLock列存模式下CU的并发修改锁列存储,DML
LWLockDataSyncRepLock用于在主备复制时保护数据页同步信息DML,并发事务、集群同步
LWLockDelayDDLLock串行化DDL操作的锁并发DDL
LWLockDeleteCompactionLockVACUUM FULL时需要申请的锁VACUUM
LWLockDeleteConsumerLockSQL执行过程中进行消费者端操作时需要的锁等待。分布式执行、并行执行等都会产生消费者端操作分布式执行,并行执行
LWLockDfsConnectorCacheLock用于保护缓存HDFS连接的句柄的全局哈希表hdfs
LWLockDfsSpaceCacheLock用于控制HDFS表导入时文件ID单调递增hdf、数据导入
LWLockDfsUserLoginLock用于保护HDFS用户信息的全局链表hdfs、用户登录
LWLockDnUsedSpaceHashLockDN节点统计使用空间的排他锁,避免相同的统计任务冲突DN节点、空间使用统计
LWLockDoubleWriteLock保护双写缓冲的闩锁脏块写
LWLockdummyServerInfoCacheLock用于保护缓存加速集群连接信息的全局哈希表登录、查询连接信息
LWLockDWSingleFlushFirstLockDn节点CKPT增量刷脏块CKPT增量刷脏块
LWLockDWSingleFlushPosLockDn节点刷新脏块CKPT增量刷脏块
LWLockDWSingleFlushWriteLockDn节点刷新脏块CKPT增量刷脏块
LWLockDynamicSharedMemoryControl等待读取或者修改动态共享内存状态动态共享内存分配、释放
LWLockDynamicSharedMemoryControlLock等待读取或者修改动态共享内存状态动态共享内存分配、释放
LWLockExtensionConnectorLibLock连接池建立时加载动态链接库的等待事件LOGON
LWLockFdwPartitionCacheLock多个并发会话并发访问外部表分区缓冲外部表并发访问
LWLockFileStatLock用于保护存储统计文件信息的数据结构访问文件统计信息
LWLockFullBuildXlogCopyStartPtrLock保护全量备份时的日志起始点的轻量级锁全量备份
LWLockGeneralExtendedLock使用扩展的并发量较大扩展
LWLockGlobalPrevHashLock全局前置HASH表操作并发引发,和缓冲、配置信息等全局信息的访问有关各类缓冲访问
LWLockGlobalSeqLock并发访问全局序列号引发的等待序列号
LWLockGlobalWorkloadLock全局WORKLOAD统计信息的访问AWR
LWLockGPCClearLock并发清除全局计划缓冲计划缓冲、SQL解析
LWLockGPCCommitLock用于保护全局Plan Cache hash表的添加操作SQL解析
LWLockGPCMappingLock用于全局Plan Cache缓存管理SQL解析、高并发执行
LWLockGPCTimelineLock用于保护全局Plan Cache hash表检查Timeline的操作SQL解析(已废弃)
LWLockGTMHostInfoLock已废弃
LWLockgtt_shared_ctl已废弃
LWLockHadrSwitchoverLock主备故障切换主备切换
LWLockHypoIndexLock用于保护假索引的创建和删除虚拟索引、SQL优化
LWLockInstanceRealTLock用于保护共享实例统计信息hash表的更新操作指标采集
LWLockInstanceTimeLock用于获取实例中会话的时间信息指标采集、会话数过多
LWLockInstrUserLockId用户登录登出数据库用户登录登出
LWLockInstrWorkloadLock保护负载管理统计信息的内存hash表访问指标采集
LWLockIOStatLock保护IO资源统计信息的锁指标采集
LWLockJobShmemLock用于定时任务功能中保护定时读取的全局变量定时任务执行
LWLockLLVMDumpIRLock用于导出动态生成函数所对应的汇编语言SQL解析,LLVM
LWLockLLVMParseIRLock用于在查询开始处从IR文件中编译并解析已写好的IR函数SQL解析,LLVM
LWLocklock_manager在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组事务并发
LWLockLockFastPath等待更新进程的FAST PATH LOCK信息事务并发
LWLockLockManager在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组事务并发
LWLockLockMgrLock在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组事务并发
LWLockLogicalReplicationSlotPersistentDataLock用于保护逻辑复制过程中复制槽位的数据流复制
LWLockLogicalRepWorkerLock等待逻辑复制的WORKER结束任务流复制
LWLockLsnXlogChkFileLock用于串行更新特定结构中记录的主备机的xlog flush位置点,保证主备服务器的数据一致性流复制
LWLockLWTRANCHE_ACCOUNT_TABLE控制账户锁定状态hash表的并发读写安全控制、登录
LWLockMatviewSeqnoLock物化视图序号锁等待物化视图操作相关
LWLockMaxPageFlushLsnFileLock用于保护最大页面刷新LSN文件的并发更新并发DML
LWLockMetaCacheLock用于保护MetaCache并发DML,并发解析
LWLockMetaCacheSweepLock保护元数据循环淘汰缓冲配置、并发解析
LWLockMPFLLOCK
LWLockmultixact_member等待 multixact_member buffer IO操作完成事务并发,磁盘IO性能
LWLockmultixact_offset等待 multixact offset buffer IO操作完成事务并发,磁盘IO性能
LWLockMultiXactGen等待读取或者修改共享组合事务( multixact)状态并发事务
LWLockMultiXactGenLock等待读取或者修改共享组合事务( multixact)状态并发事务
LWLockMultiXactMember Ctl
LWLockMultiXactMemberBuffer为一个multixact SLRU buffer等待IO并发事务
LWLockMultiXactMemberControlLock等待读取或者修改组合事务(multixact) 成员映射信息并发事务
LWLockMultiXactMemberSLRU等待访问multixact SLRU CACHE并发事务
LWLockMultiXactOffset Ctl
LWLockMultiXactOffsetBuffer为一个multixact offset SLRU buffer等待IO并发事务
LWLockMultiXactOffsetControlLock等待读取或者修改组合事务(multixact) 偏移映射信息并发事务
LWLockMultiXactOffsetSLRU等待访问multixact offset SLRU CACHE并发事务
LWLockMultiXactTruncation等待清空multixact 信息并发事务
LWLockMultiXactTruncationLock等待读取或者截断 multixact 信息事务并发,大事务
LWLockNGroupMappingLock对于保护nodegroup哈希表的单个分桶并发修改加锁,用于全局sequenceSEQUENCE,分布式
LWLockNodeTableLock用于保护存放数据库节点信息的共享结构,用于保护存放CN和DN节点信息的共享结构1集群管理
LWLockNormalizedSqlLock用于SQL规范化转换并发解析
LWLockNotifyBuffer等待Notify buffer的SLRU缓冲区上的IOIPC,IO性能
LWLockNotifyQueue等待读取或者修改Notify消息IPC,并发DDL
LWLockNotifyQueueTail等待修改通知消息存储限制ipc
LWLockNotifyQueueTailLock等待修改通知消息存储限制ipc
LWLockNotifySLRU等待访问Notify SLRU缓冲ipc
LWLockOBSGetPathLock用于避免对obs路径的写写并发和读写并发,和对象存储有关对象存储
LWLockOBSRuntimeLock用于获取环境变量,如GASSHOME环境变量
LWLockOidGen等待分配或者赋予一个 OID并发DDL
LWLockOidGenLock等待分配或者赋予一个 OID并发DDL
LWLockoldserxid等待oldserxid buffer IO完成磁盘IO性能,事务并发
LWLockOldSerXid SLRU Ctl保护old xids的slru bufferMVCC,并发事务
LWLockOldSerXidLock等待读取或记录冲突的可序列化事务事务隔离级别,并发事务
LWLockOldSnapshotTimeMap等待读取或者修改旧的snapshot控制信息事务并发,SAVEPOINT
LWLockOldSnapshotTimeMapLock等待读取或者修改旧的snapshot控制信息事务并发,SAVEPOINT
LWLockOperatorHistLock用于避免并发访问或者修改记录算子级历史数据的全局结构并发解析,并发执行
LWLockOperatorRealTLock用于避免并发访问或者修改记录算子级实时数据的全局结构并发解析,并发执行
LWLockparallel_append在 Parallel Append 计划执行期间等待选择下一个子计划并发APPEND写入
LWLockparallel_hash_join在 Parallel Hash 计划执行期间等待分配或交换一块内存或者更新计数器并发HASH JOIN
LWLockparallel_query_dsa等待并行查询动态共享内存分配锁
LWLockParallelAppend在 Parallel Append 计划执行期间等待选择下一个子计划并发APPEND写入
LWLockParallelHashJoin在 Parallel Hash 计划执行期间等待分配或交换一块内存或者更新计数器并发HASH JOIN
LWLockParallelQueryDSA等待并行查询动态共享内存分配锁并行执行
LWLockPartIdCacheLock分区表的数量过多或者被访问得过于频繁分区表
LWLockPartOidCacheLock分区表的数量过多或者被访问得过于频繁分区表
LWLockPercentileLock全局百分位缓冲区争用,全局PercentileBuffer是GaussDB中的一个全局变量,用于存储每个算子的执行时间的百分位数并发执行,SQL解析
LWLockPerSessionDSA等待并行查询动态共享内存分配锁并行执行
LWLockPerSessionRecordType并行查询中等待匿名记录类型的相关信息(比如CTE)并行执行
LWLockPerXactPredicateList并行查询中等待可序列化的对象的谓词锁定产生的等待并行执行
LWLockPgfdwLock外部访问引发的等待外部表
LWLockPGPROCLock访问进程数组产生的等待性能监控、并发登录
LWLockPgStatsData访问统计信息区域的等待性能监控
LWLockPgStatsDSA访问统计信息区域的等待性能监控
LWLockPgStatsHash访问统计信息区域的等待性能监控
LWLockPLdebuggerPL/PGSQL跟踪PL/PGSQL跟踪
LWLockPldebugLockPL/PGSQL跟踪PL/PGSQL跟踪
LWLockPoolerLock试图从数据库连接处中获取或者释放一个连接引发的等待并发登录,会话数
LWLockpredicate_lock_manager等待添加或检查谓词锁信息并发执行
LWLockPredicateLockManager等待添加或检查谓词锁信息并发执行
LWLockPredicateLockMgrLock当一个进程试图访问可序列化事务使用的谓词锁定信息时产生的,为了保护谓词锁定管理器的数据结构并发执行
LWLockproc等待读取或者修改快速路径锁的信息并发锁
LWLockProcArray等待获得snapshot或者在会话结束时清理XID,或者查询XID并发事务
LWLockProcArrayLock等待获得snapshot或者在会话结束时清理XID,或者查询XID并发事务
LWLockProcXactMappingLock访问进程数组与事务数组之间的关系产生的等待并发事务
LWLockPruneDirtyQueueLock清理脏页队列产生的等待数据库配置,脏页
LWLockRcvWriteLock防止并发调用WalDataRcvWrite流复制
LWLockRelationMapping等待更新用于存储目录到文件节点映射的关系映射文件DDL操作
LWLockRelationMappingLock等待更新用于存储目录到文件节点映射的关系映射文件DDL操作
LWLockRelCacheInit等待读写 relation cache初始化文件(pg_internal.init)磁盘IO性能,数据库中表的数量过多
LWLockRelCacheInitLock等待读写 relation cache初始化文件(pg_internal.init)磁盘IO性能,数据库中表的数量过多
LWLockRelfilenodeReuseLock避免错误地取消已重用的列属性文件的链接列存储
LWLockreplication_origin等待读取或者修改复制进度数据库复制
LWLockreplication_slot_io等待复制槽上的IO数据库复制、磁盘IO性能
LWLockReplicationOrigin等待设置、删除或使用复制源流复制
LWLockReplicationOriginLock等待设置、删除或使用复制源流复制
LWLockReplicationSlotAllocation等待分配或者始放一个复制槽流复制,复制槽
LWLockReplicationSlotAllocationLock等待分配或者始放一个复制槽流复制,复制槽
LWLockReplicationSlotControl等待读取或者修改复制槽状态流复制,复制槽
LWLockReplicationSlotControlLock等待读取或者修改复制槽状态流复制,复制槽
LWLockReplicationSlotIO等待复制SLOT上的IO流复制,复制槽
LWLockReplicationSlotLock并发访问复制槽流复制,复制槽
LWLockResourcePoolHashLock等待资源池HASH数据结构,一般是在分配池中连接并发执行,并发登录
LWLockRestartPointQueueLock备机恢复性能存在问题流复制
LWLockRoleIdLock
LWLockRoleIdPartLock
LWLockRollbackReqHashLock管理共享内存中存储回滚请求信息的哈希表的并发访存回滚操作
LWLockRowPageReplicationLock用于管理行存储的数据页复制,当数据页在复制时,防止被篡改副本复制
LWLockRPNumberLock用于加速openGauss的数据库节点对正在执行计划的任务线程的计数并行执行
LWLockSearchServerLibLock用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁GPU加速,加载动态链接库
LWLockSegmentHeadPartitionLock保护段页式segment头部元信息的分区锁DDL,分区表
LWLockSerialBuffer等待一个用于存储可串行化事务冲突信息的SLRU缓冲区上的IOIO
LWLockSerializableFinishedList等待访问serializable 事务完成清单事务隔离级别,并发事务
LWLockSerializableFinishedListLock等待访问serializable 事务完成清单事务隔离级别,并发事务
LWLockSerializablePredicateLockList等待在一个被serializable事务锁锁定的清单上做操作事务隔离级别,并发事务
LWLockSerializablePredicateLockListLock等待在一个被serializable事务锁锁定的清单上做操作事务隔离级别,并发事务
LWLockSerializableXactHashLock等待检索或者存储serializable事务相关的信息事务隔离级别,并发事务
LWLockSerialSLRU等待一个用于存储可串行化事务冲突信息的SLRU缓冲区IO
LWLockSessionHistLock用于避免并发访问或者修改记录query级历史数据的全局结构GSP
LWLockSessionRealTLock用于避免并发访问或者修改记录query级实时数据的全局结构GSP
LWLockSharedTidBitmap并行BITMAP INDEX SCAN时等待共享TID的访问闩锁并行执行
LWLockSharedTupleStore并行查询时等待访问数据块并行执行
LWLockShmemIndex等待在共享内存中查找或者分配空间共享内存操作,并发
LWLockShmemIndexLock等待在共享内存中查找或者分配空间共享内存操作,并发
LWLockSInvalRead等待从共享失效队列中检索或删除消息并发SQL
LWLockSInvalReadLock等待从共享失效队列中检索或删除消息并发SQL
LWLockSInvalWrite等待在共享失效队列中添加消息并发SQL
LWLockSInvalWriteLock等待在共享失效队列中添加消息并发SQL
LWLockStartBlockMappingLock用于globalstat从pgstat获取startblockarray等信息PGSTATE
LWLockStreamingEngineConnLock流引擎连接锁流引擎
LWLockStreamingEngineExecLock流引擎执行所流引擎
LWLocksubtrans等待 subtransaction buffer IO操作完成事务并发,磁盘IO性能
LWLockSubtransBuffer等待 subtransaction buffer IO操作完成事务并发,磁盘IO性能
LWLockSubtransControlLock等待读取或者修改子事务信息并发事务,子事务,SAVEPOINT
LWLockSubtransSLRU等待 subtransaction buffer并发访问事务并发,磁盘IO性能
LWLockSyncPaxosLock保护paxos同步队列的并发访存副本复制
LWLockSyncRep等待读取或更新有关同步复制的信息流复制,同步复制
LWLockSyncRepLock等待读取或更新有关同步复制的信息流复制,同步复制
LWLockSyncScan等待获取表上扫描的开始位置以便于进行同步扫描表或索引扫描操作
LWLockSyncScanLock等待获取表上扫描的开始位置以便于进行同步扫描表或索引扫描操作
LWLockTablespaceCreate等待创建或者删除表空间表空间操作,磁盘IO性能,文件系统
LWLockTablespaceCreateLock等待创建或者删除表空间表空间操作,磁盘IO性能,文件系统
LWLocktbm等待 TBM 共享迭代器锁,一般发生在并行bitmap扫描中,等待TID BITMAP并发执行、索引扫描
LWLockTDEKeyCacheLock控制透明加密数据密钥缓存的并发读写透明加密
LWLockTsTagsCacheLock用于时序tag缓存管理时序数据相关
LWLockTwoPhaseState等待读取或者修改prepared transaction的状态分布式事务
LWLockTwoPhaseStateLock等待读取或者修改prepared transaction的状态分布式事务
LWLockTwoPhaseStatePartLock两阶段提交相关的轻量级锁等待两阶段提交相关的轻量级锁等待
LWLockUHeapStatLock保护ustore统计信息的并发访存ustore统计信息
LWLockUndoPerZoneLock保护每个undozone内信息的并发访存UNDO,USTORE
LWLockUndoSpaceLock保护undospace的并发访存UNDO,USTORE
LWLockUndoZoneLock保护undozone的并发访存UNDO,USTORE
LWLockUniqueSqlEvictLock开启Unique SQL回收时,保护哈希表的并发访存SQL统计信息
LWLockUniqueSQLMappingLock用于保护uniquesql hash tableSQL统计信息
LWLockUnlinkRelHashTblLock保护共享内存中待删除文件哈希表的并发访存文件删除
LWLockUspagrpMappingLock
LWLockWaitCountHashLock用于保护用户语句计数功能场景中的共享结构PGSTAT相关信息统计
LWLockwal_insert等待将WAL插入缓冲区事务并发、WALBUFFER
LWLockWALBufferInitWait初始化WAL BUFFER初始化WAL BUFFER
LWLockWALBufMapping等待替换 WAL 缓冲区中的页面WAL BUFFER,DML,并发写入
LWLockWALBufMappingLock等待替换 WAL 缓冲区中的页面WAL BUFFER,DML,并发写入
LWLockWALFlushWait等待WAL文件强制刷盘等待WAL强制刷盘
LWLockWALInitSegment初始化WAL文件初始化WAL文件
LWLockWALInsert用于避免与其它WAL插入操作并发执行REDO并发,并发DML,并发事务
LWLockWALInsertLock用于避免与其它WAL插入操作并发执行REDO并发,并发DML,并发事务
LWLockWALWrite等待从WAL缓冲区中写数据到磁盘DML,并发写入,磁盘IO性能
LWLockWALWriteLock等待从WAL缓冲区中写数据到磁盘DML,并发写入,磁盘IO性能
LWLockWALWritePaxosLock保护向paxos复制组件写wal日志的并发顺序集群副本复制
LWLockWorkloadCGroupHashLock用于避免并发访问或者修改Cgroup信息构成的哈希表负载采集
LWLockWorkloadIoStatHashLock用于避免并发访问或者修改用于统计当前数据库节点的IO信息的哈希表负载采集
LWLockWorkloadIOUtilLock用于保护记录iostat,CPU等负载信息的结构负载采集
LWLockWorkloadNodeGroupLock用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表负载采集
LWLockWorkloadRecordLock用于避免并发访问或修改在内存自适应管理时对数据库主节点收到请求构成的哈希表负载采集
LWLockWorkloadSessionInfoLock保护负载管理session info内存hash表访问负载采集
LWLockWorkloadStatHashLock用于避免并发访问或者修改包含数据库主节点的SQL请求构成的哈希表负载采集
LWLockWorkloadUserInfoLock用于避免并发访问或修改负载管理的用户信息哈希表负载采集
LWLockWrapLimitsVacuum等待修改multixact消耗和transaction id的限制事务并发,磁盘IO性能,VACUUM、维护WORKER配置
LWLockWrapLimitsVacuumLock等待修改multixact消耗和transaction id的限制事务并发,磁盘IO性能,VACUUM、维护WORKER配置
LWLockXactBuffer等待更改事务状态数据,事务状态管理器性能有问题或者IO有问题时会出现该等待并发事务,io性能
LWLockXactSLRU等待更改事务状态数据,事务状态管理器性能有问题时会出现该等待并发事务
LWLockXactTruncation更新事务状态时的等待,出现在清理过期XID,CKPT等并发事务,VACUUM
LWLockXidGen等待生成事务XID并发事务
LWLockXidGenLock等待生成事务XID并发事务
LWLockXlogRemoveSegLock保护Xlog段文件的回收操作并发事务,WAL配置
STATUSacquire lock申请锁申请锁
STATUSacquire lwlock申请轻量级锁申请轻量级锁
STATUSanalyze分析操作表分析操作
STATUScancel query取消某连接上正在执行的SQL语句取消某连接上正在执行的SQL语句
STATUScreate index索引创建索引创建
STATUSflush data等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值集群同步
STATUSget conn获取到其他节点的连接获取到其他节点的连接
STATUSHashAgg - build hashHASH JOINHASH JOIN
STATUSHashAgg - write fileHASH JOINHASH JOIN
STATUSHashJoin - build hashHASH JOINHASH JOIN
STATUSHashJoin - write fileHASH JOINHASH JOIN
STATUSHashSetop - build hashHASH JOINHASH JOIN
STATUSHashSetop - write fileHASH JOINHASH JOIN
STATUSMaterial物化视图操作物化视图操作
STATUSMaterial - write file物化视图操作物化视图操作
STATUSNestLoopNESTED LOOP表连接NESTED LOOP表连接
STATUSpooler create conn等待pooler建立连接,当前正在与nodename 指定节点建立连接,且仍有N个连接等待建 立等待pooler建立连接
STATUSreset cmd
STATUSset cmd当前节点上执行SET命令在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在nodename指定节点上执 行。
STATUSSort排序操作排序操作
STATUSSort - write file物理排序操作中的文件写入物理排序操作中的文件写入
STATUSstop query停止某连接上正在执行的查询停止某连接上正在执行的查询
STATUSstream get conn初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象流复制
STATUSsynchronize quitstream plan结束时,等待stream线程组内的线程统一退出流复制
STATUSvacuumVACUUM操作VACUUM操作
STATUSvacuum full全量VACUUM操作全量VACUUM
STATUSwait active statement等待作业执行,正在资源负载管控中资源管理
STATUSwait cmd等待完成读取网络通信包等待完成读取网络通信包
STATUSwait data sync等待完成数据页到备机的同步流复制
STATUSwait data sync queue等待把行存的数据页或列存的CU放入同步队列流复制
STATUSwait io等待IO等待IO
STATUSwait memory等待内存获取流复制
STATUSwait node等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回流复制
STATUSwait pooler abort conn等待pooler完成终止连接等待pooler完成终止连接
STATUSwait pooler clean conn等待pooler完成清理连接等待pooler完成清理连接
STATUSwait pooler get conn等待pooler完成获取连接等待pooler完成获取连接
STATUSwait producer ready初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态流复制
STATUSwait reserve tdustore itl等待ustore itl等待
STATUSwait stream group destroy流复制流复制
STATUSwait sync consumer next stepStream算子等待消费者执行流复制
STATUSwait sync producer next stepStream算子等待生产者执行流复制
STATUSwait transaction sync等待xid指定事务同步流复制
STATUSwait wal sync等待特定LSN的wal log完成到备机的同步流复制
TimeoutBaseBackupThrottle在基础备份时等待限流备份
TimeoutPgSleep进程处于 pg_sleep等待
TimeoutRecoveryApplyDelay在恢复时因为WAL延迟到达产生的等待实例恢复

等待事件详解

等待事件定义
Client:ClientRead当 Aurora PostgreSQL 等待从客户端接收数据时,会发生此事件。
Client:ClientWrite当 Aurora PostgreSQL 等待将数据写入客户端时,会发生此事件。
CPU当线程在 CPU 中处于活动状态或正在等待 CPU 时,会发生此事件。
IO:BufFileRead 和 IO:BufFileWrite这些事件发生在 Aurora PostgreSQL 创建临时文件时。
IO:DataFileRead当由于分页在共享内存中不可用,连接等待后端进程从存储中读取所需分页时,会发生此事件。
IO:XactSync当数据库等待 Aurora 存储子系统确认常规事务的提交,或者准备好的事务的提交或回滚时,会发生此事件。
IPC:DamRecordTxAck当 Aurora PostgreSQL 在使用数据库活动流的会话中生成活动流事件,然后等待该事件变为持久事件时,会发生此事件。
Lock:advisory当 PostgreSQL 应用程序使用锁定来协调多个会话之间的活动时,会发生此事件。
Lock:extend当后端进程正在等待锁定关系以对其进行扩展,而另一个进程出于同样目的锁定该关系时,会发生此事件。
Lock:Relation当查询等待获取当前被另一个事务锁定的表或视图上的锁定时,会发生此事件。
Lock:transactionid当事务正在等待行级锁定时,会发生此事件。
Lock:tuple在后端进程等待获取元组锁定时,会发生此事件。
LWLock:buffer_content (BufferContent)当某个会话等待读取或写入内存中的某个数据页面,而另一个会话正锁定该页面以进行写入时,会发生此事件。
LWLock:buffer_mapping当会话正在等待将数据块与共享缓冲池中的缓冲区关联起来时,会发生此事件。
LWLock:BufferIO (IPC:BufferIO)当 Aurora PostgreSQL 或 RDS for PostgreSQL 正在等待其他进程在同时尝试访问页面时完成输入/输出 (I/O) 操作时,会发生此事件。
LWLock:lock_manager当 Aurora PostgreSQL 引擎维护共享锁的内存区域以便在无法使用快速路径锁时分配、检查和取消分配锁时,会发生此事件。
LWLock:MultiXact当 Aurora PostgreSQL 保持会话处于打开状态以完成涉及表中同一行的多个事务时,就会发生此类事件。等待事件表示多事务处理的哪个方面正在生成等待事件,即 LWLock:MultiXactOffsetSLRU、LWLock:MultiXactOffsetBuffer、LWLock:MultiXactMemberSLRU 或 LWLock:MultiXactMemberBuffer。
Timeout:PgSleep当服务器进程调用 pg_sleep 函数并且正在等待睡眠超时过期时,会发生此事件。

LWLock - buffer_content

当某个会话等待读取或写入内存中的某个数据页面,而另一个会话正锁定该页面以进行写入时,会发生 LWLock:buffer_content 事件。在 Aurora PostgreSQL 13 及更高版本中,此等待事件被称为 BufferContent

上下文

要读取或操作数据,PostgreSQL 会通过共享内存缓冲区访问数据。要从缓冲区读取,进程会在共享模式下获取缓冲区内容的轻量级锁 (LWLock)。要写入缓冲区,它会在独占模式下获得该锁。共享锁允许其他进程同时获取对该内容的共享锁。独占锁可防止其他进程获取对该内容的任何类型的锁定。

LWLock:buffer_content (BufferContent) 事件表示多个进程试图获取对特定缓冲区的内容的锁定。

等待次数增加的可能原因

LWLock:buffer_content (BufferContent) 事件的发生率超过正常(可能表示性能问题)时,典型原因包括以下几点:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复