ログ情報を格納するいくつかのテーブルを持つPostgreSQLデータベースを実行しています。この情報はレポートのみを目的としており、30日以上経過するとファイルにダンプされ、データベースから削除されます。
何百万行も削除される可能性があり、削除後は毎回REINDEXを実行しています。
これで十分ですか、それともVACUUMまたはVACUUM ANALYZEも実行する必要がありますか?またはREINDEXは必要ありませんが、代わりにjust VACUUMまたはVACUUM ANALYZEを実行する必要がありますか?
私たちはPostgreSQL 8.2.3を使用していますが、自動バキュームは許可されていません。
VACUUMは削除されたデータが使用するスペースを再利用できるようにし、トランザクションのラップアラウンドを防止するため、VACUUM ANALYZEを実行する必要があります。ANALYZEはプランナ統計を更新し、レポートクエリのクエリプランを改善します。
REINDEXは理論的には必要ありませんが、インデックスが連続しているため、パフォーマンスが向上する場合があります。
8.2の関連ドキュメントページは ここ(ルーチンの再インデックス) および ここ(ルーチンのバキューム) です。