VACUUM [ VERBOSE ] [ ANALYZE ] [ table ] VACUUM [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
各テーブルについてvacuumの詳細な活動報告を出力します。
オプティマイザが使用する列統計情報を更新し、問い合わせを実行する最も効率的な方法を決定 できるようにします。
掃除の対象とするテーブルの名前で、デフォルトは全テーブルとなっています。
解析の対象とするカラムの名前で、デフォルトは全列となっています。
コマンドが受け付けられ、データベースの掃除が完了した時に表示されます。
tableに 関する報告のヘッダです。
tableに 関する解析結果です。
対象テーブルのインデックスに関する解析結果です。
Postgresにおいて、VACUUMには 保存領域の回収・確保とオプティマイザ用の情報収集という2つの 用途があります。
VACUUMは、データベース内の全テーブルを開き、 ロールバックされたトランザクションからレコードを掃除し、 システムカタログ内の統計情報を更新します。 保全される統計情報には、 すべてのテーブルに格納されているタプルの数とページ数が含まれます。
VACUUM ANALYZEは各列のデータ分布の統計情報を収集します。この情報は、 問い合わせを実行する経路が複数存在する場合に有用です。
VACUUMを定期的に実行すれば、 データベースの問い合わせの処理速度が向上します。
下記の例は、regressionデータベース内のテーブルに VACUUMを実行したものです。
regression=> vacuum verbose analyze onek; NOTICE: --Relation onek-- NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0; Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188; Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74. Elapsed 0/0 sec. NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec. NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 3000. Elapsed 0/0 sec. NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 3000. Elapsed 0/0 sec. NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 3000. Elapsed 0/0 sec. NOTICE: Rel onek: Pages: 98 --> 25; Tuple(s) moved: 1000. Elapsed 0/1 sec. NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 1000. Elapsed 0/0 sec. NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 1000. Elapsed 0/0 sec. NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 1000. Elapsed 0/0 sec. NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 1000. Elapsed 0/0 sec. VACUUM