.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "VACUUM" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
VACUUM \- データベースの不要領域の回収とデータベースの解析（オプション）を行う

.SH SYNOPSIS
.sp
.nf
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ \fItable\fR ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ \fItable\fR [ (\fIcolumn\fR [, ...] ) ] ]
.sp
.fi
.SH "説明"
.PP
\fBVACUUM\fR は、削除済みのタプルが使用する領域を回収します。
PostgreSQLの通常動作では、削除されたタプルや更新によって不要となったタプルは、テーブルから物理的には削除されません。
これらのタプルは\fBVACUUM\fRが完了するまで存在し続けます。
そのため、特に更新頻度が多いテーブルでは、\fBVACUUM\fRを定期的に実行する必要があります。
.PP
パラメータの指定がない場合、\fBVACUUM\fRは現在のデータベース内の全てのテーブルを処理します。
パラメータを指定した場合、\fBVACUUM\fRは指定したテーブルのみを処理します。
.PP
\fBVACUUM ANALYZE\fRは、指定したテーブルの1つひとつに対し、\fBVACUUM\fRを行った後、\fBANALYZE\fRを行います。
このコマンドの組合わせは、日常的な管理スクリプトで使うと便利です。
処理の詳細に関しては、ANALYZE [\fBanalyze\fR(l)]を参照してください。
.PP
（FULLが指定されていない）通常の\fBVACUUM\fRは、単に領域を回収し、そこを再利用可能な状態に変更します。
この形式のコマンドでは排他的ロックが取得されていないため、テーブルへの通常の読み書き操作と並行して実行することができます。
\fBVACUUM FULL\fRは、ブロック間でタプルを移動してディスクブロック数を最小にするなど、テーブルを縮小するためにより高度な処理を行います。
この形式では、実行速度がかなり低速になります。また、処理中のテーブルに対する排他的ロックが必要になります。
.SH "パラメータ"
.TP
\fBFULL\fR
領域の回収だけでなく、``完全な''バキュームを選択します。ただし、通常よりも処理に時間がかかります。また、テーブルに対する排他ロックが必要です。
.TP
\fBFREEZE\fR
積極的にタプルの``凍結''を選択します。
FREEZE指定は、vacuum_freeze_min_ageパラメータをゼロとして\fBVACUUM\fRを実行することと同じです。
FREEZEは廃止予定であり、今後のリリースで削除される予定です。
代わりに上記パラメータを設定してください。
.TP
\fBVERBOSE\fR
各テーブルについてバキューム処理の詳細な報告を出力します。
.TP
\fBANALYZE\fR
プランナが使用する統計情報を更新し、問い合わせを実行する最も効率的な方法を決定できるようにします。
.TP
\fB\fItable\fB\fR
バキューム対象のテーブル名です（スキーマ修飾名も可）。
デフォルトは現在のデータベース内の全テーブルです。
.TP
\fB\fIcolumn\fB\fR
解析の対象とする列名です。デフォルトは全列です。
.SH "出力"
.PP
VERBOSEが指定された場合、\fBVACUUM\fRは、現在処理中のテーブルを示す進行状況メッセージを表示します。
同様に、テーブルについての各種の統計情報も表示されます。
.SH "注釈"
.PP
トランザクションブロック内で\fBVACUUM\fRを実行することはできません。
.PP
不要となった行を削除するため、実運用状態のデータベースに対しては（少なくとも毎晩）定期的に\fBVACUUM\fRを実行することを推奨します。
また、テーブルに対して多数の行を追加/削除した後は、そのテーブルに\fBVACUUM ANALYZE\fRを発行することを推奨します。
これによりシステムカタログに最近なされた全ての変更が反映されることになり、PostgreSQLの問い合わせプランナが、問い合わせ計画の作成時により良い選択をできるようになります。
.PP
\fBFULL\fRオプションを日常的に使用することは推奨しませんが、特殊なケースでは有用となる場合もあります。
例えば、テーブル内のほとんど全ての行を削除し、そのテーブルによるディスクの使用量を物理的に縮小したい場合です。
\fBVACUUM FULL\fRはたいていの場合、通常の\fBVACUUM\fRよりもテーブルを縮小します。
\fBFULL\fRオプションはインデックスの縮小を行いません
定期的な\fBREINDEX\fRがまだ推奨されています。
実際のところ、すべてのインデックスを削除し、\fBVACUUM FULL\fRを行い、インデックスを再度作成した方が高速な場合が多いです。
.PP
\fBVACUUM\fRによりI/Oトラフィックがかなり増大しますので、実行中の他のセッションの性能が悪化してしまいます。
このため、コストベースのバキューム遅延機能の使用を推奨する場合があります。
詳細はin the documentationを参照してください。
.PP
PostgreSQLには、バキューム保守作業を自動化する``autovacuum''機能があります。
自動バキューム処理および手作業によるバキューム処理に関する詳細については、in the documentationを参照してください。
.SH "例"
.PP
下記の例は、regressionデータベース内のテーブルに\fBVACUUM\fRを実行したものです。
.sp
.nf
regression=# VACUUM VERBOSE ANALYZE onek;
INFO:  vacuuming "public.onek"
INFO:  index "onek_unique1" now contains 1000 tuples in 14 pages
DETAIL:  3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.08u sec elapsed 0.18 sec.
INFO:  index "onek_unique2" now contains 1000 tuples in 16 pages
DETAIL:  3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.07u sec elapsed 0.23 sec.
INFO:  index "onek_hundred" now contains 1000 tuples in 13 pages
DETAIL:  3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.08u sec elapsed 0.17 sec.
INFO:  index "onek_stringu1" now contains 1000 tuples in 48 pages
DETAIL:  3000 index tuples were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.01s/0.09u sec elapsed 0.59 sec.
INFO:  "onek": removed 3000 tuples in 108 pages
DETAIL:  CPU 0.01s/0.06u sec elapsed 0.07 sec.
INFO:  "onek": found 3000 removable, 1000 nonremovable tuples in 143 pages
DETAIL:  0 dead tuples cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.07s/0.39u sec elapsed 1.56 sec.
INFO:  analyzing "public.onek"
INFO:  "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows
VACUUM
.sp
.fi
.SH "互換性"
.PP
標準SQLには\fBVACUUM\fR文はありません。
.SH "関連項目"
vacuumdb [\fBvacuumdb\fR(1)], in the documentation
