排他制御とロックの試験問題への適用

DBロック問題では、各トランザクションがどの行を読み書きし、どのロックを保持・要求しているかを表にして追う。単純待ちと循環待ちを分ける。

この単元で学ぶこと

  • 共有同士の互換の意味と役割を説明できる
  • 共有と排他の競合の意味と役割を説明できる
  • ロック取得順の意味と役割を説明できる
  • ロック状態表から待ち・デッドロック・改善策を判断できる

本文解説

ロックの互換性、粒度、保持時間、取得順を確認すると、競合・デッドロック・性能低下の原因を特定しやすい。

共有同士の互換 同じ対象への共有ロック同士は共存できることが多い。 読取り並行性を保つ。

共有と排他の競合 排他更新中は共有読取りも待たされる場合がある。 分離レベル等の実装条件も関係する。

ロック取得順 複数対象を同じ順で取得すると循環待ちを減らせる。 デッドロック予防の基本。

タイムアウト/中断 長時間待ちやデッドロック時に一方を中断し再試行する。 DBMSが被害側を選ぶことがある。

短いトランザクション 必要な処理だけをまとめ、不要に長くロックを保持しない。 競合時間を減らせる。

保持ロックと要求ロックを書き、矢印が循環するかを見る。

T1:A保持/B要求、T2:B保持/A要求なら循環。A→Bの順へ統一するとこのパターンを避けやすい。

図解

DBロック状態表
各トランザクションの保持・要求を並べ、循環待ちを検出する。

重要ポイント

  • 共有同士の互換: 同じ対象への共有ロック同士は共存できることが多い。
  • 共有と排他の競合: 排他更新中は共有読取りも待たされる場合がある。
  • ロック取得順: 複数対象を同じ順で取得すると循環待ちを減らせる。
  • タイムアウト/中断: 長時間待ちやデッドロック時に一方を中断し再試行する。
  • デッドロック対策は取得順と保持時間の両方を見る。

間違えやすい点

  • 待ち時間が長いだけで必ずデッドロックとしない。
  • 中断されたトランザクションの再試行要否を忘れない。
  • ロック粒度と保持時間を同じ概念と扱わない。

用語解説

共有同士の互換
同じ対象への共有ロック同士は共存できることが多い。
共有と排他の競合
排他更新中は共有読取りも待たされる場合がある。
ロック取得順
複数対象を同じ順で取得すると循環待ちを減らせる。
タイムアウト/中断
長時間待ちやデッドロック時に一方を中断し再試行する。
短いトランザクション
必要な処理だけをまとめ、不要に長くロックを保持しない。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。