reindexdb — PostgreSQLデータベースのインデックスを再作成する
reindexdb
[connection-option
...] [option
...]
[
-S
| --schema
schema
]
...
[
-t
| --table
table
]
...
[
-i
| --index
index
]
... [dbname
]
reindexdb
[connection-option
...] [option
...] -a
| --all
reindexdb
[connection-option
...] [option
...] -s
| --system
[dbname
]
reindexdbは、PostgreSQLデータベース内のインデックスを再作成するユーティリティです。
reindexdbは、SQLコマンドREINDEX
のラッパです。
このユーティリティを使用しても他の方法でサーバにアクセスしても、データベースインデックスの再作成には実質的な違いはありません。
reindexdbは以下のコマンドライン引数を受け付けます。
-a
--all
すべてのデータベースのインデックスを再作成します。
--concurrently
CONCURRENTLY
オプションを使います。
REINDEXを参照してください。このオプションの注意がすべて詳しく説明されています。
[-d] dbname
[--dbname=]dbname
-a
/--all
が使用されていない場合に、インデックス再作成を行なうデータベースの名前を指定します。
これが指定されていなければ、環境変数PGDATABASE
からデータベース名が決まります。
これも設定されていない場合は、接続時に指定したユーザ名が使用されます。
dbname
は接続文字列でも構いません。
その場合、接続文字列パラメータは衝突するコマンドラインオプションに優先します。
-e
--echo
reindexdbが生成しサーバに送信するコマンドを表示します。
-i index
--index=index
index
のみを再作成します。
複数の-i
スイッチを記述することで、複数のインデックスを再作成することができます。
-j njobs
--jobs=njobs
njobs
個のコマンドを同時に実行することで、reindexコマンドを並列で実行します。
このオプションは処理時間を短縮することもありますが、データベースサーバの負荷も増加します。
reindexdbはデータベースに対するnjobs
個の接続を開くので、max_connectionsの設定は、これらの接続を許容するだけ十分に大きくしてください。
このオプションは--index
や--system
オプションと非互換であることに注意してください。
-q
--quiet
進行メッセージを表示しません。
-s
--system
データベースのシステムカタログのみ、インデックスを再作成します。
-S schema
--schema=schema
schema
のみのインデックスを再作成します。
複数の-S
スイッチを指定することで、複数のスキーマのインデックスを再作成できます。
-t table
--table=table
table
のインデックスのみを再作成します。
複数の-t
を記述することで、複数のテーブルのインデックスを再作成することができます。
--tablespace=tablespace
インデックスを再作成するテーブル空間を指定します。 (この名前は二重引用符で囲まれた識別子として処理されます。)
-v
--verbose
処理中に詳細な情報を表示します。
-V
--version
reindexdbのバージョンを表示し、終了します。
-?
--help
reindexdbコマンドライン引数の使用方法を表示し、終了します。
また、reindexdbは、接続パラメータとして以下のコマンドライン引数を受け付けます。
-h host
--host=host
サーバが稼働しているマシンのホスト名を指定します。 ホスト名がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。
-p port
--port=port
サーバが接続を監視するTCPポートもしくはUnixドメインソケットファイルの拡張子を指定します。
-U username
--username=username
接続するユーザ名を指定します。
-w
--no-password
パスワードの入力を促しません。
サーバがパスワード認証を必要とし、かつ、.pgpass
ファイルなどの他の方法が利用できない場合、接続試行は失敗します。
バッチジョブやスクリプトなどパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。
-W
--password
データベースに接続する前に、reindexdbは強制的にパスワード入力を促します。
サーバがパスワード認証を要求する場合reindexdbは自動的にパスワード入力を促しますので、これが重要になることはありません。
しかし、reindexdbは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。
こうした余計な接続試行を防ぐために-W
の入力が有意となる場合もあります。
--maintenance-db=dbname
-a
/--all
が使われている場合、どのデータベースを再インデックス付けしなければならないかを見つけ出すために接続するデータベースの名前を指定します。
指定されなければpostgres
データベースが使用され、もし存在しなければtemplate1
が使用されます。
これは接続文字列でも構いません。
その場合、接続文字列パラメータは衝突するコマンドラインオプションに優先します。
また、データベース名自身以外の接続文字列パラメータは他のデータベースに接続する際に再利用されます。
PGDATABASE
PGHOST
PGPORT
PGUSER
デフォルトの接続パラメータです。
PG_COLOR
診断メッセージで色を使うかどうかを指定します。
可能な値はalways
、auto
、never
です。
また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(34.15を参照してください)。
問題が発生した場合、考えられる原因とエラーメッセージについての説明はREINDEXとpsqlを参照してください。 データベースサーバは、指定したホストで稼働している必要があります。 また、libpqフロントエンドライブラリのデフォルトの設定や環境変数が適用されることに注意してください。
reindexdbの実行中にはPostgreSQLサーバに何度も接続しなければならないことがありますが、この場合その度にパスワードが必要です。
そのような場合は~/.pgpass
ファイルを用意しておくと便利です。
詳細は34.16を参照してください。
データベースtest
のインデックスを再作成します。
$
reindexdb test
abcd
というデータベース内のテーブルfoo
のインデックスとインデックスbar
を再作成します。
$
reindexdb --table=foo --index=bar abcd