reindexdb — PostgreSQLデータベースのインデックスを再作成する
reindexdb [connection-option...] [option...]
[
--schema | -S
schema
]
...
[
--table | -t
table
]
...
[
--index | -i
index
]
... [dbname]
reindexdb [connection-option...] [option...] --all | -a
reindexdb [connection-option...] [option...] --system | -s [dbname]
reindexdbは、PostgreSQLデータベース内のインデックスを再作成するユーティリティです。
reindexdbは、SQLコマンドREINDEXのラッパです。 このユーティリティを使用しても他の方法でサーバにアクセスしても、データベースインデックスの再作成には実質的な違いはありません。
reindexdbは以下のコマンドライン引数を受け付けます。
-a--allすべてのデータベースのインデックスを再作成します。
[-d] dbname[--dbname=]dbname
インデックス再作成を行うデータベースの名前を指定します。
これが指定されず、かつ、-a(または--all)も使用されていない場合、環境変数PGDATABASEからデータベース名が決まります。
これも設定されていない場合は、接続時に指定したユーザ名が使用されます。
-e--echoreindexdbが生成しサーバに送信するコマンドを表示します。
-i index--index=index
indexのみを再作成します。
複数の-iスイッチを記述することで、複数のインデックスを再作成することができます。
-q--quiet進行メッセージを表示しません。
-s--systemデータベースのシステムカタログのインデックスを再作成します。
-S schema--schema=schema
schemaのみのインデックスを再作成します。
複数の-Sスイッチを指定することで、複数のスキーマのインデックスを再作成できます。
-t table--table=table
tableのインデックスのみを再作成します。
複数の-tを記述することで、複数のテーブルのインデックスを再作成することができます。
-v--verbose処理中に詳細な情報を表示します。
-V--versionreindexdbのバージョンを表示し、終了します。
-?--helpreindexdbコマンドライン引数の使用方法を表示し、終了します。
また、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
どのデータベースを再インデックス付けしなければならないかを見つけ出すために接続するデータベースの名前を指定します。
指定されなければpostgresデータベースが使用され、もし存在しなければtemplate1が使用されます。
PGDATABASEPGHOSTPGPORTPGUSERデフォルトの接続パラメータです。
また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(34.14を参照してください)。
問題が発生した場合、考えられる原因とエラーメッセージについての説明はREINDEXとpsqlを参照してください。 データベースサーバは、指定したホストで稼働している必要があります。 また、libpqフロントエンドライブラリのデフォルトの設定や環境変数が適用されることに注意してください。
reindexdbの実行中にはPostgreSQLサーバに何度も接続しなければならないことがありますが、この場合その度にパスワードが必要です。
そのような場合は~/.pgpassファイルを用意しておくと便利です。
詳細は34.15を参照してください。
データベースtestのインデックスを再作成します。
$reindexdb test
abcdというデータベース内のテーブルfooのインデックスとインデックスbarを再作成します。
$reindexdb --table=foo --index=bar abcd