専有ロック

更新日:

用語解説

専有ロック(exclusive lock、Xロック)は、トランザクションがデータを更新する際に取得し、同じ対象に対する他トランザクションの共有ロック及び専有ロックと競合する基本的なロックです。

■ 試験で押さえるポイント

  • 基本的な互換表では、Xロック保持中の対象へ他トランザクションはSロックもXロックも取得できず、保持トランザクションの終了又はロック解放まで待ちます。

  • 読取り後に更新する処理では、SロックからXロックへの昇格が必要になる場合があります。複数トランザクションが同時に昇格を待つとデッドロックの原因になります。

  • 通常はCOMMIT又はROLLBACKまで保持して、他トランザクションが未確定更新を読み書きするのを防ぎます。解放時期はロック方式と分離レベルに依存します。

  • MVCCを採用するDBMSでは、通常の読取りが更新行の過去版を読み、Xロックと待ち合わない場合があります。試験のS/X互換表と製品実装の違いを区別します。

■ 選択肢での判断ポイント

同一対象についてS-Sだけが共存でき、S-X、X-S、X-Xは競合する基本表を使います。更新する側が取得するのがXロックです。

例: Tx-Aが商品1へXロックを取得すると、Tx-Bの商品1へのSロック要求もXロック要求も待機します。商品2は別のロック対象なら並行処理できます。

音声で聞く

同じ分野の用語