PG中的等待事件列表

0    138    4

Tags:

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

简介

等待事件的关联根因都是相对笼统的,因为从等待事件我们还无法直接定位直接原因,只能初步明确一个大体的方向。如果我们想进一步定位问题,可以通过存在较严重问题的等待事件在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

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

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

所有等待事件

分类名称描述关联根因
LWLockShmemIndexLock等待在共享内存中分配内存共享内存操作,并发
LWLockOidGenLock等待分配OID并发DDL
LWLockXidGenLock等待生成事务XID并发事务
LWLockProcArrayLock等待获得snapshot或者在会话结束时清理XID并发事务
LWLockSInvalReadLock等待从共享缓冲失效队列中检索或删除消息shared buffers,并发SQL
LWLockSInvalWriteLock等待在共享缓冲失效队列中添加消息shared buffers,并发SQL
LWLockWALBufMappingLock等待替换 WAL 缓冲区中的页面WAL BUFFER,DML,并发写入
LWLockWALWriteLock等待从WAL缓冲区中写数据到磁盘DML,并发写入,磁盘IO性能
LWLockControlFileLock等待读取或者修改控制文件,或者创建一个新的WAL文件DML,并发写入,磁盘IO性能
LWLockCheckpointLock等待执行CKPT并发事务
LWLockCLogControlLock等待读取或者修改事务状态并发事务
LWLockSubtransControlLock等待读取或者修改子事务信息并发事务,子事务,SAVEPOINT
LWLockMultiXactGenLock等待读取或者修改共享组合事务( multixact)状态并发事务,共享组,SAVEPOINT
LWLockMultiXactOffsetControlLock等待读取或者修改组合事务(multixact) 偏移映射信息并发事务
LWLockMultiXactMemberControlLock等待读取或者修改组合事务(multixact) 成员映射信息并发事务
LWLockRelCacheInitLock等待读写 relation cache初始化文件(pg_internal.init)磁盘IO性能,数据库中表的数量过多
LWLockCheckpointerCommLock等待管理fsync 请求磁盘IO性能,并发写入
LWLockTwoPhaseStateLock等待读取或者修改prepared transaction的状态分布式事务
LWLockTablespaceCreateLock等待创建或者删除表空间表空间操作,磁盘IO性能,文件系统
LWLockBtreeVacuumLock等待读取或者修改vacuum相关的B树索引信息VACUUM,索引
LWLockAddinShmemInitLock等待共享内存中的内存空间管理共享内存初始化
LWLockAutovacuumLock等待Autovacuum worker 或者launcher等待读取或者修改 autovacuum worker的当前状态VACUUM
LWLockAutovacuumScheduleLock等待被选择做vacuum 的表仍然需要 vacuuming的确认信息VACUUM
LWLockSyncScanLock等待获取表上扫描的开始位置以便于进行同步扫描表或索引扫描操作
LWLockRelationMappingLock等待更新用于存储目录到文件节点映射的关系映射文件DDL操作
LWLockAsyncCtlLock等待读取或者修改共享通知状态会话数,并发执行,并发事务
LWLockAsyncQueueLock等待读取或者修改通知消息会话数,并发执行,并发事务
LWLockSerializableXactHashLock等待检索或者存储serializable事务相关的信息事务隔离级别,并发事务
LWLockSerializableFinishedListLock等待访问serializable 事务完成清单事务隔离级别,并发事务
LWLockSerializablePredicateLockListLock等待在一个被serializable事务锁锁定的清单上做操作事务隔离级别,并发事务
LWLockOldSerXidLock等待读取或记录冲突的可序列化事务事务隔离级别,并发事务
LWLockSyncRepLock等待读取或更新有关同步复制的信息流复制,同步复制
LWLockBackgroundWorkerLock等待读取后者修改后台worker进程的状态并行执行,后台进程启动,后台进程关闭
LWLockDynamicSharedMemoryControlLock等待读取或者修改动态共享内存状态动态共享内存分配、释放
LWLockAutoFileLock等待修改postgresql.auto.conf 文件参数文件修改
LWLockReplicationSlotAllocationLock等待分配或者始放一个复制槽流复制,复制槽
LWLockReplicationSlotControlLock等待读取或者修改复制槽状态流复制,复制槽
LWLockCommitTsControlLock等待读取或者修改事务提交时间戳事务提交,页控制相关,DB CACHE,并发事务,
LWLockCommitTsLock等待读取或者修改事务时间戳的最后值集合事务提交,并发事务,
LWLockReplicationOriginLock等待设置、删除或使用复制源流复制
LWLockMultiXactTruncationLock等待读取或者截断 multixact 信息事务并发,大事务
LWLockOldSnapshotTimeMapLock等待读取或者修改旧的snapshot控制信息事务并发,SAVEPOINT
LWLockBackendRandomLock等待生成随机数随机数生成
LWLockLogicalRepWorkerLock等待逻辑复制的WORKER结束任务流复制
LWLockCLogTruncationLock等待执行txid_status 或者将可获得的最老的transaction id赋给它事务并发、磁盘IO性能、检查点配置
LWLockWrapLimitsVacuumLock等待修改multixact消耗和transaction id的限制事务并发,磁盘IO性能,VACUUM、维护WORKER配置
LWLockNotifyQueueTailLock等待修改通知消息存储限制
LWLockclog等待CLOG缓冲区的IO操作事务并发、磁盘IO性能
LWLockcommit_timestamp等待 commit timestamp buffer IO操作完成事务并发、参数配置、磁盘IO性能
LWLocksubtrans等待 subtransaction buffer IO操作完成事务并发,磁盘IO性能
LWLockmultixact_offset等待 multixact offset buffer IO操作完成事务并发,磁盘IO性能
LWLockmultixact_member等待 multixact_member buffer IO操作完成事务并发,磁盘IO性能
LWLockasync等待async (notify) buffer IO完成活跃会话、磁盘IO性能
LWLockoldserxid等待oldserxid buffer IO完成磁盘IO性能,事务并发
LWLockwal_insert等待将WAL插入缓冲区事务并发、WALBUFFER
LWLockbuffer_content等待在DB CACHE中读写数据页磁盘IO性能、热块、DBCACHE
LWLockbuffer_io等待数据页IO完成磁盘IO性能、检查点、热块
LWLockreplication_origin等待读取或者修改复制进度数据库复制
LWLockreplication_slot_io等待复制槽上的IO数据库复制、磁盘IO性能
LWLockproc等待读取或者修改快速路径锁的信息
LWLockbuffer_mapping等待将数据块与缓冲池中的缓冲区关联DBCACHE,热块冲突
LWLocklock_manager在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组事务并发
LWLockpredicate_lock_manager等待添加或检查谓词锁信息并发执行
LWLockparallel_query_dsa等待并行查询动态共享内存分配锁
LWLocktbm等待 TBM 共享迭代器锁,一般发生在并行bitmap扫描中,等待TID BITMAP并发执行、索引扫描
Lockrelation等待获取关系上的锁并发执行
Lockextend等待扩展 relation结束
Lockfrozenid等待修改 pg_database.datfrozenxid和 pg_database.datminmxid.VACUUM、磁盘IO性能、数据库配置
Lockpage等待获取relation中的一个页面的锁热块、DBCACHE
Locktuple等待获取元组(tuple)锁热块、事务并发、DBCACHE
Locktransactionid等待一个事务结束事务并发、长事务
Lockvirtualxid等待获取虚拟XID锁并发执行、活跃会话
Lockspeculative token等待获取推测插入锁热块、事务并发、热表
Lockobject等待一个非关系数据库锁
Lockuserlock等待获取用户锁
Lockadvisory等待获取建议用户锁
BufferPinBufferPin等待获得BUFFER的PIN锁热块、DBCACHE
ActivityArchiverMain归档进程的主循环等待后台进程,一般可忽略
ActivityAutoVacuumMainautovacuum启动进程的主循环等待后台进程,一般可忽略
ActivityBgWriterHibernate后台写入进程等待,正在休眠后台进程,一般可忽略
ActivityBgWriterMainbgwriter进程的主循环等待后台进程,一般可忽略
ActivityCheckpointerMainCKPT进程主循环等待后台进程,一般可忽略
ActivityLogicalApplyMain逻辑应用进程主循环等待后台进程,一般可忽略
ActivityLogicalLauncherMain逻辑启动进程主循环等待后台进程,一般可忽略
ActivityPgStatMain统计信息采集进程主循环等待后台进程,一般可忽略
ActivityRecoveryWalAll实例恢复时等待WAL数据流到达等待新的WAL数据
ActivityRecoveryWalStream在恢复时再次尝试检索 WAL 数据之前,等待任何类型的源(本地、存档或流)中的 WAL 数据不可用时等待新的WAL数据
ActivitySysLoggerMainsyslogger进程主循环等待后台进程,一般可忽略
ActivityWalReceiverMainWAL接收进程主循环等待后台进程,一般可忽略
ActivityWalSenderMainWAL发送进程主循环等待后台进程,一般可忽略
ActivityWalWriterMainWAL写进程主循环等待后台进程,一般可忽略
ClientClientRead等待读取客户端输入未提交事务,空闲等待
ClientClientWrite等待向客户端发送数据网络、TOPSQL
ClientLibPQWalReceiverConnect在 WAL 接收器中等待建立与远程服务器的连接。
ClientLibPQWalReceiverReceive等待 WAL 接收器接收来自远程服务器的数据。
ClientSSLOpenServer等待SSL连接
ClientWalReceiverWaitStart等待启动进程发送初始化复制数据流
ClientWalSenderWaitForWAL在WAL发送进程中等待WAL刷新
ClientWalSenderWriteData在 WAL 发送者进程中处理来自 WAL 接收者的回复时等待任何活动
ExtensionExtension等待和extension交换数据或消息和扩展插件有关
IPCBgWorkerShutdown等待后台worker关闭
IPCBgWorkerStartup等待后台worker启动
IPCBtreePage等待继续并行 B 树扫描所需的页可用(并行索引扫描)并行执行
IPCExecuteGather执行Gather时等待子进程的活动表分析
IPCLogicalSyncData等待逻辑复制远程服务发送数据,用于初始表同步逻辑复制
IPCLogicalSyncStateChange等待逻辑复制远程服务改变状态逻辑复制
IPCMessageQueueInternal等待其他进程连接到共享消息队列中
IPCMessageQueuePutMessage等待写一条协议消息到共享消息队列中
IPCMessageQueueReceive等待从共享消息队列中接收字节
IPCMessageQueueSend等待向共享消息队列发送字节
IPCParallelBitmapScan等待并行位图索引扫描初始化并行执行
IPCParallelFinish等待并行查询worker结束计算并行执行
IPCProcArrayGroupUpdate当事务结束时等待组leader清除transaction id长事务
IPCReplicationOriginDrop等待复制源变为非活动状态以被删除复制槽
IPCReplicationSlotDrop等待复制槽变为非活动状态以被删除复制槽
IPCSafeSnapshot一个READ ONLY DEFERRABLE 事务等待snapshot事务快照
IPCSyncRep同步复制时等待远程服务确认同步复制
TimeoutBaseBackupThrottle在基础备份时等待限流复制
TimeoutPgSleep进程处于 pg_sleep等待
TimeoutRecoveryApplyDelay在恢复时因为WAL延迟到达产生的等待实例恢复
IOBufFileReadbffered文件读等待磁盘IO,热块,DBCACHE
IOBufFileWritebuffered文件写等待DBCACHE,磁盘IO
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
IODSMFillZeroWrite等待向一个动态共享内存文件写入字节0
IOLockFileAddToDataDirRead向数据字典锁文件添加一行时等待读操作磁盘IO,并发DDL
IOLockFileAddToDataDirSync向数据字典锁文件添加一行时等待数据写入持久存储磁盘IO,并发DDL
IOLockFileAddToDataDirWrite向数据字典锁文件添加一行时等待写操作磁盘IO,并发DDL
IOLockFileCreateRead创建数据字典锁文件时等待读操作磁盘IO
IOLockFileCreateSync创建数据字典锁文件时等待数据写入持久存储磁盘IO
IOLockFileCreateWrite创建数据字典锁文件时等待写操作磁盘IO
IOLockFileReCheckDataDirRead在重新检查数据字典锁文件期间等待读操作磁盘IO
IOLogicalRewriteCheckpointSyncCKPT时等待逻辑重写映射到达持久化存储磁盘IO,检查点,逻辑复制
IOLogicalRewriteMappingSync逻辑重写时等待映射数据达到持久化存储磁盘IO、逻辑复制
IOLogicalRewriteMappingWrite逻辑重写时等待写映射数据达到持久化存储磁盘IO、逻辑复制
IOLogicalRewriteSync等待逻辑重写映射到达持久化存储磁盘IO、逻辑复制
IOLogicalRewriteTruncate等待映射数据截断到达持久化存储磁盘IO、逻辑复制
IOLogicalRewriteWrite等待一个逻辑重写映射写操作磁盘IO、逻辑复制
IORelationMapRead等待Relation Map文件读磁盘IO、逻辑复制
IORelationMapSync等待Relation Map文件写入持久存储磁盘IO
IORelationMapWrite等待Relation Map文件写磁盘IO
IOReorderBufferReadRecorderBuffer管理中等待读操作(逻辑复制)磁盘IO、逻辑复制
IOReorderBufferWriteRecorderBuffer管理中等待写操作(逻辑复制)磁盘IO、逻辑复制
IOReorderLogicalMappingReadRecorderBuffer管理中等待逻辑映射文件读操作磁盘IO、逻辑复制
IOReplicationSlotRead等待复制槽控制文件的读操作磁盘IO、复制
IOReplicationSlotRestoreSync当复制槽控制文件从内存中复制时等待该文件写入持久存储磁盘IO、复制
IOReplicationSlotSync等待复制槽控制文件写入持久存储磁盘IO、复制
IOReplicationSlotWrite等待一个复制槽控制文件写操作磁盘IO、复制
IOSLRUFlushSync检查点或者数据库关闭的时候,等待 SLRU数据写入持久存储磁盘IO、检查点、数据库关闭
IOSLRURead等待SLRU页读取磁盘IO
IOSLRUSync页写入后等待SLRU数据写入持久存储磁盘IO
IOSLRUWrite等待 SLRU 页写操作磁盘IO
IOSnapbuildRead等待读取序列化的历史目录快照磁盘IO
IOSnapbuildSync等待序列化的历史目录快照写入持久存储磁盘IO
IOSnapbuildWrite等待写入序列化的历史目录快照磁盘IO
IOTimelineHistoryFileSync等待通过流式复制接收到的时间线历史文件写入持久存储磁盘IO
IOTimelineHistoryFileWrite流式复制时等待时间线文件上的一个写操作被收到磁盘IO
IOTimelineHistoryRead等待时间线历史文件上的读操作磁盘IO
IOTimelineHistorySync等待新创建的时间线历史文件写入持久存储磁盘IO
IOTimelineHistoryWrite等待新创建的时间线历史文件上的写操作磁盘IO
IOTwophaseFileRead等待两阶段状态文件读操作磁盘IO、分布式事务
IOTwophaseFileSync等待两阶段状态文件写入持久存储磁盘IO、分布式事务
IOTwophaseFileWrite等待两阶段状态文件写操作磁盘IO、分布式事务
IOWALBootstrapSyncbootstrap的时候等待WAL文件写入持久存储磁盘IO、启动
IOWALBootstrapWritebootstrap的时候等待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、复制
IOWALSyncMethodAssignWAL 同步模式时等待数据写入持久存储磁盘IO、WAL量
IOWALWrite等待WAL文件写磁盘IO、WAL量

参考

https://www.modb.pro/db/246666

https://www.modb.pro/db/70766

https://billtian.github.io/digoal.blog/2016/10/06/01.html

标签:

头像

小麦苗

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

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部