オンライン表再編成のロックおよび並行性に関する考慮事項

オンライン表再編成における最も重要な面の一つは、ロックの制御方法です。これは、アプリケーション並列性に関して重要なことであるためです。

オンライン表 REORG 操作は、以下のロックを保持できます。
  • 表スペースへの書き込みアクセスを確実にするために、REORG 操作の影響を受ける表スペースに対する IX ロックが取得されます。
  • 表ロックが取得され、REORG のすべての操作の間保持されます。 ロックのレベルは、再編成中に有効なアクセス・モードによって決まります。
    • ALLOW WRITE ACCESS が指定された場合、IS 表ロックが取得されます。
    • ALLOW READ ACCESS が指定された場合、S 表ロックが取得されます。
  • 切り捨てフェーズでは、表の S ロックが要求されます。 S ロックが取得されるまでは、並行トランザクションによる行の挿入が可能です。 挿入されたこれらの行は reorg ユーティリティーによって認識されない可能性があり、表が切り捨てられない可能性があります。 S 表ロックが取得されると、切り捨てられなかった表の行が移動され、表が圧縮されます。 表が圧縮された後、切り捨てポイントが判別された時点で表にアクセスしていたすべてのトランザクションが完了すると初めて、切り捨てが行われます。 スペース再利用の優先度が高くない場合、NOTRUNCATE オプションまたは CLEANUP OVERFLOWS ONLY オプションを使用して、切り捨てフェーズと必要な S ロックを回避できます。
  • REORG ユーティリティーは、表のロックを保持している既存のアプリケーションを特定の時点で待機する場合があります。 この待機は、REORG の開始時、終了時、および切り捨てフェーズ中に発生します。 これは、ロックのために新しい要求をブロックしない Z 表ロックを介して既存のアプリケーションをドレーンすることにより実現されます。 既存のすべてのアプリケーションが表ロックを解放した後、REORG の実行が続行されます。 ただし、ロック・モードは、IS か S のいずれか (前述の判別のとおり) のままとなります。
  • 以下のように、表ロックのタイプによっては、行ロックが取得されることがあります。
    • 表に対する S ロックが保持されている場合、個々の行レベルの S ロックは不要なので、ロックはそれ以上必要ありません。
    • 表に対する IS ロックが保持されている場合は、行が移動される前に NS 行ロックが取得され、移動完了後に解放されます。
    • Db2® pureScale® 環境では、表のロック意図に関係なく、行が移動される前に X 行ロックが取得されます。 ロックは、移動完了後に解放されます。
  • オンライン表 REORG 操作時に、特定の内部ロックが取得される場合もあります。

ロックはオンライン表 REORG 操作および同時ユーザー・アプリケーションの両方のパフォーマンスに影響を与えます。 オンライン表再編成時に生じるロック・アクティビティーについて理解するために、ロック・スナップショット・データを使用できます。