2相ロッキングプロトコルに従ってロックを獲得するトランザクションA,Bを図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,readとupdateの位置は,アプリケーションプログラムでの命令発行時点を表す。また,データWへのreadは共有ロックを要求し,データX,Y,Zへのupdateは各データへの専有ロックを要求する。
① | ② | ③ | ④ | |
ア | read W | update Y | update X | update Z |
イ | readW | update Y | update Z | update X |
ウ | update X | read W | update Y | update Z |
エ | update Y | update Z | update X | read W |
解答
ウ
解説
2相ロッキングプロトコルは、データの読み込み・更新の都度、必要なロックを獲得し、処理後にロックを解除する方式です。
- デッドロックが発生します。
③(Bの update X)の段階で、AがXを占有ロック中なので進めません。 - デッドロックが発生します。
Aの update Yの段階で、BがYを占有ロック中なので進めません。 - デッドロックは発生しません。
基本的に、占有ロックが必要な処理を同じ順番(この場合、X→Y→Z)で行うのが、デッドロックを発生させないコツです。 - デッドロックが発生します。
③(Bの update X)の段階で、AがXを占有ロック中なので進めません。
参考情報
分野・分類
分野 | テクノロジ系 |
大分類 | 技術要素 |
中分類 | データベース |
小分類 | トランザクション処理 |
出題歴
- FE 令和元年度秋期 問29