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

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

Db2® Cancun Release 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 オプションが指定されている場合は、再編成された表は切り捨てられません。

重要: 表のページ数が 3 ページ未満の場合、インプレース表再編成は実行されません。

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

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

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

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

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