死んだタプルがmax_fsm_pages
で説明できる範囲を超えて積み重なっている場合 、通常のVACUUMではすべてを解放することはできません。最終的な結果として、デッドスペースが蓄積し続けるにつれて、データベースは時間の経過とともにますます大きくなります。 VACUUM FULLを実行すると、この問題が解決するはずです。残念ながら、大規模なデータベースでは非常に長い時間がかかる可能性があります。
この問題が頻繁に発生する場合は、より頻繁に掃除機をかけるか(自動掃除機がここで役立ちます)、max_fsm_pages
を増やす必要があります。 設定。 VACUUM VERBOSEを実行すると、解放されたページ数が表示され、max_fsm_pages
の場合は警告が表示されます。 を超えた場合、これはこの値を決定するのに役立ちます。詳細については、マニュアルを参照してください。 http:// www .postgresql.org / docs / 8.3 / static / runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-FSM
幸い、8.4の可視性マップはこの問題を解決します。 Despeszはいつものようにこのテーマについて素晴らしい話をしています: http://www.depesz.com/index.php/2008/12/08/waiting-for-84-visibility-maps/