管理の手引き


カタログとユーザー表の再編成

索引を使用する SQL ステートメントのパフォーマンスは、大量の更新、削除、 または挿入が行われた後に低下することがあります。 普通、新しく挿入された行は、 索引で定義されている論理順序と同じ順序には物理的に配置されません (クラスター索引を使用していなければ)。 論理上の順次データは、実際には順序どおりにはなっていない物理的なデータ・ページに入っていることもあるので、 データベース・マネージャーはデータにアクセスするのに追加の読み取り操作を実行する必要があります。

一般的に、表の再編成には、統計を実行するより長い時間がかかります。 データの現在の統計を収集し、アプリケーションを再バインドするだけで、 パフォーマンスは十分向上することがありますので、まずその方法を試してください。 それでもパフォーマンスが向上しない場合は、 表や索引のデータの配置が有効でない可能性があります。 その場合は、再編成が役に立つかもしれません。 このセクションの情報はユーザー独自の表の再編成だけでなく、 同様に再編成が必要になったシステム・カタログ表にも適用されます。

タイプ付き表の場合、 指定した表名は、階層のルート表の名前と同じでなければなりません。

REORGCHK コマンドは、表の物理的特性に関する情報を戻し、 表を再編成した方が利点が多いかどうかを示します。 このコマンドは、ローカルおよびリモート・ユーザーのどちらも使用できます。 コマンド出力の解釈方法など詳細については、コマンド解説書 を参照してください。
注:REORGCHK コマンドは、 拡張索引、または宣言済み一時表のいかなるデータも表示しません。

REORG ユーティリティーは、任意指定で、 指定された索引に従ってデータを物理順序で再配置します。 REORG には、索引を使用して表の行の順序を指定するというオプションがあり、 このオプションを選択すると、その索引に従って表データがクラスター化され、 RUNSTATS ユーティリティーが収集する CLUSTERRATIO 統計または CLUSTERFACTOR 統計が改善されます。 その結果、索引の順序に行を並べる必要がある SQL ステートメントの処理を効率的に行うことができるようになります。 未使用で空のスペースを除去すると、 REORG は表をよりコンパクトに保管することができます (スペースを未使用のままにする ALTER TABLE を使用した時に PCTFREE を指定した場合でも可能)。

REORG または REORGCHK コマンドではニックネームを使用しないでください。

REORG ユーティリティーでは、 影響を受ける表データと索引を操作する他のすべてのアプリケーションがオフラインでなければなりません。 作業環境によっては、 アプリケーションがデータを操作できない時間の長さを限定することができます。 この環境では、オンラインの索引再編成ユーティリティーの使用を考慮することができます。

表データの再編成をいつ行うかを決定する際に、 次の要素を考慮することができます。

REORG ユーティリティーを実行するには、対象となる表に関する SYSADM、 SYSMAINT、 SYSCTRL、 DBADM のいずれかの権限か、CONTROL 特権が必要です。

REORG ユーティリティーは一時表を使用しますが、この表は、表に列が追加された場合や表に LOB 列がある場合には、元の表よりもかなり大きくなる場合があります。 これらの一時表を大きくすると、 REORG ユーティリティーによって作成された永続表も大きくなります。

タイプ付き表の場合、 指定した表名は、階層のルート表の名前と同じでなければなりません。
注:REORG ユーティリティーを使用しても、宣言済み一時表を再編成することはできません。

REORG ユーティリティーを利用すると、 一時 REORG 表を作成するための一時表スペースを指定することができます。 一時表スペースを指定しないと、REORG ユーティリティーは、 再編成される表が含まれているのと同じ表スペースに、一時 REORG 表を作成します。 次の指針は、一時表スペースを使用するかどうかを判別するのに助けになります。

REORG ユーティリティーは、 オープン・カーソルを暗黙的にクローズします。

8 KB のページを使用している表スペース内で表を再編成している、 ということを忘れないでください。 再編成中に使用される一時表スペースには、 基本表スペースと同サイズのページがなければなりません。

