REINDEX DATABASE
ユーザー・データベースをバキュームして再索引付けする場合には、REINDEX DATABASE コマンドを使用します。 このコマンドを実行するには SYSTEM データベースに admin ユーザーとして接続す る必要があり ます。
ユーザー・データベースで SQL オブジェクトを作成、使用、および削除すると、データベース・ソフトウェアがシステム・カタログにそれらのオブジェクトのエントリを作成します。 システム・カタログ表には、カタログ・アクセスを高速化するための索引が含まれています。 データベース・ユーザーがオブジェクトの作成、使用、削除を頻繁に行い、そうした操作がサード・パーティーの SQL レポート 作成アプリケーションを使用して行われる場合、削除されたオブジェクトの索引エントリーが非常に大きくなり、照会パフォーマンスに影響を及ぼす恐れがあります。
REINDEX DATABASE コマンドを使用すると、カタログ表にある削除済みオブジェクト のエントリーを削除 (バキューム) し、ユーザー・データベースにカタログ表索引を再作成することができます。 このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する権限がなければなりません 。 ユーザー・データベースは、アクティブなセッションも接続も持つことはできません。 NPSシステムは、REINDEX DATABASE コマンドの実行中もオンライン状態を維持できる。 通常、再索引付け処理は高速です。 このコマンドは通常、小規模なユーザー・データベースを更新するのに数秒しか必要とせず、大規模なデータベースの場合には完了する のに数分かかる場合があります。
構文
REINDEX DATABASE <name>入力
| 入力 | 説明 |
|---|---|
| <name> | 再索引付けするユーザー・データベースの名前。 |
出力
| 出力 | 説明 |
|---|---|
| REINDEX DATABASE | コマンドは成功します。 |
| ERROR: command must be run from the system database | このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する必要があります。 |
| ERROR: unable to acquire lock on database name | データベースにアクティブな接続があります。 データベースの再索引付けを行うには、その前にデータベースに対するセッションを停止しなければなりません。 SYSTEM データベースの再索引付けを行うことはできません。 |
| ERROR: REINDEX DATABASE cannot run inside a BEGIN/END block or stored procedure | REINDEX DATABASE コマンドは、ストアード・プロシージャー本文またはトランザクション・ブロック内で使用することはできません。 |
| ERROR: REINDEX DATABASE: permission denied | このコマンドを実行するには、SYSTEM データベースに admin ユーザーとして接続する必要があります。 |
使用法
- データベース
empを再索引付けします。SYSTEM.ADMIN(ADMIN)=> REINDEX DATABASE emp; REINDEX DATABASE