2相ロッキングプロトコルとは?にそうロッキングプロトコル
2相ロッキングプロトコルとは、トランザクションの動作を、ロックを取り続ける成長相と解放していく縮退相の2つに分け、いったん1つでも解放したら以後は新たなロックを取らないと定めた規約。この順序をすべてのトランザクションが守れば、同時実行の結果が何らかの直列実行と一致すること(直列化可能性)が保証される。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
同時実行を許せば処理は速くなるが、更新の割り込みで結果が直列実行と食い違いうる。実行順序の妥当性を毎回検査するのは現実的でないため、各トランザクションが個別に守るだけで全体の正しさが導ける規則が求められた。ロックの獲得と解放を時間的に分離するという単純な条件でそれが得られる点が、このプロトコルの価値である。
具体例
口座間の振替では、出金側と入金側の両方に専有ロックを取り、2つの更新を終えてからまとめて解放する。途中で出金側だけ先に解放してから入金側を取りに行くと2相の条件を破り、他のトランザクションに中途半端な状態を読ませてしまう。実装では、解放をコミット時点まで遅らせる厳格2相ロックが広く使われる。
試験での引っ掛け
直列化可能性は保証するが、デッドロックは防げない(互いのロック待ちは依然として起こる)ため、待ちグラフによる検出やWait-Die/Wound-Wait方式が別途要る。コミットまで解放を遅らせる方式は厳格2相ロックと呼ばれ、未コミットの値を読ませないことでカスケードアボートを防ぐ。分散トランザクションの確定手続きである2相コミットメントとは、名前が似ているだけの別概念である。
関連用語
出典・参考
公式シラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。