VACUUM (VERBOSE) t; tuples: 0 removed, 20000 remain, 10000 are dead but not yet removable removable cutoff: 696, which was 2 XIDs old when operation ended DBA は、この 696 という値から根本原因を探る必要がある。 04
Vacuum 開始時には存在したロングトランザクションが、Vacuum 終了時には完了していた tuples: 1 removed, 200000 remain, 100000 are dead but not yet removable removable cutoff: 1026, which was 35981 XIDs old when operation ended (oldest xmin blocker の行が出力されない) 07
heap Vacuuming indexes Vacuuming heap Cleaning up indexes Truncating heap ログ出力 ② 再走査 oldest xmin 計算後に走査し、原因を特定して 保存しておく ログ出力時にもう一度走査し、原因がまだ存在 2 していればそれを出力する。存在しなければ ① の保存分を使う 1 ① の保存分を使う場合は at cutoff time の注釈を付け ることで、古い情報だと分かるようにする。
but not yet removable oldest xmin blocker: idle in transaction (pid = 12345) removable cutoff: 696, which was 2 XIDs old when operation ended 候補が存在していない場合 tuples: 1 removed, 200000 remain, 100000 are dead but not yet removable oldest xmin blocker at cutoff time: idle in transaction (pid = 12345) removable cutoff: 1026, which was 35981 XIDs old when operation ended 11
の候補になっているものをすべて保持し、要約を出力する案。 tuples: 0 removed, 20000 remain, 10000 are dead but not yet removable oldest xmin blocker: idle in transaction (pid = 12345) logical replication slot "sub_slot" also holds this xmin 11 other processes hold snapshots at this xmin removable cutoff: 696, which was 2 XIDs old when operation ended 候補はすでに全件収集しているため、走査は増えない 1 件だけ解消しても cutoff が動かない、という事態を避けられる diagnostic log の先例に沿う (log_lock_waits など) Scott Ray からの提案 · 2026-08-08 12