VACUUM

Name

VACUUM  --  Postgres データベースのゴミ掃除と解析 を行なう。

Synopsis

VACUUM [ VERBOSE ] [ ANALYZE ] [ table ]
VACUUM [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
  

入力

VERBOSE

各テーブルについて vacuum の詳細な動作報告を出力します。

ANALYZE

オプティマイザが問い合わせの実行に最も効率的な方法を決定す る際に使用する列の統計情報を更新します。

table

ゴミ掃除の対象とするテーブル名。デフォルトは全テーブルです。

column

解析の対象とする列名。デフォルトは全列です。

出力

VACUUM

コマンドは正常に処理され、データベースのゴミ掃除が完了しました。

NOTICE: --Relation table--

table に 関する報告のヘッダです。

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.

table に 関する解析結果そのものです。

NOTICE: Index index: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.

対象テーブルのインデックスに関する解析結果です。

説明

Postgres における VACUUM には保存領域の回収・確保のための手段 とオプティマイザ用の情報収集のための手段という 2 つの目的があ ります。

VACUUM は、データベース内の全クラスを開き、 トランザクションからのロールバック用のレコードを空にし、システ ムカタログ内の統計情報を更新します。 統計情報として保全されているものには、タプル数と全クラスを保存し ているページ数があります。

VACUUM ANALYZE は各列のデータがどのように 分布しているのかを表す統計情報を収集します。 この情報は、問い合わせを実行する経路が複数存在する場合に価値があ ります。

VACUUM を定期的に実行すれば、データベースに対 するユーザからの問い合わせの処理速度が向上します。

注意

開いているデータベースが VACUUM の対象と なります。

不要となった行を削除した状態に保つために、実運用状態のデータ ベースに対して毎晩定期的に VACUUMM を実行 することを推奨します。 特に、巨大なクラスを Postgres にコ ピーした後や多くのレコードを削除した後に、 VACUUM ANALYZE 問い合わせの発行を行なうこと を推奨します。 これによりシステムカタログは最近なされた変更の全てを反映したも のになり、Postgres の問い合わせオプ ティマイザが、ユーザ問い合わせの計画作成時により良い選択をでき るようになります。

使用法

以下の例は、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
   

互換性

SQL92

SQL92 には VACUUM 文 はありません。