ブロート
MVCCがテーブルやインデックスに残す無駄な領域。UPDATEは実際には新しい行バージョンを書き込み、古い行を「死んだ」ものとして残すだけで、掃除が入るまで領域は解放されない。
掃除を担当するのはautovacuumである。死んだ行は再利用可能になるが、通常はOSに領域が返却されるわけではない。そのため更新の多いテーブルは、データ量の10倍もの容量を占めることがあり、キャッシュ効率は落ち、スキャンも遅くなる。よくある原因はautovacuumが無効なことではなく、何かがそれを妨げていることだ。長時間実行中のトランザクション、放置されたレプリケーションスロット、使われていないプリペアドトランザクションがあると、死んだ行が「見える」状態のままになり回収できない。対処法としては、pg_repackがロックなしでテーブルを書き直し、VACUUM FULLは排他ロックを取って同じことを行う。