DB2 10.5 for Linux, UNIX, and Windows

インプレース (オンライン) 表再編成

インプレース表再編成では、表を再編成し、表内のデータへのフルアクセスを許可します。 このようにデータに中断なくアクセスすると、表 REORG 操作の速度が低下します。

DB2® Cancun リリース 10.5.0.4 からは、DB2 pureScale® 環境で、インプレース表の再編成がサポートされます。

インプレースまたはオンライン表 REORG 操作の際、表の各部分が順次再編成されていきます。データは TEMPORARY 表スペースにコピーされません。代わりに行が既存の表オブジェクト内で移動してクラスター化が再確立され、フリー・スペースが再利用され、オーバーフロー行が除去されます。

オンライン表 REORG 操作には、以下の 4 つの主要なフェーズがあります。
  1. n ページを選択する

    このフェーズでは、データベース・マネージャーが n ページの範囲を選択します。n は REORG 処理を行う連続するページのエクステント・サイズで、最小は 32 です。

  2. 範囲を空ける

    REORG ユーティリティーは、この範囲内のすべての行を、表内のフリー・ページに移動します。移動する各行は、行の新しいロケーションのレコード ID (RID) を含む REORG 表ポインター (RP) レコードを残します。行は、そのデータを含む REORG 表オーバーフロー (RO) レコードとして表の空きページに配置されます。このユーティリティーが行の集合の移動を完了すると、表内のデータにアクセスしているすべてのアプリケーションが完了するまで待機します。これらの「古いスキャナー」は、表データへのアクセス時に古い RID を使用します。この待機期間中に開始されるすべての表アクセス (『新しいスキャナー』) は、データにアクセスするために新しい RID を使用します。 すべての古いスキャナーが完了すると、REORG ユーティリティーは RP レコードを削除し、RO レコードを標準レコードに変換することによって、移動した行をクリーンアップします。

  3. 範囲を埋める

    特定の範囲内にあるすべての行が空くと、行が再編成された形式 (使用されている索引に従ってソートされ、定義されている PCTFREE 制限に従った形式) で再び書き込まれます。範囲内のすべてのページが再び書き込まれると、次の連続した n ページが表で選択され、再び処理が始まります。

  4. 表を切り捨てる

    デフォルトでは、表のすべてのページが再編成されると、スペースの再利用のために表が切り捨てられます。NOTRUNCATE オプションが指定されている場合は、再編成された表は切り捨てられません。

オンライン表 REORG 操作中に作成されるファイル

オンライン表 REORG 操作中に、データベース・パーティションごとに .OLR 状態ファイルが作成されます。このバイナリー・ファイルには、xxxxyyyy.OLR という形式の名前があります。xxxx は表スペース ID、yyyy はオブジェクト ID です (それぞれ 16 進数形式)。 このファイルには、一時停止状態のオンライン REORG 操作を再開するために必要な以下の情報が含まれています。
  • REORG 操作のタイプ
  • 再編成されている表のライフ・ログ・シーケンス番号 (LSN)
  • 次に空になる範囲
  • REORG 操作がデータをクラスター化しているか、それとも単にスペースを再利用しているだけか
  • データをクラスター化するのに使用されている索引の ID

.OLR ファイルに関してはチェックサムが実行されます。ファイルが破損してチェックサム・エラーが発生した場合や表 LSN がライフ LSN と一致しなかった場合は、新しい REORG 操作が開始され、新しい状態ファイルが作成されます。

.OLR 状態ファイルが削除された場合は、REORG 処理を再開できず、SQL2219N が戻されて、新しい REORG 操作を開始する必要があります。

再編成処理に関連するファイルは、システムから手動で除去しないでください。