WAIT EVENT · EXTENSION扩展
ExtensionExtension
在扩展中等待。
Waiting in an extension
扩展 引入 10 现存至 20 devel 0 次变动 动态触发图谱档案
版本轨迹
相对 PostgreSQL 17 无变化。
各版本描述
相邻版本里类型、名称与英文描述都相同的合并成一段,旧的在前。中文取自图谱或本站手册译文,没有译文的只给英文原文。
-
1020
ExtensionExtension在扩展中等待。
Waiting in an extension.
触发机制
PG_WAIT_EXTENSION 位于 src/backend/utils/activity/wait_event.c:165,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event_names.txt:296。探针覆盖的操作是:在扩展代码中等待。扩展代码注册或使用 Extension 等待类别,并在自身阻塞操作周围报告等待。具体资源与责任方属于已安装扩展,而不是 PostgreSQL 核心。
PG_WAIT_EXTENSION at src/backend/utils/activity/wait_event.c:165 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:296. The instrumented operation is: Waiting in an extension. Extension code registers or uses the Extension wait class and reports the wait around its own blocking operation. The exact resource and owner belong to the installed extension, not PostgreSQL core.
通常正常
是否正常取决于具体扩展、版本以及扩展作者说明的操作。
Normality depends on the exact extension, version, and operation documented by its author.
值得警惕
自定义名称持续存在并影响服务,或扩展无法说明由哪个对端/资源推进时,应当调查。
Investigate when the custom name persists with service impact, or when the extension cannot explain which peer or resource makes progress.
诊断 SQL
直接在 psql 里跑;标注的是语句里用到的视图与列所要求的最低版本。
正在等待 Extension/Extension 的会话Sessions waiting on Extension/Extension
PG ≥ 13SELECT pid, backend_type, usename, datname, application_name,
state, now() - query_start AS query_age,
now() - xact_start AS xact_age,
wait_event_type, wait_event,
pg_blocking_pids(pid) AS blocking_pids,
left(query, 160) AS query
FROM pg_stat_activity
WHERE wait_event_type = 'Extension'
AND wait_event = 'Extension'
ORDER BY query_age DESC NULLS LAST;
当前 Extension 等待分布Current Extension cohort
PG ≥ 13SELECT wait_event, count(*) AS waiting_sessions,
count(*) FILTER (WHERE state = 'active') AS active_waiters,
max(now() - query_start) AS oldest_query
FROM pg_stat_activity
WHERE wait_event_type = 'Extension'
GROUP BY wait_event
ORDER BY waiting_sessions DESC, wait_event;
这些会话的锁与关系上下文Lock and relation context for these sessions
PG ≥ 13SELECT a.pid, l.locktype, l.mode, l.granted, l.fastpath,
d.datname, n.nspname, c.relname,
l.page, l.tuple, l.virtualxid, l.transactionid,
l.classid, l.objid, l.objsubid
FROM pg_stat_activity AS a
LEFT JOIN pg_locks AS l ON l.pid = a.pid
LEFT JOIN pg_database AS d ON d.oid = l.database
LEFT JOIN pg_class AS c
ON c.oid = l.relation
AND l.database = (
SELECT oid FROM pg_database WHERE datname = current_database()
)
LEFT JOIN pg_namespace AS n ON n.oid = c.relnamespace
WHERE a.wait_event_type = 'Extension'
AND a.wait_event = 'Extension'
ORDER BY a.pid, l.granted, l.locktype, l.mode;
处置步骤
- 记录扩展名称与精确 extversion。
- 在 PG17+ 本机 pg_wait_events 中查询已注册名称。
- 检查扩展源码与 runbook 中配对的 wait start/end 调用。
英文原文
- Record the extension name and exact extversion.
- Query the local PG17+ pg_wait_events view for registered names.
- Inspect the extension source and runbook for its paired wait start/end calls.
相关参数与指标
waiting_sessionswait_event_share
源码证据
图谱在各版本源码树里核对到的位置,新的在前。「触发点」是真正上报等待事件的调用处,「目录定义」只说明这个名字在枚举里存在。
PostgreSQL 18REL_18_6
-
src/backend/utils/activity/wait_event.c:165PG_WAIT_EXTENSION通用上报动态触发return WaitEventCustomNew(PG_WAIT_EXTENSION, wait_event_name); -
src/backend/utils/activity/wait_event_names.txt:296Extension目录定义动态触发Extension "Waiting in an extension."
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的变动清单。
-
PostgreSQL 10 ← 9.6 新增此事件
该版起出现
在扩展中等待。