clusterdb — PostgreSQLデータベースをクラスタ化する
clusterdb
[connection-option
...] [ --verbose
| -v
]
[
--table
| -t
table
]
... [dbname
]
clusterdb
[connection-option
...] [ --verbose
| -v
] --all
| -a
clusterdbは、PostgreSQLデータベース内のテーブルを再クラスタ化するユーティリティです。 既にクラスタ化されているテーブルを検索し、前回と同じインデックスを使用して再度クラスタ化します。 一度もクラスタ化されていないテーブルは処理されません。
clusterdbは、SQLコマンドCLUSTERのラッパです。 クラスタ化を行うのに、このユーティリティを使用しても、これ以外のサーバへのアクセス方法を使用しても、特別な違いはありません。
clusterdbでは、下記のコマンドライン引数を指定できます。
-a
--all
全てのデータベースをクラスタ化します。
[-d] dbname
[--dbname=]dbname
クラスタ化するデータベースの名前を指定します。
データベース名が指定されておらず、-a
(または--all
)も使用されていない場合、データベース名は環境変数PGDATABASE
から読み取られます。
この変数も設定されていない場合は、接続のために指定されたユーザ名が使用されます。
-e
--echo
clusterdbが生成し、サーバに送るコマンドをエコー表示します。
-q
--quiet
進行メッセージを表示しません。
-t table
--table=table
table
のみをクラスタ化します。
複数の-t
スイッチを記述することで複数のテーブルをクラスタ化することができます。
-v
--verbose
処理の間、詳細な情報を出力します。
-V
--version
clusterdbのバージョンを表示し、終了します。
-?
--help
clusterdbのコマンドライン引数の使用方法を表示し、終了します。
clusterdbは、さらに、下記のコマンドライン引数を接続パラメータとして受け付けます。
-h host
--host=host
サーバが稼働しているマシンのホスト名を指定します。 この値がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。
-p port
--port=port
サーバが接続を監視するTCPポートもしくはUnixドメインソケットファイルの拡張子を指定します。
-U username
--username=username
接続するためのユーザ名です。
-w
--no-password
パスワードの入力を促しません。
サーバがパスワード認証を必要とし、かつ、.pgpass
ファイルなどの他の方法が利用できない場合、接続試行は失敗します。
バッチジョブやスクリプトなどパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。
-W
--password
データベースに接続する前に、clusterdbは強制的にパスワード入力を促します。
サーバがパスワード認証を要求する場合clusterdbは自動的にパスワード入力を促しますので、これが重要になることはありません。
しかし、clusterdbは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。
こうした余計な接続試行を防ぐために-W
の入力が有意となる場合もあります。
--maintenance-db=dbname
どのデータベースをクラスタ化しなければならないかを見つけ出すために接続するデータベースの名前を指定します。
指定されなければpostgres
データベースが使用され、もし存在しなければtemplate1
が使用されます。
PGDATABASE
PGHOST
PGPORT
PGUSER
デフォルトの接続パラメータです。
PG_COLOR
診断メッセージで色を使うかどうかを指定します。
可能な値はalways
、auto
、never
です。
また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(33.14を参照してください)。
問題が発生した場合、考えられる原因とエラーメッセージについてはCLUSTERとpsqlを参照してください。 データベースサーバは対象ホスト上で稼働していなければなりません。 また、libpqフロントエンドライブラリの、あらゆるデフォルトの設定や環境変数が適用されます。
データベースtest
をクラスタ化します。
$
clusterdb test
xyzzy
というデータベース内のテーブルの1つfoo
をクラスタ化します。
$
clusterdb --table=foo xyzzy