2相ロッキングプロトコルとは?にそうロッキングプロトコル
2相ロッキングプロトコルとは、ロックを獲得していく成長相と解放していく縮退相を分け、いったん解放を始めたら新たなロックを獲得しないという規約。これを全トランザクションが守れば、実行結果が何らかの直列実行と同じになること(直列化可能性)が保証される。解放をコミット時点まで遅らせたものは厳格2相ロックと呼ぶ。
最終更新:2026-10-06
この語が出る過去問を解く →背景
ロックを個別に取って早めに返す方式では、返した資源を別のトランザクションが更新し、そのあとで自分が別の資源を取ると、どちらの順に実行したとも言えない結果が生まれる。実行順の妥当性を毎回検査するのは高くつくので、DBMSは個々のスケジュールを調べる代わりに「この規約を守れば必ず安全」と言える十分条件を求めた。その答えがロックの獲得と解放を時間軸で二分するという規約である。
具体例
PostgreSQLやOracle Databaseの行ロックは、更新のたびに取ったロックをコミットまで解放しない厳格2相ロックにあたる。必要な行のロックをすべて取ってから処理し、COMMITの瞬間にまとめて解放する形になる。
試験での引っ掛け
2相ロックが保証するのは直列化可能性だけで、デッドロックを防ぐわけではない。むしろ解放を遅らせるぶん待ちの輪はできやすい。また普通の2相ロックはカスケードアボートを許すが、コミットまで解放しない厳格2相ロックならそれも防げる、という段階の違いが問われる。
関連用語
出た過去問
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA)
2相ロック方式に従うトランザクションに関する記述のうち、適切なものはどれか。
正解:トランザクションの競合直列可能性が保証される。
要点:2相ロックはロック獲得と解放の相を分け直列化可能性を保証
2相ロックは、ロックを獲得していく成長相と解放していく縮退相を分け、いったんロックを解放したら以後は新たなロックを獲得しない規約である。これにより並行実行の結果が何らかの直列実行と同じになること(競合直列可能性)が保証される。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA)
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。
正解:トランザクションは、必要な全てのロックを獲得した後にだけ、ロックを解除できる。
要点:2相ロックは全ロック獲得後にのみ解放を始める規則
2相ロック方式は、ロックを獲得していく成長相と解放していく縮退相に分け、いったん解放を始めたら新たなロックを獲得しない、という規則である。言い換えれば必要なロックをすべて獲得し終えてからでなければ解放できない。この規則により直列化可能なスケジュールが保証される。よってエが正しい。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12(IPA)
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。
正解:トランザクションは、必要な全てのロックを獲得した後にだけ、ロックを解除できる。
要点:2相ロックは全ロック獲得後にのみ解放を始める規則
2相ロック方式は、ロックを獲得していく成長相と解放していく縮退相に分け、いったん解放を始めたら新たなロックを獲得しない、という規則である。言い換えれば必要なロックをすべて獲得し終えてからでなければ解放できない。この規則により直列化可能なスケジュールが保証される。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)
トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa, bに入れる字…
正解:a: Pがコミット完了するまで待機した後、Xの値5を得る / b: Pのコミット完了を待機することなく、Xの値4を得る
要点:2相ロックは待って新値、MVCCは待たず旧版を読む
単版(シングルバージョン)の2相ロッキングでは、更新側が排他ロックを保持したままなので、読取り側はコミットまで待たされ、解放後は更新後の値を読む。一方MVCCは更新時に旧版を残すため、読取り側はロックを待たずにコミット済みの旧版、すなわち更新前の値を読める。READ COMMITTEDでは未コミットの新値を読むことはないので、待たずに読む場合の値は更新前の4になる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。