REORG TABLE ステートメントは、指定された表に関連するデータを圧縮します。
呼び出し
このステートメントは、アプリケーション・プログラム内で DB2 CLI 関数を用いて使用することができます。
また、CLP を介して出すこともできます。
構文
>>-REORG TABLE--表名--+------------+---------------------------><
'-int1--int2-'
説明
- REORG TABLE 表名
- 再編成操作の表を識別します。名前は既存の表を識別しなければなりません。
- int1
- リカバリーが必要なバイトの最小パーセンテージ (オプショナル)。
- int2
- 表圧縮を実行するためにリカバリーが必要なバイトの最少数。
規則
- オプショナルである値 int1 および int2 は、一緒に使用するか、またはまったく使用しないかの、いずれかでなければなりません。
- オプショナルである値 int1 は負の数であってはなりません。
- オプショナルである値 int1 は 0 から 100 の範囲でなければなりません。
注意事項
- 表の再編成は、DB2 Everyplace によって内部的に起動することができます。
- 最初のオプショナル・パラメーターは、表に含まれていなければならない使用不可バイトの % です
(つまり、10 % は「少なくとも 10 % のスペースが使用不可である」ことになります)。
2 番目のオプショナル・パラメーターは、表に含まれていなければならない使用不可バイトのバイト数です
(つまり、1000 は「少なくとも 1000 バイトが使用不可のスペースでなければならない」ことになります)。
表の再編成を実際に実行する前に、両方の基準が満たされていなければなりません。
- パラメーターが指定されていない場合、DB2 Everyplace はこれらのオプションについてデフォルト値を使用します。
デフォルトの % は 30、デフォルトのバイト数は 6144 です。
したがって、「reorg table t1」は「reorg table t1 30 6144」と同じことになります。
- 再編成モードが使用可能に設定されている場合、DB2 Everyplace は自動的に表を再編成します。
再編成が使用可能になっていると、DELETE または UPDATE 操作において、
ステートメントの実行後にターゲット表に対して「reorg table table_name 50 30270」が実行されます。
再編成が使用可能になっていると、DROP TABLE 操作において、
表の除去処理の最後に「reorg table DB2eSYSTABLES 30 10240」(DB2eSYSCOLUMNS および DB2eSYSRELS も同様) が実行されます。
- C/C++ プログラムの場合、再編成モードは CLI/ODBC 関数 SQLSetStmtAttr に属性 SQL_ATTR_REORG_MODE を指定することによって設定します。
Java プログラムの場合、再編成モードは DB2eStatement インターフェースの enableReorg メソッドによって設定します。
デフォルト値では、再編成は使用可能になっています。
- 表の再編成処理では、削除または更新によって作られた使用不可スペースを物理的に再利用することによって、
表の含まれているデータ・ファイルを圧縮します。
次に、表の索引が、行の新しい物理位置を指すように更新されます。
- DB2 Everyplace システム・カタログ基本表は再編成することができます。
- REORG TABLE ステートメントの実行中は、データベースで他のアクティビティーを行わないようにしてください。
例
VNNURSE 表は、デフォルト値を用いて圧縮されます。
REORG TABLE VNNURSE
関連した解説