REORG が正常に完了しなかった場合は、一時ファイル、表、 または表スペースを削除しないようにしてください。 これらのファイルや表は、障害が起こる前にどの程度の再編成が進行していたのかによって、 REORG ユーティリティーが行った変更をロールバックしたり、 再編成を完了したりするためにデータベース・マネージャーが使用するものです。

区分データベースの場合、 REORG ユーティリティーは各区画ごとにデータの再編成を行いますので、 ユーティリティーがある区画で失敗した場合には、 その失敗した区画のみがロールバックされます。 また、一時表を保管するディレクトリー・パスを指定した場合には、このパスは、 各データベース区画でデータベース・マネージャーによって拡張されます。 したがって、他のデータベース区画と共用するパスを指定した場合には、 一時ファイルは、そのパスの下の (ノード名で識別される) さまざまなサブディレクトリーに保管されます。

オンライン索引再編成

索引の葉ページにある空きスペースの最大量としてユーザー定義可能な限界値を設定すれば、 オンライン再編成が可能になります。 葉ページから索引キーが削除された場合にこの限界値を超えていると、 索引の隣接する葉ページがチェックされ、2 つの葉ページをマージできるかどうか判別されます。 2 つの隣接するページをマージするのに十分なスペースがあれば、 データベースをオフラインにしないでマージが行われます。

この索引のオンライン再編成は、 このリリース以後のリリースで作成した索引でのみ行うことができます。 このようなオンライン再編成の能力を既存の索引が必要とする場合には、 索引の葉ページに必要な内部変更を行われるよう、 その索引を一度消去してから再作成する必要があります。 特定の索引についてオンライン索引再編成をオンにするには、 索引の作成時に MINPCTUSED 値を指定します。 MINPCTUSED 値は、100 未満の値に設定する必要があります。 この値は再編成の限界値、つまり、 隣接する索引の葉ページのマージを試行する前に索引ページで使われるスペースのパーセンテージ (最小許容値) となります。 隣接する索引の葉ページをマージすることが目標なので、 MINPCTUSED の値は 50 パーセントより小さくすることをお勧めします。 MINPCTUSED の値をゼロ (省略時値) にすると、 オンライン再編成は使用できません。

オンライン索引再編成の終了後に解放された葉ページは、再使用することができます。 ただし、解放されたページが使用できるのは、同じ表にある索引に対してだけです。 表を完全に再編成すると、DMS 記憶モデルで作業している場合には、 他のオブジェクト用にページが解放されます。 SMS 記憶モデルで作業している場合には、ディスク・スペースが解放されます。

索引の葉ページ以外のページは、オンライン索引再編成の終了後に解放されることはありません。 しかし、表を完全に再編成すると、可能な限り索引を小さくすることができます。 葉ページと葉ページ以外のページは、索引のレベルと同じ数だけ削減されます。

表を再編成する必要を回避する

表の再編成の必要を削減するには、表を作成した後に以下の事柄を行ってください。

これで、クラスター化索引を持つテーブルができました。 クラスター化索引は、表上の PCTFREE に関連して、 元の分類順序を保ちます。 ページ上に十分なスペースができたので、正しいページに新しいデータを挿入することができます。 これにより、クラスター化索引のクラスター化特性が保持されます。 データがさらに挿入され、表のページがいっぱいになると、表の最後にレコードが追加され、 表のクラスター特性は徐々に失われます。

クラスター化索引の作成後、REORG または分類と LOAD の実行をお勧めします。 クラスター化索引はデータの特定の順序を保持しようとし、 RUNSTATS ユーティリティーが収集した CLUSTERRATIO または CLUSTERFACTOR 統計を改善します。

REORG 中に各ページに残される空きスペースの量は、表の PCTFREE 値によって決まります。 この値が設定されていなければ、REORG はデータの再編成時にページを埋めます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]