データベーススペシャリスト暗記無料で始める

2相ロッキングプロトコルとは?にそうロッキングプロトコル

2相ロッキングプロトコルとは、ロックを獲得していく成長相と解放していく縮退相を分け、いったん解放を始めたら新たなロックを獲得しないという規約。これを全トランザクションが守れば、実行結果が何らかの直列実行と同じになること(直列化可能性)が保証される。解放をコミット時点まで遅らせたものは厳格2相ロックと呼ぶ。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では5回出題され、ほかに1問の解説で触れられています(2017年度〜2025年度)。

データベーススペシャリスト試験の頻出用語/午前II

別名:2相ロック、2PL、two-phase locking

この語が出る過去問を解く →

背景

ロックを個別に取って早めに返す方式では、返した資源を別のトランザクションが更新し、そのあとで自分が別の資源を取ると、どちらの順に実行したとも言えない結果が生まれる。実行順の妥当性を毎回検査するのは高くつくので、DBMSは個々のスケジュールを調べる代わりに「この規約を守れば必ず安全」と言える十分条件を求めた。その答えがロックの獲得と解放を時間軸で二分するという規約である。

具体例

PostgreSQLやOracle Databaseの行ロックは、更新のたびに取ったロックをコミットまで解放しない厳格2相ロックにあたる。必要な行のロックをすべて取ってから処理し、COMMITの瞬間にまとめて解放する形になる。

試験での引っ掛け

2相ロックが保証するのは直列化可能性だけで、デッドロックを防ぐわけではない。むしろ解放を遅らせるぶん待ちの輪はできやすい。また普通の2相ロックはカスケードアボートを許すが、コミットまで解放しない厳格2相ロックならそれも防げる、という段階の違いが問われる。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では5回出題(2017年度〜2025年度)
  • 分野:午前II
  • 2相ロックが保証するのは直列化可能性だけで、デッドロックを防ぐわけではない。