这是本节的多页打印视图。 .
LWLock 等待
- 1: LWLock: AddinShmemInit
- 2: LWLock: AioUringCompletion
- 3: LWLock: AioWorkerSubmissionQueue
- 4: LWLock: AutoFile
- 5: LWLock: Autovacuum
- 6: LWLock: AutovacuumSchedule
- 7: LWLock: BackgroundWorker
- 8: LWLock: BtreeVacuum
- 9: LWLock: BufferContent
- 10: LWLock: BufferMapping
- 11: LWLock: Checkpoint
- 12: LWLock: CheckpointerComm
- 13: LWLock: CommitTs
- 14: LWLock: CommitTsBuffer
- 15: LWLock: CommitTsSLRU
- 16: LWLock: ControlFile
- 17: LWLock: DSMRegistry
- 18: LWLock: DSMRegistryDSA
- 19: LWLock: DSMRegistryHash
- 20: LWLock: DynamicSharedMemoryControl
- 21: LWLock: InjectionPoint
- 22: LWLock: LockFastPath
- 23: LWLock: LockManager
- 24: LWLock: LogicalRepLauncherDSA
- 25: LWLock: LogicalRepLauncherHash
- 26: LWLock: LogicalRepWorker
- 27: LWLock: MultiXactGen
- 28: LWLock: MultiXactMemberBuffer
- 29: LWLock: MultiXactMemberSLRU
- 30: LWLock: MultiXactOffsetBuffer
- 31: LWLock: MultiXactOffsetSLRU
- 32: LWLock: MultiXactTruncation
- 33: LWLock: NotifyBuffer
- 34: LWLock: NotifyQueue
- 35: LWLock: NotifyQueueTail
- 36: LWLock: NotifySLRU
- 37: LWLock: OidGen
- 38: LWLock: OldSnapshotTimeMap
- 39: LWLock: ParallelAppend
- 40: LWLock: ParallelBtreeScan
- 41: LWLock: ParallelHashJoin
- 42: LWLock: ParallelQueryDSA
- 43: LWLock: ParallelVacuumDSA
- 44: LWLock: PerSessionDSA
- 45: LWLock: PerSessionRecordType
- 46: LWLock: PerSessionRecordTypmod
- 47: LWLock: PerXactPredicateList
- 48: LWLock: PgStatsDSA
- 49: LWLock: PgStatsData
- 50: LWLock: PgStatsHash
- 51: LWLock: PredicateLockManager
- 52: LWLock: ProcArray
- 53: LWLock: RelCacheInit
- 54: LWLock: RelationMapping
- 55: LWLock: ReplicationOrigin
- 56: LWLock: ReplicationOriginState
- 57: LWLock: ReplicationSlotAllocation
- 58: LWLock: ReplicationSlotControl
- 59: LWLock: ReplicationSlotIO
- 60: LWLock: SInvalRead
- 61: LWLock: SInvalWrite
- 62: LWLock: SerialBuffer
- 63: LWLock: SerialControl
- 64: LWLock: SerialSLRU
- 65: LWLock: SerializableFinishedList
- 66: LWLock: SerializablePredicateList
- 67: LWLock: SerializableXactHash
- 68: LWLock: SharedTidBitmap
- 69: LWLock: SharedTupleStore
- 70: LWLock: ShmemIndex
- 71: LWLock: SubtransBuffer
- 72: LWLock: SubtransSLRU
- 73: LWLock: SyncRep
- 74: LWLock: SyncScan
- 75: LWLock: TablespaceCreate
- 76: LWLock: TwoPhaseState
- 77: LWLock: WALBufMapping
- 78: LWLock: WALInsert
- 79: LWLock: WALSummarizer
- 80: LWLock: WALWrite
- 81: LWLock: WaitEventCustom
- 82: LWLock: WrapLimitsVacuum
- 83: LWLock: XactBuffer
- 84: LWLock: XactSLRU
- 85: LWLock: XactTruncation
- 86: LWLock: XidGen
LWLock 表示后端没能立即取得保护内部共享内存结构的轻量级锁。它不是 SQL 行锁或表锁,pg_locks 通常也无法指出它的持有者。
重复采样 → 锁定一个热点 tranche → 与负载关联怎样阅读这一类
单张快照里的 LWLock 通常只是调度噪声。只有同一个名称在连续样本中反复出现,并且受影响前台会话的延迟同步上升时,才把它当成竞争。
- 正常: 生成 WAL、获取快照、查找缓冲区、清理或检查点期间短暂出现。
- 关注: 连续三张、间隔 1 秒的快照里,同一事件至少占活动前台后端的 10%。
- 紧急: 至少 25% 的活动前台后端堆在同一事件上,等待持续超过 5 秒,或吞吐同时断崖式下降。
这些百分比是现场分级阈值,不是 PostgreSQL 的保证值。必须与本集群基线比较,并排除本来就应在主循环中等待的后台进程。
值得先认出的十个事件
| 事件 | 受保护资源 | 常见现场 |
|---|---|---|
| BufferContent | 单个共享缓冲区的内容 | 大量会话访问同一热点页 |
| BufferMapping | 缓冲区映射表分区 | 工作集抖动或大规模并发扫描 |
| LockManager | 重量级锁管理器状态 | 锁数量爆炸、DDL 或锁风暴 |
| ProcArray | 共享进程/事务数组 | 获取快照与事务 ID 压力 |
| WALBufMapping | WAL 缓冲区页面映射 | 写入压力下 WAL buffer 快速换页 |
| WALInsert | WAL 插入状态 | 大量写会话在插入 WAL 时串行化 |
| WALWrite | WAL 缓冲区写协调 | WAL 写入或刷盘路径跟不上 |
| XactSLRU | 事务状态 SLRU | pg_xact 缓存抖动或检查很老的可见性 |
| MultiXactMemberSLRU | Multixact member SLRU | 大量行锁与 multixact 抖动 |
| SyncRep | 同步复制等待队列 | 提交确认与 sender 状态发生竞争 |
常见误读
- “LWLock 说明锁泄漏了。” 不是。它是短暂的内部临界区;持续、重复出现才是信号。
- “页面显示的查询就是持有者。”
pg_stat_activity.query属于等待者;持有者可能是走另一条源码路径的后端。 - “多加 CPU 就能解决。” 更多并发反而可能加剧共享内存热点。先确认受保护资源与负载形状。
- “
pg_locks能找出阻塞者。” 它覆盖重量级锁与谓词锁,不覆盖一般 LWLock 所有权。
页面级热点先看 BufferContent,写入密集集群先看 WALInsert。
1 - LWLock: AddinShmemInit
AddinShmemInit
版本PG 13-18
证据3 个源码位置
官方描述译文
等待管理扩展在共享内存中的空间分配。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:328。探针覆盖的操作是:等待管理扩展在共享内存中的空间分配。LWLockAcquire 无法立即取得显示为 AddinShmemInit 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:328 —
AddinShmemInit - PostgreSQL 18.6 · src/test/modules/injection_points/injection_points.c:136 —
AddinShmemInit
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
2 - LWLock: AioUringCompletion
AioUringCompletion
版本PG 18
证据3 个源码位置
官方描述译文
等待另一个进程通过 io_uring 完成 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:180。探针覆盖的操作是:等待另一个进程通过 io_uring 完成 I/O。LWLockAcquire 无法立即取得显示为 AioUringCompletion 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:180 —
AioUringCompletion - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:405 —
AioUringCompletion
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
3 - LWLock: AioWorkerSubmissionQueue
AioWorkerSubmissionQueue
版本PG 18
证据3 个源码位置
官方描述译文
等待访问 AIO worker 提交队列。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/aio/method_worker.c:253。探针覆盖的操作是:等待访问 AIO worker 提交队列。LWLockAcquire 无法立即取得显示为 AioWorkerSubmissionQueue 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/aio/method_worker.c:253 —
AioWorkerSubmissionQueue - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:355 —
AioWorkerSubmissionQueue
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
4 - LWLock: AutoFile
AutoFile
版本PG 13-18
证据3 个源码位置
官方描述译文
等待更新 postgresql.auto.conf 文件。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:340。探针覆盖的操作是:等待更新 postgresql.auto.conf 文件。LWLockAcquire 无法立即取得显示为 AutoFile 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:340 —
AutoFile - PostgreSQL 18.6 · src/backend/utils/misc/guc.c:4760 —
AutoFile
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
5 - LWLock: Autovacuum
Autovacuum
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 autovacuum worker 的当前状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/postmaster/autovacuum.c:611。探针覆盖的操作是:等待读取或更新 autovacuum worker 的当前状态。LWLockAcquire 无法立即取得显示为 Autovacuum 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/postmaster/autovacuum.c:611 —
Autovacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:329 —
Autovacuum
关联控制项与信号
6 - LWLock: AutovacuumSchedule
AutovacuumSchedule
版本PG 13-18
证据3 个源码位置
官方描述译文
等待确认被选中进行 autovacuum 的表仍需要 vacuum。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/postmaster/autovacuum.c:2337。探针覆盖的操作是:等待确认被选中进行 autovacuum 的表仍需要 vacuum。LWLockAcquire 无法立即取得显示为 AutovacuumSchedule 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/postmaster/autovacuum.c:2337 —
AutovacuumSchedule - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:330 —
AutovacuumSchedule
关联控制项与信号
7 - LWLock: BackgroundWorker
BackgroundWorker
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新后台 worker 的状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/postmaster/bgworker.c:1070。探针覆盖的操作是:等待读取或更新后台 worker 的状态。LWLockAcquire 无法立即取得显示为 BackgroundWorker 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/postmaster/bgworker.c:1070 —
BackgroundWorker - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:338 —
BackgroundWorker
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
8 - LWLock: BtreeVacuum
BtreeVacuum
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 B-tree 索引中与 vacuum 相关的信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/nbtree/nbtutils.c:3519。探针覆盖的操作是:等待读取或更新 B-tree 索引中与 vacuum 相关的信息。LWLockAcquire 无法立即取得显示为 BtreeVacuum 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/nbtree/nbtutils.c:3519 —
BtreeVacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:327 —
BtreeVacuum
关联控制项与信号
9 - LWLock: BufferContent
BufferContent
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问内存中的数据页。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
后端已经找到所需的共享缓冲区,但尚未取得该 buffer descriptor 的 content lock。堆表与索引代码在读取或修改内存页前都会取得此锁,因此大量工作进程访问同一页面时会在这里串行化。
正常还是麻烦?
- 正常: 并发读写共享页面时,零星而短暂的样本很常见。
- 需要调查: 大量前台会话连续命中时,通常指向热点堆表/索引页、向右增长的索引,或与业务同时访问相同块的维护任务。
诊断 SQL
处置建议
- 找出等待会话共同访问的关系与语句。
- 用页面与索引证据确认热点,不能只凭等待名称下结论。
- 先分散热点键、批量写入或错峰维护,再考虑容量调整。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:148 —
BufferContent - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:373 —
BufferContent
关联控制项与信号
- GUC: [guc:shared_buffers]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:statement_latency]
典型事故模式
单调递增键让并发 B-tree 插入集中到最右叶子页,BufferContent 与插入延迟同步上升。
10 - LWLock: BufferMapping
BufferMapping
版本PG 13-18
证据3 个源码位置
官方描述译文
等待将数据块关联到 buffer pool 中的 buffer。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
缓冲区管理器把 relation/fork/block 标签哈希到由 BufferMappingLock 保护的分区。查找、插入、淘汰和重新分配标签都会短暂取得该分区锁;大规模并发未命中或缓冲区抖动会增加碰撞。
正常还是麻烦?
- 正常: 页面进入或离开共享缓冲区时,短暂等待属于正常现象。
- 需要调查: 持续出现通常意味着工作集反复冲刷 shared buffers、大量并行扫描,或访问集中映射到少数分区。
诊断 SQL
处置建议
- 按数据库与语句关联缓冲命中率和读取量。
- 检查是否出现新扫描、缓存过小或并发突增。
- 先降低并发扫描扇出或修正访问路径,再决定是否扩大 shared_buffers。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:152 —
BufferMapping - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:377 —
BufferMapping
关联控制项与信号
- GUC: [guc:shared_buffers] · [guc:max_parallel_workers_per_gather]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:buffer_hit_ratio] · [metric:blocks_read]
典型事故模式
执行计划退化引发大量并发大扫描,缓冲映射分区变热,同时有用页面被挤出缓存。
11 - LWLock: Checkpoint
Checkpoint
版本PG 13
证据3 个源码位置
官方描述译文
等待开始执行检查点。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | — | — | — | — | — |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:765,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/xlog.c:8957。探针覆盖的操作是:等待开始执行检查点。LWLockAcquire 无法立即取得显示为 Checkpoint 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 13.23 · src/backend/access/transam/xlog.c:8957 —
Checkpoint - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlock.c:765 —
pgstat_report_wait_start - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlocknames.c:14 —
Checkpoint
关联控制项与信号
12 - LWLock: CheckpointerComm
CheckpointerComm
版本PG 13-18
证据3 个源码位置
官方描述译文
等待管理 fsync 请求。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/postmaster/checkpointer.c:1164。探针覆盖的操作是:等待管理 fsync 请求。LWLockAcquire 无法立即取得显示为 CheckpointerComm 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:1164 —
CheckpointerComm - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:324 —
CheckpointerComm
关联控制项与信号
13 - LWLock: CommitTs
CommitTs
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新事务提交时间戳的最近设定值。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/commit_ts.c:206。探针覆盖的操作是:等待读取或更新事务提交时间戳的最近设定值。LWLockAcquire 无法立即取得显示为 CommitTs 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/commit_ts.c:206 —
CommitTs - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:343 —
CommitTs
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
14 - LWLock: CommitTsBuffer
CommitTsBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待事务提交时间戳 SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:141。探针覆盖的操作是:等待事务提交时间戳 SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 CommitTsBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:141 —
CommitTsBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:366 —
CommitTsBuffer
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
15 - LWLock: CommitTsSLRU
CommitTsSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问事务提交时间戳 SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:172。探针覆盖的操作是:等待访问事务提交时间戳 SLRU 缓存。LWLockAcquire 无法立即取得显示为 CommitTsSLRU 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:172 —
CommitTsSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:397 —
CommitTsSLRU
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
16 - LWLock: ControlFile
ControlFile
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 pg_control 文件,或创建新的 WAL 文件。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/xlog.c:2723。探针覆盖的操作是:等待读取或更新 pg_control 文件,或创建新的 WAL 文件。LWLockAcquire 无法立即取得显示为 ControlFile 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:2723 —
ControlFile - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:321 —
ControlFile
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
17 - LWLock: DSMRegistry
DSMRegistry
版本PG 17-18
证据3 个源码位置
官方描述译文
等待读取或更新动态共享内存注册表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/ipc/dsm_registry.c:98。探针覆盖的操作是:等待读取或更新动态共享内存注册表。LWLockAcquire 无法立即取得显示为 DSMRegistry 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/dsm_registry.c:98 —
DSMRegistry - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:352 —
DSMRegistry
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
18 - LWLock: DSMRegistryDSA
DSMRegistryDSA
版本PG 17-18
证据3 个源码位置
官方描述译文
等待访问动态共享内存注册表的动态共享内存分配器。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:170。探针覆盖的操作是:等待访问动态共享内存注册表的动态共享内存分配器。LWLockAcquire 无法立即取得显示为 DSMRegistryDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:170 —
DSMRegistryDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:395 —
DSMRegistryDSA
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
19 - LWLock: DSMRegistryHash
DSMRegistryHash
版本PG 17-18
证据3 个源码位置
官方描述译文
等待访问动态共享内存注册表的共享哈希表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:171。探针覆盖的操作是:等待访问动态共享内存注册表的共享哈希表。LWLockAcquire 无法立即取得显示为 DSMRegistryHash 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:171 —
DSMRegistryHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:396 —
DSMRegistryHash
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
20 - LWLock: DynamicSharedMemoryControl
DynamicSharedMemoryControl
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新动态共享内存分配信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/ipc/dsm.c:549。探针覆盖的操作是:等待读取或更新动态共享内存分配信息。LWLockAcquire 无法立即取得显示为 DynamicSharedMemoryControl 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/dsm.c:549 —
DynamicSharedMemoryControl - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:339 —
DynamicSharedMemoryControl
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
21 - LWLock: InjectionPoint
InjectionPoint
版本PG 17-18
证据3 个源码位置
官方描述译文
等待读取或更新与注入点相关的信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:353。探针覆盖的操作是:等待读取或更新与注入点相关的信息。LWLockAcquire 无法立即取得显示为 InjectionPoint 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:353 —
InjectionPoint - PostgreSQL 18.6 · src/backend/utils/misc/injection_point.c:302 —
InjectionPoint
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
22 - LWLock: LockFastPath
LockFastPath
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新进程的快速路径锁信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:151。探针覆盖的操作是:等待读取或更新进程的快速路径锁信息。LWLockAcquire 无法立即取得显示为 LockFastPath 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:151 —
LockFastPath - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:376 —
LockFastPath
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
23 - LWLock: LockManager
LockManager
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新“重量级”锁的信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
重量级锁的账本存放在由 LockHashPartitionLock 分区保护的共享哈希表中。获取、授予、释放或检查大量重量级锁时,即使不存在 SQL 层锁冲突,也可能在分区锁上竞争。
正常还是麻烦?
- 正常: 普通关系锁与事务锁流量会带来小规模突发。
- 需要调查: 持续占比通常来自锁扇出:超大事务、大量分区、频繁 DDL,或成千上万的排队锁请求。
诊断 SQL
处置建议
- 按 PID 统计 pg_locks 行数并检查阻塞树。
- 定位一次触碰大量关系或分区的语句。
- 缩短事务并降低锁扇出;只有真实容量报错时才提高 max_locks_per_transaction。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/ipci.c:117 —
LockManager - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:378 —
LockManager
关联控制项与信号
- GUC: [guc:max_locks_per_transaction] · [guc:max_connections]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:locks_per_backend] · [metric:blocked_sessions]
典型事故模式
发布过程对数千分区执行 DDL,同时业务会话获取关系锁;在明显阻塞者出现前,内部锁表已经发生竞争。
24 - LWLock: LogicalRepLauncherDSA
LogicalRepLauncherDSA
版本PG 16-18
证据3 个源码位置
官方描述译文
等待访问逻辑复制 launcher 的动态共享内存分配器。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:168。探针覆盖的操作是:等待访问逻辑复制 launcher 的动态共享内存分配器。LWLockAcquire 无法立即取得显示为 LogicalRepLauncherDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:168 —
LogicalRepLauncherDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:393 —
LogicalRepLauncherDSA
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
25 - LWLock: LogicalRepLauncherHash
LogicalRepLauncherHash
版本PG 16-18
证据3 个源码位置
官方描述译文
等待访问逻辑复制 launcher 的共享哈希表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:169。探针覆盖的操作是:等待访问逻辑复制 launcher 的共享哈希表。LWLockAcquire 无法立即取得显示为 LogicalRepLauncherHash 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:169 —
LogicalRepLauncherHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:394 —
LogicalRepLauncherHash
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
26 - LWLock: LogicalRepWorker
LogicalRepWorker
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新逻辑复制 worker 的状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/replication/logical/launcher.c:189。探针覆盖的操作是:等待读取或更新逻辑复制 worker 的状态。LWLockAcquire 无法立即取得显示为 LogicalRepWorker 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/replication/logical/launcher.c:189 —
LogicalRepWorker - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:346 —
LogicalRepWorker
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
27 - LWLock: MultiXactGen
MultiXactGen
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新共享 multixact 状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/multixact.c:738。探针覆盖的操作是:等待读取或更新共享 multixact 状态。LWLockAcquire 无法立即取得显示为 MultiXactGen 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/multixact.c:738 —
MultiXactGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:322 —
MultiXactGen
关联控制项与信号
28 - LWLock: MultiXactMemberBuffer
MultiXactMemberBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待 multixact member SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:144。探针覆盖的操作是:等待 multixact member SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 MultiXactMemberBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:144 —
MultiXactMemberBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:369 —
MultiXactMemberBuffer
关联控制项与信号
29 - LWLock: MultiXactMemberSLRU
MultiXactMemberSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问 multixact member SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
此锁保护 pg_multixact/members 的 SLRU 缓存;这里保存共享行锁使用的 multitransaction ID 成员事务。并发行锁创建与旧成员查询会在这里相遇。
正常还是麻烦?
- 正常: 使用 SELECT FOR SHARE/KEY SHARE,或因外键检查创建 multixact 的负载中会短暂出现。
- 需要调查: 持续竞争指向大量共享行锁、multixact 抖动、冻结落后,或 pg_multixact 存储缓慢。
诊断 SQL
处置建议
- 找出制造大量共享行锁的语句与表。
- 检查 multixact 年龄与 autovacuum 进度。
- 降低锁扇出并解除 multixact 冻结阻塞;若同时出现 buffer 等待,再查 member SLRU I/O。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:174 —
MultiXactMemberSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:399 —
MultiXactMemberSLRU
关联控制项与信号
- GUC: [guc:autovacuum_multixact_freeze_max_age] · [guc:vacuum_multixact_freeze_table_age]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:oldest_multixact_age] · [metric:multixact_member_io]
典型事故模式
高扇出的外键负载锁住大量父表行,同时长事务推迟 multixact 清理,最终引发 member 缓存竞争。
30 - LWLock: MultiXactOffsetBuffer
MultiXactOffsetBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待 multixact offset SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:143。探针覆盖的操作是:等待 multixact offset SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 MultiXactOffsetBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:143 —
MultiXactOffsetBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:368 —
MultiXactOffsetBuffer
关联控制项与信号
31 - LWLock: MultiXactOffsetSLRU
MultiXactOffsetSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问 multixact offset SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:173。探针覆盖的操作是:等待访问 multixact offset SLRU 缓存。LWLockAcquire 无法立即取得显示为 MultiXactOffsetSLRU 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:173 —
MultiXactOffsetSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:398 —
MultiXactOffsetSLRU
关联控制项与信号
32 - LWLock: MultiXactTruncation
MultiXactTruncation
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或截断 multixact 信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/multixact.c:2901。探针覆盖的操作是:等待读取或截断 multixact 信息。LWLockAcquire 无法立即取得显示为 MultiXactTruncation 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/multixact.c:2901 —
MultiXactTruncation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:345 —
MultiXactTruncation
关联控制项与信号
33 - LWLock: NotifyBuffer
NotifyBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待 NOTIFY 消息 SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:145。探针覆盖的操作是:等待 NOTIFY 消息 SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 NotifyBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:145 —
NotifyBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:370 —
NotifyBuffer
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
34 - LWLock: NotifyQueue
NotifyQueue
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 NOTIFY 消息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/commands/async.c:940。探针覆盖的操作是:等待读取或更新 NOTIFY 消息。LWLockAcquire 无法立即取得显示为 NotifyQueue 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/commands/async.c:940 —
NotifyQueue - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:333 —
NotifyQueue
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
35 - LWLock: NotifyQueueTail
NotifyQueueTail
版本PG 13-18
证据3 个源码位置
官方描述译文
等待更新 NOTIFY 消息的存储上限。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/commands/async.c:2126。探针覆盖的操作是:等待更新 NOTIFY 消息的存储上限。LWLockAcquire 无法立即取得显示为 NotifyQueueTail 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/commands/async.c:2126 —
NotifyQueueTail - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:349 —
NotifyQueueTail
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
36 - LWLock: NotifySLRU
NotifySLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问 NOTIFY 消息 SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:175。探针覆盖的操作是:等待访问 NOTIFY 消息 SLRU 缓存。LWLockAcquire 无法立即取得显示为 NotifySLRU 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:175 —
NotifySLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:400 —
NotifySLRU
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
37 - LWLock: OidGen
OidGen
版本PG 13-18
证据3 个源码位置
官方描述译文
等待分配新的 OID。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/varsup.c:563。探针覆盖的操作是:等待分配新的 OID。LWLockAcquire 无法立即取得显示为 OidGen 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:563 —
OidGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:314 —
OidGen
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
38 - LWLock: OldSnapshotTimeMap
OldSnapshotTimeMap
版本PG 13-16
证据2 个源码位置
官方描述译文
等待读取或更新旧快照控制信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | — | — |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:750,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/time/snapmgr.c:1758。探针覆盖的操作是:等待读取或更新旧快照控制信息。LWLockAcquire 无法立即取得显示为 OldSnapshotTimeMap 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 16.15 · src/backend/storage/lmgr/lwlock.c:750 —
pgstat_report_wait_start - PostgreSQL 16.15 · src/backend/utils/time/snapmgr.c:1758 —
OldSnapshotTimeMap
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
39 - LWLock: ParallelAppend
ParallelAppend
版本PG 13-18
证据3 个源码位置
官方描述译文
执行 Parallel Append 计划期间,等待选择下一个子计划。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/executor/nodeAppend.c:69。探针覆盖的操作是:执行 Parallel Append 计划期间,等待选择下一个子计划。LWLockAcquire 无法立即取得显示为 ParallelAppend 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/executor/nodeAppend.c:69 —
ParallelAppend - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:388 —
ParallelAppend
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
40 - LWLock: ParallelBtreeScan
ParallelBtreeScan
版本PG 18
证据3 个源码位置
官方描述译文
执行 Parallel B-tree Scan 计划期间,等待同步 worker。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:156。探针覆盖的操作是:执行 Parallel B-tree Scan 计划期间,等待同步 worker。LWLockAcquire 无法立即取得显示为 ParallelBtreeScan 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:156 —
ParallelBtreeScan - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:381 —
ParallelBtreeScan
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
41 - LWLock: ParallelHashJoin
ParallelHashJoin
版本PG 13-18
证据3 个源码位置
官方描述译文
执行 Parallel Hash Join 计划期间,等待同步 worker。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/executor/nodeHash.c:71。探针覆盖的操作是:执行 Parallel Hash Join 计划期间,等待同步 worker。LWLockAcquire 无法立即取得显示为 ParallelHashJoin 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:71 —
ParallelHashJoin - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:380 —
ParallelHashJoin
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
42 - LWLock: ParallelQueryDSA
ParallelQueryDSA
版本PG 13-18
证据3 个源码位置
官方描述译文
等待并行查询的动态共享内存分配。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:157。探针覆盖的操作是:等待并行查询的动态共享内存分配。LWLockAcquire 无法立即取得显示为 ParallelQueryDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:157 —
ParallelQueryDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:382 —
ParallelQueryDSA
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
43 - LWLock: ParallelVacuumDSA
ParallelVacuumDSA
版本PG 17-18
证据3 个源码位置
官方描述译文
等待并行 vacuum 的动态共享内存分配。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:179。探针覆盖的操作是:等待并行 vacuum 的动态共享内存分配。LWLockAcquire 无法立即取得显示为 ParallelVacuumDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:179 —
ParallelVacuumDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:404 —
ParallelVacuumDSA
关联控制项与信号
44 - LWLock: PerSessionDSA
PerSessionDSA
版本PG 13-18
证据3 个源码位置
官方描述译文
等待并行查询的动态共享内存分配。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:158。探针覆盖的操作是:等待并行查询的动态共享内存分配。LWLockAcquire 无法立即取得显示为 PerSessionDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:158 —
PerSessionDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:383 —
PerSessionDSA
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
45 - LWLock: PerSessionRecordType
PerSessionRecordType
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问并行查询的复合类型信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:159。探针覆盖的操作是:等待访问并行查询的复合类型信息。LWLockAcquire 无法立即取得显示为 PerSessionRecordType 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:159 —
PerSessionRecordType - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:384 —
PerSessionRecordType
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
46 - LWLock: PerSessionRecordTypmod
PerSessionRecordTypmod
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问并行查询中用于标识匿名 record 类型的类型修饰符信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:160。探针覆盖的操作是:等待访问并行查询中用于标识匿名 record 类型的类型修饰符信息。LWLockAcquire 无法立即取得显示为 PerSessionRecordTypmod 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:160 —
PerSessionRecordTypmod - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:385 —
PerSessionRecordTypmod
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
47 - LWLock: PerXactPredicateList
PerXactPredicateList
版本PG 13-18
证据3 个源码位置
官方描述译文
并行查询期间,等待访问当前可串行化事务所持有的谓词锁列表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:164。探针覆盖的操作是:并行查询期间,等待访问当前可串行化事务所持有的谓词锁列表。LWLockAcquire 无法立即取得显示为 PerXactPredicateList 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:164 —
PerXactPredicateList - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:389 —
PerXactPredicateList
关联控制项与信号
48 - LWLock: PgStatsDSA
PgStatsDSA
版本PG 15-18
证据3 个源码位置
官方描述译文
等待访问统计信息的动态共享内存分配器。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:165。探针覆盖的操作是:等待访问统计信息的动态共享内存分配器。LWLockAcquire 无法立即取得显示为 PgStatsDSA 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:165 —
PgStatsDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:390 —
PgStatsDSA
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
49 - LWLock: PgStatsData
PgStatsData
版本PG 15-18
证据3 个源码位置
官方描述译文
等待访问共享内存中的统计数据。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:167。探针覆盖的操作是:等待访问共享内存中的统计数据。LWLockAcquire 无法立即取得显示为 PgStatsData 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:167 —
PgStatsData - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:392 —
PgStatsData
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
50 - LWLock: PgStatsHash
PgStatsHash
版本PG 15-18
证据3 个源码位置
官方描述译文
等待访问统计信息的共享内存哈希表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:166。探针覆盖的操作是:等待访问统计信息的共享内存哈希表。LWLockAcquire 无法立即取得显示为 PgStatsHash 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:166 —
PgStatsHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:391 —
PgStatsHash
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
51 - LWLock: PredicateLockManager
PredicateLockManager
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问可串行化事务使用的谓词锁信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:154。探针覆盖的操作是:等待访问可串行化事务使用的谓词锁信息。LWLockAcquire 无法立即取得显示为 PredicateLockManager 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:154 —
PredicateLockManager - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:379 —
PredicateLockManager
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
52 - LWLock: ProcArray
ProcArray
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问共享的进程级数据结构(通常用于获取快照或报告会话的事务 ID)。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
ProcArrayLock 保护用于快照、事务可见性与事务结束处理的共享 PGPROC/PGXACT 数组。获取快照以及更新进程事务状态都必须短暂经过它协调。
正常还是麻烦?
- 正常: 大量事务开始与结束的繁忙 OLTP 系统中,短暂等待属于预期。
- 需要调查: 持续竞争可能伴随极高连接数、大量快照、长事务,或事务集中结束。
诊断 SQL
处置建议
- 测量活动后端与事务年龄,不要只看总连接数。
- 找出让可见性边界停滞的长事务与 idle in transaction 会话。
- 使用连接池、缩短事务,并避免大量微事务同步突发。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:6121 —
ProcArray - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:316 —
ProcArray
关联控制项与信号
- GUC: [guc:max_connections] · [guc:idle_in_transaction_session_timeout]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:active_backends] · [metric:oldest_transaction_age]
典型事故模式
应用重连风暴制造数千个短事务,同时报表查询持有旧快照,放大了 ProcArray 流量。
53 - LWLock: RelCacheInit
RelCacheInit
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 pg_internal.init relation cache 初始化文件。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:323。探针覆盖的操作是:等待读取或更新 pg_internal.init relation cache 初始化文件。LWLockAcquire 无法立即取得显示为 RelCacheInit 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:323 —
RelCacheInit - PostgreSQL 18.6 · src/backend/utils/cache/relcache.c:6765 —
RelCacheInit
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
54 - LWLock: RelationMapping
RelationMapping
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新 pg_filenode.map 文件(用于跟踪某些系统目录的 filenode 分配)。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:332。探针覆盖的操作是:等待读取或更新 pg_filenode.map 文件(用于跟踪某些系统目录的 filenode 分配)。LWLockAcquire 无法立即取得显示为 RelationMapping 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:332 —
RelationMapping - PostgreSQL 18.6 · src/backend/utils/cache/relmapper.c:311 —
RelationMapping
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
55 - LWLock: ReplicationOrigin
ReplicationOrigin
版本PG 13-18
证据3 个源码位置
官方描述译文
等待创建、删除或使用复制源。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/replication/logical/origin.c:377。探针覆盖的操作是:等待创建、删除或使用复制源。LWLockAcquire 无法立即取得显示为 ReplicationOrigin 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/replication/logical/origin.c:377 —
ReplicationOrigin - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:344 —
ReplicationOrigin
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
56 - LWLock: ReplicationOriginState
ReplicationOriginState
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新一个复制源的进度。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/replication/logical/origin.c:557。探针覆盖的操作是:等待读取或更新一个复制源的进度。LWLockAcquire 无法立即取得显示为 ReplicationOriginState 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/replication/logical/origin.c:557 —
ReplicationOriginState - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:374 —
ReplicationOriginState
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
57 - LWLock: ReplicationSlotAllocation
ReplicationSlotAllocation
版本PG 13-18
证据3 个源码位置
官方描述译文
等待分配或释放复制槽。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/replication/logical/slotsync.c:543。探针覆盖的操作是:等待分配或释放复制槽。LWLockAcquire 无法立即取得显示为 ReplicationSlotAllocation 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/replication/logical/slotsync.c:543 —
ReplicationSlotAllocation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:341 —
ReplicationSlotAllocation
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
58 - LWLock: ReplicationSlotControl
ReplicationSlotControl
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新复制槽状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/replication/logical/logical.c:492。探针覆盖的操作是:等待读取或更新复制槽状态。LWLockAcquire 无法立即取得显示为 ReplicationSlotControl 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/replication/logical/logical.c:492 —
ReplicationSlotControl - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:342 —
ReplicationSlotControl
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
59 - LWLock: ReplicationSlotIO
ReplicationSlotIO
版本PG 13-18
证据3 个源码位置
官方描述译文
等待复制槽上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:150。探针覆盖的操作是:等待复制槽上的 I/O。LWLockAcquire 无法立即取得显示为 ReplicationSlotIO 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:150 —
ReplicationSlotIO - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:375 —
ReplicationSlotIO
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
60 - LWLock: SInvalRead
SInvalRead
版本PG 13-18
证据3 个源码位置
官方描述译文
等待从共享系统目录失效队列中取出消息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/ipc/sinvaladt.c:497。探针覆盖的操作是:等待从共享系统目录失效队列中取出消息。LWLockAcquire 无法立即取得显示为 SInvalRead 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/sinvaladt.c:497 —
SInvalRead - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:317 —
SInvalRead
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
61 - LWLock: SInvalWrite
SInvalWrite
版本PG 13-18
证据3 个源码位置
官方描述译文
等待向共享系统目录失效队列中添加消息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/ipc/sinvaladt.c:290。探针覆盖的操作是:等待向共享系统目录失效队列中添加消息。LWLockAcquire 无法立即取得显示为 SInvalWrite 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/sinvaladt.c:290 —
SInvalWrite - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:318 —
SInvalWrite
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
62 - LWLock: SerialBuffer
SerialBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待可串行化事务冲突 SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:146。探针覆盖的操作是:等待可串行化事务冲突 SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 SerialBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:146 —
SerialBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:371 —
SerialBuffer
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
63 - LWLock: SerialControl
SerialControl
版本PG 17-18
证据3 个源码位置
官方描述译文
等待读取或更新共享的 pg_serial 状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/predicate.c:835。探针覆盖的操作是:等待读取或更新共享的 pg_serial 状态。LWLockAcquire 无法立即取得显示为 SerialControl 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:835 —
SerialControl - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:354 —
SerialControl
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
64 - LWLock: SerialSLRU
SerialSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问可串行化事务冲突 SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:176。探针覆盖的操作是:等待访问可串行化事务冲突 SLRU 缓存。LWLockAcquire 无法立即取得显示为 SerialSLRU 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:176 —
SerialSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:401 —
SerialSLRU
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
65 - LWLock: SerializableFinishedList
SerializableFinishedList
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问已结束的可串行化事务列表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/predicate.c:1507。探针覆盖的操作是:等待访问已结束的可串行化事务列表。LWLockAcquire 无法立即取得显示为 SerializableFinishedList 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:1507 —
SerializableFinishedList - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:335 —
SerializableFinishedList
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
66 - LWLock: SerializablePredicateList
SerializablePredicateList
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问可串行化事务所持有的谓词锁列表。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/predicate.c:2220。探针覆盖的操作是:等待访问可串行化事务所持有的谓词锁列表。LWLockAcquire 无法立即取得显示为 SerializablePredicateList 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:2220 —
SerializablePredicateList - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:336 —
SerializablePredicateList
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
67 - LWLock: SerializableXactHash
SerializableXactHash
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新可串行化事务的信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/predicate.c:1462。探针覆盖的操作是:等待读取或更新可串行化事务的信息。LWLockAcquire 无法立即取得显示为 SerializableXactHash 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:1462 —
SerializableXactHash - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:334 —
SerializableXactHash
关联控制项与信号
68 - LWLock: SharedTidBitmap
SharedTidBitmap
版本PG 13-18
证据3 个源码位置
官方描述译文
并行 bitmap index scan 期间,等待访问共享 TID bitmap。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:162。探针覆盖的操作是:并行 bitmap index scan 期间,等待访问共享 TID bitmap。LWLockAcquire 无法立即取得显示为 SharedTidBitmap 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:162 —
SharedTidBitmap - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:387 —
SharedTidBitmap
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
69 - LWLock: SharedTupleStore
SharedTupleStore
版本PG 13-18
证据3 个源码位置
官方描述译文
并行查询期间,等待访问共享 tuple store。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:161。探针覆盖的操作是:并行查询期间,等待访问共享 tuple store。LWLockAcquire 无法立即取得显示为 SharedTupleStore 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:161 —
SharedTupleStore - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:386 —
SharedTupleStore
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
70 - LWLock: ShmemIndex
ShmemIndex
版本PG 13-18
证据3 个源码位置
官方描述译文
等待在共享内存中查找或分配空间。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/ipc/shmem.c:392。探针覆盖的操作是:等待在共享内存中查找或分配空间。LWLockAcquire 无法立即取得显示为 ShmemIndex 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/ipc/shmem.c:392 —
ShmemIndex - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:313 —
ShmemIndex
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
71 - LWLock: SubtransBuffer
SubtransBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待子事务 SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:142。探针覆盖的操作是:等待子事务 SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 SubtransBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:142 —
SubtransBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:367 —
SubtransBuffer
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
72 - LWLock: SubtransSLRU
SubtransSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问子事务 SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:177。探针覆盖的操作是:等待访问子事务 SLRU 缓存。LWLockAcquire 无法立即取得显示为 SubtransSLRU 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:177 —
SubtransSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:402 —
SubtransSLRU
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
73 - LWLock: SyncRep
SyncRep
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新同步复制状态信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
SyncRepLock 保护同步复制队列与共享 sender 状态。提交会话入队或检查等待位置,WAL sender 则更新已被同步备库确认的 LSN。
正常还是麻烦?
- 正常: 同步提交排队、WAL sender 发布确认位置时会有小规模突发。
- 需要调查: 持续的 SyncRep LWLock 竞争不同于等待备库确认:它表示队列/状态协调本身过热,通常发生在极高提交并发或 sender 抖动时。
诊断 SQL
处置建议
- 区分 LWLock/SyncRep、IPC/SyncRep 与复制延迟等待。
- 检查同步备库健康度、sender 抖动与提交速率。
- 稳定复制并平滑提交突发;只有获得明确事故授权时才改变持久性策略。
源码证据
- PostgreSQL 18.6 · src/backend/replication/syncrep.c:192 —
SyncRep - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:337 —
SyncRep
关联控制项与信号
- GUC: [guc:synchronous_standby_names] · [guc:synchronous_commit] · [guc:wal_sender_timeout]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:replication_flush_lag] · [metric:commit_latency]
典型事故模式
备库反复抖动,大量同步提交者频繁进出等待队列,使队列协调本身表现为 LWLock/SyncRep。
74 - LWLock: SyncScan
SyncScan
版本PG 13-18
证据3 个源码位置
官方描述译文
等待选择同步表扫描的起始位置。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/common/syncscan.c:258。探针覆盖的操作是:等待选择同步表扫描的起始位置。LWLockAcquire 无法立即取得显示为 SyncScan 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/common/syncscan.c:258 —
SyncScan - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:331 —
SyncScan
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
75 - LWLock: TablespaceCreate
TablespaceCreate
版本PG 13-18
证据3 个源码位置
官方描述译文
等待创建或删除表空间。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/commands/tablespace.c:138。探针覆盖的操作是:等待创建或删除表空间。LWLockAcquire 无法立即取得显示为 TablespaceCreate 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/commands/tablespace.c:138 —
TablespaceCreate - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:326 —
TablespaceCreate
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
76 - LWLock: TwoPhaseState
TwoPhaseState
版本PG 13-18
证据3 个源码位置
官方描述译文
等待读取或更新预备事务的状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/twophase.c:329。探针覆盖的操作是:等待读取或更新预备事务的状态。LWLockAcquire 无法立即取得显示为 TwoPhaseState 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/twophase.c:329 —
TwoPhaseState - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:325 —
TwoPhaseState
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
77 - LWLock: WALBufMapping
WALBufMapping
版本PG 13-18
证据3 个源码位置
官方描述译文
等待替换 WAL buffer 中的页面。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
WALBufMappingLock 协调 WAL 页号与有限 wal_buffers 槽位之间的映射。后端推进到新 WAL 页或替换缓冲页时需要取得此锁。
正常还是麻烦?
- 正常: WAL 生成推进并跨越缓冲页时会短暂出现。
- 需要调查: 持续竞争说明 WAL 生成换页速度超过写路径推进速度,常见于写突发或检查点期间。
诊断 SQL
处置建议
- 关联 WAL 字节量、WAL 写入与检查点时间。
- 检查写突发期间 wal_buffers 是否反复耗尽。
- 先平滑写突发并解决 WAL 设备延迟,再调整缓冲区大小。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:1999 —
WALBufMapping - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:319 —
WALBufMapping
关联控制项与信号
- GUC: [guc:wal_buffers] · [guc:checkpoint_timeout] · [guc:max_wal_size]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_bytes] · [metric:wal_write_time]
典型事故模式
批量导入把 WAL 生成推到极限,同时 WAL 设备发生停顿,导致频繁的 WAL 缓冲页重映射。
78 - LWLock: WALInsert
WALInsert
版本PG 13-18
证据3 个源码位置
官方描述译文
等待将 WAL 数据插入内存 buffer。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
后端在共享 WAL 缓冲区中预留空间并复制 WAL 记录时,必须持有一个 WAL insertion lock。并发 WAL 生产者很多、插入临界区变长时,会在此排队。
正常还是麻烦?
- 正常: 并发写入与提交突发期间的瞬时等待很正常。
- 需要调查: 前台会话反复堆积说明 WAL 插入已成为串行点,常伴随极高写并发、全页镜像或缓冲区换页过慢。
诊断 SQL
处置建议
- 按 WAL 生成量与调用频率排序语句。
- 检查检查点/全页镜像时机与并发写会话数量。
- 批量合并微小写入、减少无效索引抖动,并处理 WAL 写延迟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:1399 —
WALInsert - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:372 —
WALInsert
关联控制项与信号
- GUC: [guc:wal_buffers] · [guc:full_page_writes] · [guc:checkpoint_timeout]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_bytes] · [metric:wal_fpi] · [metric:statement_wal_bytes]
典型事故模式
扇出任务在检查点后立即发起大量单行提交,全页镜像与写并发共同让 WAL 插入成为瓶颈。
79 - LWLock: WALSummarizer
WALSummarizer
版本PG 17-18
证据3 个源码位置
官方描述译文
等待读取或更新 WAL 汇总状态。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/postmaster/walsummarizer.c:273。探针覆盖的操作是:等待读取或更新 WAL 汇总状态。LWLockAcquire 无法立即取得显示为 WALSummarizer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/postmaster/walsummarizer.c:273 —
WALSummarizer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:351 —
WALSummarizer
关联控制项与信号
80 - LWLock: WALWrite
WALWrite
版本PG 13-18
证据3 个源码位置
官方描述译文
等待将 WAL buffer 写入磁盘。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
WALWriteLock 串行化共享 WAL 缓冲区写入,以及 written/flushed 位置的推进。等待者正在当前执行或协调这项工作的后端之后排队。
正常还是麻烦?
- 正常: 多个提交者协助写 WAL 时会短暂出现。
- 需要调查: WALWrite 持续出现且提交延迟上升,通常表示 WAL 写路径变慢,或吞吐跟不上 WAL 生成速度。
诊断 SQL
处置建议
- 把 WAL write/sync 时间与提交延迟对照。
- 检查 WAL 文件系统/设备、虚拟化限速与检查点重叠。
- 降低突发性;只有存储证据确认后才调整 wal_writer 参数。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:2047 —
WALWrite - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:320 —
WALWrite
关联控制项与信号
- GUC: [guc:wal_writer_delay] · [guc:wal_writer_flush_after] · [guc:synchronous_commit]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_write_time] · [metric:wal_sync_time] · [metric:commit_latency]
典型事故模式
云盘耗尽突发积分,WAL 写入变长,提交会话在 WALWrite 上排队,同步提交延迟同步恶化。
81 - LWLock: WaitEventCustom
WaitEventCustom
版本PG 17-18
证据3 个源码位置
官方描述译文
等待读取或更新自定义等待事件信息。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event.c:193。探针覆盖的操作是:等待读取或更新自定义等待事件信息。LWLockAcquire 无法立即取得显示为 WaitEventCustom 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event.c:193 —
WaitEventCustom - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:350 —
WaitEventCustom
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]
82 - LWLock: WrapLimitsVacuum
WrapLimitsVacuum
版本PG 13-18
证据3 个源码位置
官方描述译文
等待更新事务 ID 和 multixact 的消耗上限。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/commands/vacuum.c:1858。探针覆盖的操作是:等待更新事务 ID 和 multixact 的消耗上限。LWLockAcquire 无法立即取得显示为 WrapLimitsVacuum 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/commands/vacuum.c:1858 —
WrapLimitsVacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:348 —
WrapLimitsVacuum
关联控制项与信号
83 - LWLock: XactBuffer
XactBuffer
版本PG 13-18
证据3 个源码位置
官方描述译文
等待事务状态 SLRU buffer 上的 I/O。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/storage/lmgr/lwlock.c:140。探针覆盖的操作是:等待事务状态 SLRU buffer 上的 I/O。LWLockAcquire 无法立即取得显示为 XactBuffer 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:140 —
XactBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:365 —
XactBuffer
关联控制项与信号
84 - LWLock: XactSLRU
XactSLRU
版本PG 13-18
证据3 个源码位置
官方描述译文
等待访问事务状态 SLRU 缓存。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
事务状态 SLRU 锁保护 pg_xact 缓存元数据与页面,PostgreSQL 读取或更新事务提交状态时会经过这里。对未缓存或很老 XID 的可见性检查会把这条路径带到前台。
正常还是麻烦?
- 正常: 事务结束与偶发 pg_xact 缓存未命中会带来短暂等待。
- 需要调查: 持续等待可能表示事务状态缓存抖动、访问很老的元组,或 pg_xact 路径存在存储延迟。
诊断 SQL
处置建议
- 检查老事务以及 vacuum/freeze 健康度。
- 关联 XactBuffer 与 pg_xact I/O 等待。
- 先消除可见性边界阻塞者并恢复清理进度,再考虑容量调整。
源码证据
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:178 —
XactSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:403 —
XactSLRU
关联控制项与信号
- GUC: [guc:autovacuum_freeze_max_age] · [guc:vacuum_freeze_table_age]
- 指标: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:oldest_transaction_age] · [metric:xact_slru_io]
典型事故模式
长生命周期快照阻止清理,同时查询反复访问冷的旧元组版本,引发 pg_xact 缓存抖动与 XactSLRU 竞争。
85 - LWLock: XactTruncation
XactTruncation
版本PG 13-18
证据3 个源码位置
官方描述译文
等待执行 pg_xact_status,或更新当前进程可用的最旧事务 ID。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/varsup.c:357。探针覆盖的操作是:等待执行 pg_xact_status,或更新当前进程可用的最旧事务 ID。LWLockAcquire 无法立即取得显示为 XactTruncation 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:357 —
XactTruncation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:347 —
XactTruncation
关联控制项与信号
86 - LWLock: XidGen
XidGen
版本PG 13-18
证据3 个源码位置
官方描述译文
等待分配新的事务 ID。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
pgstat_report_wait_start 位于 src/backend/storage/lmgr/lwlock.c:739,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/access/transam/varsup.c:105。探针覆盖的操作是:等待分配新的事务 ID。LWLockAcquire 无法立即取得显示为 XidGen 的轻量级锁 tranche;后端在内部共享内存资源上休眠时,通用 LWLock 报告器发布该 tranche 名称。
正常还是麻烦?
- 正常: 短暂内部临界区周围的零星样本属于正常。
- 需要调查: 若同一 tranche 在连续三次一秒采样中影响至少 10% 的活动前台会话,应当调查;达到 25% 或持续超过五秒按紧急处理。
诊断 SQL
处置建议
- 重复采样并锁定一个热点 tranche。
- 把它与受保护资源及当前负载阶段关联。
- 降低具体竞争源;增加并发可能让共享内存热点更糟。
源码证据
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:105 —
XidGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:315 —
XidGen
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]