BufferPin: BufferPin
等待获取 buffer 上的独占 pin。
PostgreSQL 等待事件档案
类别BufferPin
事件
BufferPin
版本PG 13-18
证据2 个源码位置
官方描述译文
等待获取 buffer 上的独占 pin。
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
触发机制
WAIT_EVENT_BUFFER_PIN 位于 src/backend/storage/buffer/bufmgr.c:5819,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:286。探针覆盖的操作是:等待获取 buffer 上的独占 pin。缓冲区管理器需要独占 pin,但另一个后端仍在同一共享缓冲区上持有 pin;当前后端会休眠到最后一个冲突 pin 被释放。
正常还是麻烦?
- 正常: 扫描或索引维护期间,孤立的亚秒级样本可能正常。
- 需要调查: 等待超过一秒就值得怀疑,尤其要检查游标或空闲事务是否持续钉住页面。
诊断 SQL
正在等待 BufferPin/BufferPin 的会话
当前 BufferPin 等待分布
这些会话的锁与关系上下文
处置建议
- 保全等待查询与关系上下文。
- 查找访问同一关系的长游标与 idle in transaction 会话。
- 确认最安全的持有者或维护受害者后再取消。
源码证据
- PostgreSQL 18.6 · src/backend/storage/buffer/bufmgr.c:5819 —
WAIT_EVENT_BUFFER_PIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:286 —
BUFFER_PIN
关联控制项与信号
- GUC: 无直接关联项。
- 指标: [metric:waiting_sessions] · [metric:wait_event_share]