选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 等待事件 / 扩展

WAIT EVENT · EXTENSION扩展

ExtensionExtension

在扩展中等待。

Waiting in an extension

扩展 引入 10 现存至 20 devel 0 次变动 动态触发图谱档案

类型
扩展
引入版本
10
版本状态
当前稳定版
覆盖版本
11 个 · 10 – 20
触发路径
动态触发
实测发行版
18.6
名称变动
手册章节
监控统计

PostgreSQL 18 手册 官方文档 源码 wait.pg.center

版本轨迹

相对 PostgreSQL 17 无变化。

各版本描述

相邻版本里类型、名称与英文描述都相同的合并成一段,旧的在前。中文取自图谱或本站手册译文,没有译文的只给英文原文。

  1. 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 ≥ 13
SELECT 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 ≥ 13
SELECT 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 ≥ 13
SELECT 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;

处置步骤

  1. 记录扩展名称与精确 extversion。
  2. 在 PG17+ 本机 pg_wait_events 中查询已注册名称。
  3. 检查扩展源码与 runbook 中配对的 wait start/end 调用。
英文原文
  1. Record the extension name and exact extversion.
  2. Query the local PG17+ pg_wait_events view for registered names.
  3. Inspect the extension source and runbook for its paired wait start/end calls.

相关参数与指标

waiting_sessionswait_event_share

源码证据

图谱在各版本源码树里核对到的位置,新的在前。「触发点」是真正上报等待事件的调用处,「目录定义」只说明这个名字在枚举里存在。

PostgreSQL 18REL_18_6

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的变动清单。

  1. PostgreSQL 10 ← 9.6 新增此事件

    该版起出现

    在扩展中等待。

同类事件

事件 引入 版本变动 最近变动
EXTENSION 扩展 1 个
Extension档案 10
在扩展代码中等待。 现存