WAIT EVENT · IPC进程间
IPCMultixactCreation
等待 multixact 创建完成。
Waiting for a multixact creation to complete
进程间 引入 17 现存至 20 devel 0 次变动 仅定义图谱档案
版本轨迹
相对 PostgreSQL 17 无变化。
各版本描述
相邻版本里类型、名称与英文描述都相同的合并成一段,旧的在前。中文取自图谱或本站手册译文,没有译文的只给英文原文。
-
1720
IPCMultixactCreationWaiting for a multixact creation to complete.
Waiting for a multixact creation to complete.
触发机制
目录中仍保留该身份,但源码审计确认在 17.8+, 18.2+ 已没有活动报告点。已知曾可触发范围:17.0-17.7, 18.0-18.1。下方定义位置作为负面证据保留;当前精确版本不会从核心代码路径发出此事件。 证据:[PostgreSQL 17.8 release note](https://www.postgresql.org/docs/17/release-17-8.html)、[PostgreSQL 18.2 release note](https://www.postgresql.org/docs/18/release-18-2.html)。
The catalog identity is present, but source audit found no live reporter in 17.8+, 18.2+. Known active ranges: 17.0-17.7, 18.0-18.1. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: [PostgreSQL 17.8 release note](https://www.postgresql.org/docs/17/release-17-8.html), [PostgreSQL 18.2 release note](https://www.postgresql.org/docs/18/release-18-2.html).
通常正常
在已审计的精确版本上,不应出现活动的核心触发。
No live core occurrence is expected on the audited release.
值得警惕
若监控仍显示它,应核对精确小版本、扩展来源,并确认样本是否陈旧或来自另一台服务器。
If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
已编目但未见上报。
wait loop removed while the catalog identity was retained for compatibility
证据:PostgreSQL 17.8 release note · PostgreSQL 18.2 release note
诊断 SQL
直接在 psql 里跑;标注的是语句里用到的视图与列所要求的最低版本。
正在等待 IPC/MultixactCreation 的会话Sessions waiting on IPC/MultixactCreation
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 = 'IPC'
AND wait_event = 'MultixactCreation'
ORDER BY query_age DESC NULLS LAST;
当前 IPC 等待分布Current IPC 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 = 'IPC'
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 = 'IPC'
AND a.wait_event = 'MultixactCreation'
ORDER BY a.pid, l.granted, l.locktype, l.mode;
处置步骤
- 确认事件所指的对端或阶段。
- 检查该参与者的等待、错误与进展状态。
- 修复停滞的参与者或上游依赖,不要把等待者当作根因。
英文原文
- Identify the peer or phase named by the event.
- Inspect that participant's wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
相关参数与指标
autovacuum_multixact_freeze_max_agevacuum_multixact_freeze_table_age
waiting_sessionswait_event_shareoldest_multixact_age
源码证据
图谱在各版本源码树里核对到的位置,新的在前。「触发点」是真正上报等待事件的调用处,「目录定义」只说明这个名字在枚举里存在。
PostgreSQL 18REL_18_6
-
src/backend/utils/activity/wait_event_names.txt:143MULTIXACT_CREATION目录定义仅定义MULTIXACT_CREATION "Waiting for a multixact creation to complete."
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的变动清单。
-
PostgreSQL 17 ← 16 新增此事件
该版起出现
等待 multixact 创建完成。
同类事件
| 事件 | 引入 | 版本变动 | 最近变动 |
|---|---|---|---|
AppendReady档案
|
14 | — | |
| 等待 Append 计划节点的子计划节点就绪。 | 现存 | ||
ArchiveCleanupCommand档案
|
15 | — | |
| 等待 archive_cleanup_command 完成。 | 现存 | ||
ArchiveCommand档案
|
15 | — | |
| 等待 archive_command 完成。 | 现存 | ||
BackendTermination档案
|
14 | — | |
| 等待另一个后端终止。 | 现存 | ||
BackupWaitWalArchive档案
|
13 | — | |
| 等待备份所需的 WAL 文件成功归档。 | 现存 | ||
BgworkerShutdown档案
|
10 | 171 次 | |
等待后台工作进程关闭。曾用名 BgWorkerShutdown |
现存 | ||
BgworkerStartup档案
|
10 | 171 次 | |
等待后台工作进程启动。曾用名 BgWorkerStartup |
现存 | ||
BtreePage档案
|
10 | — | |
| 等待继续并行 B-tree 扫描所需的页号可用。 | 现存 | ||
BufferIo档案
|
9.6起点 | 174 次 | |
等待缓冲区 I/O 完成。曾用名 BufferIO buffer_io |
现存 | ||
CheckpointDelayComplete档案
|
17 | — | |
| 等待后端解除对检查点完成的阻塞。 | 现存 | ||
CheckpointDelayStart档案
|
17 | — | |
| 等待后端解除对检查点启动的阻塞。 | 现存 | ||
CheckpointDone档案
|
12 | — | |
| 等待检查点完成。 | 现存 | ||
CheckpointStart档案
|
12 | — | |
| 等待检查点启动。 | 现存 | ||
ChecksumEnableStartcondition
|
19 | — | |
| 等待开始启用数据校验和。 | 现存 | ||
ChecksumEnableTemptableWait
|
19 | — | |
| 等待临时表被删除,以便启用数据校验和。 | 现存 | ||
ExecuteGather档案
|
10 | 131 次 | |
| 等待执行 Gather 计划节点时来自子进程的活动。 | 现存 | ||
HashBatchAllocate档案
|
11 | 131 次 | |
等待被选出的 Parallel Hash 参与者分配哈希表。曾用名 Hash/Batch/Allocating |
现存 | ||
HashBatchElect档案
|
11 | 131 次 | |
等待选出一个负责分配哈希表的 Parallel Hash 参与者。曾用名 Hash/Batch/Electing |
现存 | ||
HashBatchLoad档案
|
11 | 131 次 | |
等待其他 Parallel Hash 参与者完成哈希表加载。曾用名 Hash/Batch/Loading |
现存 | ||
HashBuildAllocate档案
|
11 | 131 次 | |
等待被选出的 Parallel Hash 参与者分配初始哈希表。曾用名 Hash/Build/Allocating |
现存 | ||
HashBuildElect档案
|
11 | 131 次 | |
等待选出一个负责分配初始哈希表的 Parallel Hash 参与者。曾用名 Hash/Build/Electing |
现存 | ||
HashBuildHashInner档案
|
11 | 131 次 | |
等待其他 Parallel Hash 参与者完成对 inner relation 的哈希处理。曾用名 Hash/Build/HashingInner |
现存 | ||
HashBuildHashOuter档案
|
11 | 131 次 | |
等待其他 Parallel Hash 参与者完成对 outer relation 的分区。曾用名 Hash/Build/HashingOuter |
现存 | ||
HashGrowBatchesDecide档案
|
11 | 131 次 | |
等待选出一个 Parallel Hash 参与者,以决定后续 batch 扩容。曾用名 Hash/GrowBatches/Deciding |
现存 | ||
HashGrowBatchesElect档案
|
11 | 131 次 | |
等待选出一个负责分配更多 batch 的 Parallel Hash 参与者。曾用名 Hash/GrowBatches/Electing |
现存 | ||
HashGrowBatchesFinish档案
|
11 | 131 次 | |
等待被选出的 Parallel Hash 参与者决定后续 batch 扩容。曾用名 Hash/GrowBatches/Finishing |
现存 | ||
HashGrowBatchesReallocate档案
|
11 | 162 次 | |
等待被选出的 Parallel Hash 参与者分配更多 batch。曾用名 Hash/GrowBatches/Allocating HashGrowBatchesAllocate |
现存 | ||
HashGrowBatchesRepartition档案
|
11 | 131 次 | |
等待其他 Parallel Hash 参与者完成重新分区。曾用名 Hash/GrowBatches/Repartitioning |
现存 | ||
HashGrowBucketsElect档案
|
11 | 131 次 | |
等待选出一个负责分配更多 bucket 的 Parallel Hash 参与者。曾用名 Hash/GrowBuckets/Electing |
现存 | ||
HashGrowBucketsReallocate档案
|
11 | 162 次 | |
等待被选出的 Parallel Hash 参与者完成更多 bucket 的分配。曾用名 Hash/GrowBuckets/Allocating HashGrowBucketsAllocate |
现存 | ||
HashGrowBucketsReinsert档案
|
11 | 131 次 | |
等待其他 Parallel Hash 参与者完成将元组插入新 bucket。曾用名 Hash/GrowBuckets/Reinserting |
现存 | ||
LogicalApplySendData档案
|
16 | — | |
| 等待逻辑复制 leader apply 进程向 parallel apply 进程发送数据。 | 现存 | ||
LogicalParallelApplyStateChange档案
|
16 | — | |
| 等待逻辑复制 parallel apply 进程改变状态。 | 现存 | ||
LogicalSyncData档案
|
10 | 131 次 | |
| 等待逻辑复制远端服务器发送用于初始表同步的数据。 | 现存 | ||
LogicalSyncStateChange档案
|
10 | 131 次 | |
| 等待逻辑复制远端服务器改变状态。 | 现存 | ||
MessageQueueInternal档案
|
10 | 131 次 | |
| 等待另一个进程附加到共享消息队列。 | 现存 | ||
MessageQueuePutMessage档案
|
10 | — | |
| 等待向共享消息队列写入协议消息。 | 现存 | ||
MessageQueueReceive档案
|
10 | — | |
| 等待从共享消息队列接收字节。 | 现存 | ||
MessageQueueSend档案
|
10 | — | |
| 等待向共享消息队列发送字节。 | 现存 | ||
MultixactCreation档案
|
17 | — | |
| 等待 multixact 创建完成。 | 现存 | ||
ParallelBitmapScan档案
|
10 | — | |
| 等待并行位图扫描完成初始化。 | 现存 | ||
ParallelCreateIndexScan档案
|
11 | — | |
| 等待并行 CREATE INDEX 工作进程完成 heap 扫描。 | 现存 | ||
ParallelFinish档案
|
10 | — | |
| 等待并行工作进程完成计算。 | 现存 | ||
ProcarrayGroupUpdate档案
|
10 | 172 次 | |
等待 group leader 在事务结束时清除事务 ID。曾用名 ProcArrayGroupUpdate |
现存 | ||
ProcSignalBarrier档案
|
13 | — | |
| 等待所有后端处理完 barrier 事件。 | 现存 | ||
Promote档案
|
12 | — | |
| 等待备库提升。 | 现存 | ||
RecoveryConflictSnapshot档案
|
13 | — | |
| 等待解决与 vacuum cleanup 有关的恢复冲突。 | 现存 | ||
RecoveryConflictTablespace档案
|
13 | — | |
| 等待解决与删除表空间有关的恢复冲突。 | 现存 | ||
RecoveryEndCommand档案
|
15 | — | |
| 等待 recovery_end_command 完成。 | 现存 | ||
RecoveryPause档案
|
13 | — | |
| 等待恢复操作继续执行。 | 现存 | ||
RepackWorkerExport
|
19 | — | |
| 等待解码工作进程导出新的输出文件。 | 现存 | ||
ReplicationOriginDrop档案
|
10 | 131 次 | |
| 等待复制源变为非活动状态,以便将其删除。 | 现存 | ||
ReplicationSlotDrop档案
|
10 | 131 次 | |
| 等待复制槽变为非活动状态,以便将其删除。 | 现存 | ||
RestoreCommand档案
|
15 | — | |
| 等待 restore_command 完成。 | 现存 | ||
SafeSnapshot档案
|
10 | 131 次 | |
| 等待为 READ ONLY DEFERRABLE 事务获取有效 snapshot。 | 现存 | ||
SyncRep档案
|
10 | 131 次 | |
| 等待同步复制期间来自远端服务器的确认。 | 现存 | ||
WaitForWalFlush
|
19 | — | |
| 等待主服务器或备用服务器上的 WAL 刷盘达到目标 LSN。 | 现存 | ||
WaitForWalReplay
|
19 | — | |
| 等待备用服务器上的 WAL 重放达到目标 LSN。 | 现存 | ||
WaitForWalWrite
|
19 | — | |
| 等待备用服务器上的 WAL 写入达到目标 LSN。 | 现存 | ||
WalReceiverExit档案
|
14 | — | |
| 等待 WAL receiver 退出。 | 现存 | ||
WalReceiverUpstreamCatchup档案
|
17 | — | |
| 等待上游服务器的 WAL flush 位置追上请求的起始点。 | 现存 | ||
WalReceiverWaitStart档案
|
10 | 141 次 | |
| 等待 startup 进程发送流复制的初始数据。 | 现存 | ||
WalSummaryReady档案
|
17 | — | |
| 等待生成新的 WAL summary。 | 现存 | ||
XactGroupUpdate档案
|
11 | 131 次 | |
等待 group leader 在事务结束时更新事务状态。曾用名 ClogGroupUpdate |
现存 | ||