5

これら2つのことについての私の理解が正しいことを確認したいだけです。関連する場合は、Postgres 9.4 を使用しています。

テーブルや多数の行を削除した後など、定期的にファイルシステムからスペースを再利用しようとするときは、データベースをバキュームする必要があると思います。

新しいインデックスを作成した後、または (定期的に) テーブルに大量の行を追加または削除した後にデータベースを分析して、クエリ プランナーが適切な呼び出しを行えるようにする必要があると私は考えています。

そうですか?

4

2 に答える 2

7
vacuum analyze; 

統計を収集し、多くのデータが動的である限り頻繁に実行する必要があります (特に一括挿入)。オブジェクトを排他的にロックしません。システムに負荷がかかりますが、それだけの価値があります。テーブルのサイズは縮小しませんが、散らばって解放された場所 (たとえば、削除された行) を再利用のためにマークします。

vacuum full;

テーブルのコピーを作成し、それに切り替えることで、テーブルを再編成します。このバキュームを実行するには追加のスペースが必要ですが、オブジェクトの使用されていないスペースをすべて再利用します。したがって、オブジェクトの排他ロックが必要です (他のセッションはそれが完了するまで待機します)。データが変更 (削除、更新) されたとき、および他のユーザーを待つ余裕があるときに実行する必要があります。

どちらも動的データベースでは非常に重要です

于 2015-06-23T06:01:01.600 に答える