2相ロッキングプロトコルに従ってロックを獲得するトランザクションA、Bを図のように同時実行した場合に、デッドロックが発生しないデータ処理順序はどれか。ここで、readとupdateの位置は、アプリケーションプログラムでの命令発行時点を表す。また、データWへのreadは共有ロックを要求し、データX、Y、Zへのupdateは各データへの専有ロックを要求する。
デッドロック回避の基本は、資源のロック順序を全体でそろえること

| ① | ② | ③ | ④ | |
|---|---|---|---|---|
| ア | read W | update Y | update X | update Z |
| イ | read W | update Y | update Z | update X |
| ウ | update X | read W | update Y | update Z |
| エ | update Y | update Z | update X | read W |
選択肢
- ア①read W ②update Y ③update X ④update Z
- イ①read W ②update Y ③update Z ④update X
- ウ①update X ②read W ③update Y ④update Z
- エ①update Y ②update Z ③update X ④read W
正解と解説
正解:ウ ①update X ②read W ③update Y ④update Z
2相ロッキングでは獲得したロックをトランザクション終了まで解放しないため、2つのトランザクションが同じ2件のデータを互いに逆の順序でロックしようとするとデッドロックになる。トランザクションAはW、X、Y、Zの順に処理するので、Bも同じ相対順序でロックを取れば循環待ちは起きない。Wは共有ロックなので双方が同時に保持でき、待ちの原因にはならない点も判断材料になる。
選択肢ごとの解説
- アXとYの獲得順がAと逆になり、互いに待ち合う。
- イXとY・Zの順序がAと食い違い、循環待ちが生じ得る。
- ウ正解。専有ロック対象X・Y・ZをAと同じ順序で獲得するため循環しない。
- エY・ZをXより先に取るためAと順序が逆転し、デッドロックになる。
同じ分野の他の問題
- DBMSに実装すべき原子性(atomicity)を説明したものはどれか。2024年度 公開問題 科目A 問7
- トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったかのように取り消すか,のどちらかの結果…2023年度 公開問題 科目A 問7
- ディスク障害時に、フルバックアップを取得してあるテープからディスクにデータを復元した後、フルバックアップ取得時以降の更新…2019年度 春期 午前 問57
- 一つのトランザクションはトランザクションを開始した後、五つの状態(アクティブ、アボート処理中、アボート済、コミット処理中…2019年度 秋期 午前 問28
- データベースが格納されている記憶媒体に故障が発生した場合,バックアップファイルとログを用いてデータベースを回復する操作は…2018年度 秋期 午前 問30
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。