{"Entry":{"collection":"waitevent","key":"ipc/SafeSnapshot","name":"SafeSnapshot","aliases":["SafeSnapshot"],"metadata":{"aliases":["SafeSnapshot"],"changed_in":["13"],"changes":[{"from":"9.6","moved":null,"renamed":null,"reworded":null,"status":"added","to":"10"},{"from":"12","moved":null,"renamed":null,"reworded":{"from":"Waiting for a snapshot for a READ ONLY DEFERRABLE transaction.","to":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction."},"status":"changed","to":"13"}],"content_hash":"4acb2511d3a93e25e59fffa4631ed6635fc11c0686bc093712c67d0fcf223ce8","dossier":{"actions":{"en":["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."],"zh":["确认事件所指的对端或阶段。","检查该参与者的等待、错误与进展状态。","修复停滞的参与者或上游依赖，不要把等待者当作根因。"]},"diagnostic_sql":[{"id":"sessions","min_version":"13","sql":"SELECT pid, backend_type, usename, datname, application_name,\n       state, now() - query_start AS query_age,\n       now() - xact_start AS xact_age,\n       wait_event_type, wait_event,\n       pg_blocking_pids(pid) AS blocking_pids,\n       left(query, 160) AS query\nFROM pg_stat_activity\nWHERE wait_event_type = 'IPC'\n  AND wait_event = 'SafeSnapshot'\nORDER BY query_age DESC NULLS LAST;","title":"Sessions waiting on IPC/SafeSnapshot","title_zh":"正在等待 IPC/SafeSnapshot 的会话"},{"id":"cohort","min_version":"13","sql":"SELECT wait_event, count(*) AS waiting_sessions,\n       count(*) FILTER (WHERE state = 'active') AS active_waiters,\n       max(now() - query_start) AS oldest_query\nFROM pg_stat_activity\nWHERE wait_event_type = 'IPC'\nGROUP BY wait_event\nORDER BY waiting_sessions DESC, wait_event;","title":"Current IPC cohort","title_zh":"当前 IPC 等待分布"},{"id":"lock_objects","min_version":"13","sql":"SELECT a.pid, l.locktype, l.mode, l.granted, l.fastpath,\n       d.datname, n.nspname, c.relname,\n       l.page, l.tuple, l.virtualxid, l.transactionid,\n       l.classid, l.objid, l.objsubid\nFROM pg_stat_activity AS a\nLEFT JOIN pg_locks AS l ON l.pid = a.pid\nLEFT JOIN pg_database AS d ON d.oid = l.database\nLEFT JOIN pg_class AS c\n  ON c.oid = l.relation\n AND l.database = (\n       SELECT oid FROM pg_database WHERE datname = current_database()\n     )\nLEFT JOIN pg_namespace AS n ON n.oid = c.relnamespace\nWHERE a.wait_event_type = 'IPC'\n  AND a.wait_event = 'SafeSnapshot'\nORDER BY a.pid, l.granted, l.locktype, l.mode;","title":"Lock and relation context for these sessions","title_zh":"这些会话的锁与关系上下文"}],"emission":{"status":"active","verified_release":"18.6"},"incident_pattern":{"en":"","zh":""},"mechanism":{"en":"`WAIT_EVENT_SAFE_SNAPSHOT` at `src/backend/storage/lmgr/predicate.c:1589` is the grep-verified reporting path. The public identity/resource is mapped at `src/backend/utils/activity/wait_event_names.txt:157`. The instrumented operation is: Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction. The SafeSnapshot path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.","zh":"`WAIT_EVENT_SAFE_SNAPSHOT` 位于 `src/backend/storage/lmgr/predicate.c:1589`，是经 grep 核验的报告路径。公共身份/资源映射位于 `src/backend/utils/activity/wait_event_names.txt:157`。探针覆盖的操作是：等待为 READ ONLY DEFERRABLE 事务获取有效 snapshot。SafeSnapshot 路径已经到达进程协调点，会休眠到对端、worker、屏障、队列或复制阶段发出进展信号。"},"metrics":["waiting_sessions","wait_event_share"],"normal":{"en":"Brief rendezvous is normal when every participant continues to advance.","zh":"只要所有参与者都在继续推进，短暂汇合就属正常。"},"official_descriptions":{"13":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","14":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","15":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","16":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","17":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction","18":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction"},"record_kind":"event","source_locations":[{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","excerpt":"ProcWaitForSignal(WAIT_EVENT_SAFE_SNAPSHOT);","grep_pattern":"WAIT_EVENT_SAFE_SNAPSHOT","grep_verified":true,"kind":"trigger","line":1589,"major":18,"path":"src/backend/storage/lmgr/predicate.c","status":"live_trigger","symbol":"WAIT_EVENT_SAFE_SNAPSHOT","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/REL_18_6/src/backend/storage/lmgr/predicate.c#L1589","version":"18.6"},{"commit":"724edf9bde9d356724ad384a2e196edc3c9f80f7","excerpt":"SAFE_SNAPSHOT\t\"Waiting to obtain a valid snapshot for a \u003cliteral\u003eREAD ONLY DEFERRABLE\u003c/literal\u003e transaction.\"","grep_pattern":"SAFE_SNAPSHOT","grep_verified":true,"kind":"catalog_definition","line":157,"major":18,"path":"src/backend/utils/activity/wait_event_names.txt","status":"live_trigger","symbol":"SAFE_SNAPSHOT","tag":"REL_18_6","url":"https://github.com/postgres/postgres/blob/REL_18_6/src/backend/utils/activity/wait_event_names.txt#L157","version":"18.6"}],"source_status":"live_trigger","trouble":{"en":"Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.","zh":"同一阶段连续三次采样仍存在、预期对端缺失或被阻塞，或队列及其依赖者停止推进时，应当调查。"}},"first_version":"10","has_dossier":true,"imported_at":"2026-09-27T17:57:32.808196+08:00","key":"ipc/safesnapshot","last_version":"20","name":"SafeSnapshot","position":177,"present_in":["10","11","12","13","14","15","16","17","18","19","20"],"slug":"safe-snapshot","source_rev":"english-manuals:11db0cd5958355c4a775b010d2f3e1963238e8d93858c7e4861d287d9199c791","summary":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","summary_zh":"","type":"IPC","type_slug":"ipc","type_variants":["IPC"]}},"Definition":{"Collection":"waitevent","Key":"ipc/SafeSnapshot","SourceDatabase":"center","Version":"18","SourceTable":"waitevent","SourceKey":"ipc/safesnapshot","SourceRevision":"english-manuals:11db0cd5958355c4a775b010d2f3e1963238e8d93858c7e4861d287d9199c791","Facts":{"description":"Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.","description_zh":"","doc":{"anchor":"WAIT-EVENT-IPC-TABLE","file":"monitoring-stats.html","lang":"en","sha256":"aa979eed08627fbf715a9d792094a162a73671db5af810f3ab2aad3e073d5722","slug":"18"},"lang":"en","name":"SafeSnapshot","source":"english-manual","type":"IPC","zh_from":""},"ManualEvidence":{"doc":{"anchor":"WAIT-EVENT-IPC-TABLE","file":"monitoring-stats.html","lang":"en","sha256":"aa979eed08627fbf715a9d792094a162a73671db5af810f3ab2aad3e073d5722","slug":"18"}},"MeasuredEvidence":{}},"Text":{"Collection":"waitevent","Key":"ipc/SafeSnapshot","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"SafeSnapshot","Summary":"等待获取READ ONLY DEFERRABLE事务的有效快照。","BodyHTML":"\u003cp\u003e等待获取READ ONLY DEFERRABLE事务的有效快照。\u003c/p\u003e","SourceRevision":"2026-08-31@34d13c8","ContentHash":"60130d83b15dad17c7776fa424f7be6335fd052a4911a0c73f195b9250b1a315","Payload":{"description_zh":"等待获取READ ONLY DEFERRABLE事务的有效快照。","zh_from":"doc"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
