vacuumdb

名前

vacuumdb -- PostgreSQLデータベースの不要領域の回収と解析を行う

概要

vacuumdb [connection-option...] [--full | -f] [--verbose | -v] [--analyze | -z] [--freeze | -F] [--table | -t table [( column [,...] )] ] [dbname]
vacuumdb [connection-options...] [--all | -a] [--full | -f] [--verbose | -v] [--analyze | -z] [--freeze | -F]

説明

vacuumdbは、PostgreSQLデータベースの不要領域のクリーンアップを行うユーティリティです。 また、vacuumdbPostgreSQLの問い合わせオプティマイザが使用する内部的な統計情報も生成します。

vacuumdbは、SQLのVACUUMコマンドのラッパです。 このユーティリティを使っても、これ以外の方法でサーバにアクセスしてバキューム(データベースのクリーンアップ)を行っても特に違いは生じません。

オプション

vacuumdbでは、下記のコマンドライン引数を指定できます。

-a
--all

全てのデータベースに対してバキュームを行います。

[-d] dbname
[--dbname] dbname

不要領域のクリーンアップ、または、解析を行うデータベース名を指定します。 データベース名が指定されておらず、-a(または--all)も指定されていない場合、データベース名はPGDATABASE環境変数から読み取られます。 この変数も設定されていない場合は、接続時に指定したユーザ名が使用されます。

-e
--echo

vacuumdbが生成し、サーバに送るコマンドをエコー表示します。

-f
--full

"完全な(full)"クリーンアップを行います。

-q
--quiet

進行メッセージを表示しません。

-t table [ (column [,...]) ]
--table table [ (column [,...]) ]

tableのみをクリーンアップ/解析します。 列名は--analyzeオプションがある場合にのみ設定できます。

ティップ: クリーンアップする列を指定する場合は、シェルで括弧をエスケープする必要があるでしょう (後述の例を参照してください)。

-v
--verbose

処理中に詳細な情報を表示します。

-z
--analyze

オプティマイザが使用する、データベースの統計情報を算出します。

-F
--freeze

積極的にタプルを"凍結"します。

vacuumdbには、以下に記す接続パラメータ用のコマンドライン引数も指定することもできます。

-h host
--host host

サーバが稼働しているマシンのホスト名を指定します。 ホスト名がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。

-p port
--port port

サーバが接続を監視するTCPポートもしくはUnixドメインソケットファイルの拡張子を指定します。

-U username
--username username

接続するユーザ名を指定します。

-w
--no-password

パスワードの入力を促しません。 サーバがパスワード認証を必要とし、かつ、.pgpassファイルなどの他の方法が利用できない場合、接続試行は失敗します。 バッチジョブやパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。

-W
--password

データベースに接続する前に、vacuumdbは強制的にパスワード入力を促します。

サーバがパスワード認証を要求する場合vacuumdbは自動的にパスワード入力を促しますので、これが重要になることはありません。 しかし、vacuumdbは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。 こうした余計な接続試行を防ぐために-Wの入力が有意となる場合もあります。

環境

PGDATABASE
PGHOST
PGPORT
PGUSER

デフォルトの接続パラメータです。

また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(項30.13を参照してください)。

診断

問題が発生した場合、考えられる原因とエラーメッセージについての説明はVACUUMpsqlを参照してください。 データベースサーバは、指定したホストで稼働している必要があります。 また、libpqフロントエンドライブラリのデフォルトの設定や環境変数が適応されることに注意してください。

注釈

vacuumdbの実行中にはPostgreSQLサーバに何度も接続しなければならないことがありますが、この場合その度にパスワードが必要です。 そのような場合は~/.pgpassファイルを用意しておくと便利です。 詳細は項30.14を参照してください。

testというデータベースをクリーンアップするには、下記のコマンドを実行します。

$ vacuumdb test

bigdbという名前のデータベースのクリーンアップとオブティマイザ用の解析を行う場合には、下記のコマンドを実行します。

$ vacuumdb --analyze bigdb

xyzzyという名前のデータベースのfooという1つのテーブルだけの掃除と、そのテーブルのbarという1つの列にだけ対してオブティマイザ用の解析を行う場合には、下記のコマンドを実行します。

$ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy

関連項目

VACUUM