PostgreSQL 锁等待怎么查:pg_blocking_pids 脱敏脚本与阻塞链手册
下载经过 PostgreSQL 14-18 隔离验证的只读脚本,用 pg_stat_activity 与 pg_blocking_pids 形成不含 query、身份或对象名的等待链快照。
面向 PostgreSQL DBA、数据平台和应用团队,用可执行SQL、证据表、时间窗口和反证形成候选阻塞链,再由负责人决定巡检或单独授权的修复。
适用对象
- 可下载SQL已在PostgreSQL 14.20、15.18、16.14、17.10与18.4隔离合成锁等待中通过。
- 先固定问题时间窗、数据库、应用和业务影响,再保存等待进程、阻塞进程、事务与查询起点。
- `pg_locks`展示当前锁状态快照,需要结合`pg_stat_activity`、时间窗口和应用行为判断。
- 候选头部阻塞者只是需要继续核验的对象;一次快照不能说明事务用途、持续时间或终止后的回滚影响。
- 工作表只保存脱敏标识和只读摘要;不得仅凭一次快照自动终止会话或修改事务。
怎样用只读证据找到锁等待链
把锁快照与活动会话、时间窗口和应用行为关联起来,而不是只盯住一个 pid。
先为等待进程记录`wait_event_type`、`wait_event`、事务起点、查询起点和脱敏query_id,再核对它正在等待的锁类型、对象以及候选阻塞进程。所有时间都要带时区并落在同一问题窗口。
应用名称、发布窗口和业务影响可以说明为什么这个等待重要;未受影响的数据库、应用或时间段则是反证。二者都应保留,防止把偶发快照写成确定根因。
| 证据组 | 填写内容 | 可以帮助判断 | 不能单独证明 |
|---|---|---|---|
| 问题窗口 | 版本、时区、开始/结束、数据库、业务影响 | 现象和证据是否处于同一窗口 | 不能定位具体阻塞者 |
| 活动会话 | 脱敏pid、状态、事务/查询起点、等待事件 | 哪些进程正在等待以及持续边界 | 等待不一定来自锁 |
| 锁与对象 | 阻塞pid、锁类型、relation、granted | 候选等待关系和对象范围 | 一次快照不能证明长期链路 |
| 应用与变更 | 脱敏应用、发布、批处理、连接行为 | 是否存在共同时间线 | 时间相关不等于因果 |
| 反证与结论 | 未受影响范围、替代解释、证据缺口 | 结论是否经得住反向核对 | 不能自动授权生产动作 |
从等待进程到候选头部阻塞者的五步复核
每一步都只记录最小必要信息。若权限不足或快照已经消失,应标记“缺失”而不是补写推测;若需要增加采集、取消查询、终止进程或修改事务,应进入单独的风险评审。
PostgreSQL锁等待只读复核
- 01
01
固定窗口
记录版本、时区、数据库、应用、现象和业务影响。
- 02
02
记录等待者
保存脱敏pid、状态、事务/查询起点和等待事件。
- 03
03
关联锁快照
记录锁类型、对象、granted和候选阻塞pid。
- 04
04
核对应用行为
对照发布、批处理、连接管理和未受影响范围。
- 05
05
人工决定
写明候选头部阻塞者、反证、缺口和下一步权限。
一次快照只用于形成候选解释,不自动触发取消查询、终止进程、提交或回滚事务。
下载PostgreSQL锁等待只读SQL与证据表
SQL只输出快照内`wait-N`与`block-N`代号、等待类型、等待事件、状态、事务年龄区间和阻塞者数量,不输出真实pid、query、库名、用户名、应用名、对象名或地址。CSV可补充问题窗口、业务影响与反证;无权采集的字段写“缺失”或“需授权”。若首轮材料仍无法分级,可进入B-HC固定范围服务。发布后第14天看资料到自查或服务的有效动作,第30天看有效线索,第90天才决定是否调整页面;下载、点击和QA不算商业结果。
本节判断
- 适用PostgreSQL 14-18;13及更早版本、生产和客户环境未验证。
- 缺少`pg_read_all_stats`或等价可见性时返回`insufficient_visibility`,不误写为没有锁等待。
- 记录`pg_locks`与`pg_stat_activity`采集时间,不把不同快照拼成确定链路。
- 同时保存候选头部阻塞者、反证和证据缺口。
- B-HC不包含自动终止会话、修改事务、生产改库或恢复效果承诺。
参考依据
以下来源用于确认市场趋势、政策背景和术语边界;具体落地方案仍以客户的数据范围、权限和交付目标为准。
常见问题
pg_locks看到未授予的锁后是否就能终止阻塞进程?
不能。还要确认阻塞链、事务用途、持续时间、业务责任、回滚影响和审批权限。单次快照只能支持进一步核验。
为什么要同时看pg_stat_activity?
pg_locks描述锁状态,pg_stat_activity补充会话状态、事务和查询起点、等待事件及应用信息。两者结合才能把锁与当前活动关联。
快照已经消失还能得出结论吗?
只能记录现象和已有证据,不能补写确定根因。需要复现或增加采集时,应评估权限、数据敏感性和生产负载后另行授权。