web-dev-qa-db-ja.com

Postgres 9.4でバキュームがフルになった後、インデックスを再作成する必要がありますか

Postgres 9.4を使用しています。

真空がいっぱいになりました。バキュームとバキュームフルの違いについて読み、バキュームまたはバキュームフルを実行する必要があるかどうかをよく検討しました。私の言う限りでは、バキュームフルが必要で、dbサイズは48 GBから24 GBに減少しました。

バキュームフル後、古いインデックスは古くなり、インデックスの再作成を実行する必要がありますか?

「真空フル詳細分析」を実行したので、分析は真空フルとともに行われます。

Postgres> 9.0の場合、バキュームフル後にインデックスを再作成する必要がないという箇所をいくつか読みましたが、そうであることを確認したいと思います。

27
Akshar Raaj

VACUUM FULL自体はインデックスを再構築するため、VACUUM FULLの直後のREINDEX役に立たないです。

これは9.4のドキュメントの Recovering Disk Space に記載されています。

...占有している余分なディスク領域を取り戻すには、VACUUM FULL、またはCLUSTERまたはALTER TABLEのテーブル書き換えバリアントのいずれかを使用する必要があります。これらのコマンドは、テーブルの新しいコピー全体を書き直し、新しいインデックスを作成します

これは、バージョン9.0より前のVACUUM FULLの実装方法が異なっていたのではないことは間違いありません。

バージョン8.4までは、 [〜#〜] vacuum [〜#〜] のリファレンスドキュメントで、インデックスを再作成する必要性について言及していました。

FULLオプションはインデックスを縮小しません。定期的なREINDEXが引き続き推奨されます。実際、多くの場合、すべてのインデックスを削除してVACUUM FULLを削除し、インデックスを再作成する方が高速です。

しかし、この警告は廃止されました。

39
Daniel Vérité