令和元年度 秋期 午前 問29
データベース
ロックが発生しないデータ処理順序
2相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は各データへの専有ロックを要求する。
図(時間を縦軸にとった図):
時間 ↓ トランザクション A: read W → update X → update Y → update Z トランザクション B: ① → ② → ③ → ④ (B の①〜④は A の各段より半段ずれて配置されている)
選択肢は原典では ①〜④ を列にとった表。
- ア①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
解説
二つが同じ順で資源を押さえれば、行き詰まりを避けられます。
二つの処理が互いに相手のロックを待つ状態を、デッドロックと呼びます。これを避ける最も確実な方法は、押さえる順番を全員でそろえることです。一方の処理は、共有の読み取りを済ませたあと、三つの資源を決まった順で書き換えていきます。もう一方も同じ並びで書き換えれば、先に押さえた側から順に進むだけになります。待つことはあっても、互いに待ち合う形にはなりません。順番を入れ替えると、片方が先に押さえたものを他方が後から欲しがる形が生まれます。そこへ逆向きの組が重なると、双方が相手を待つ輪ができてしまいます。読み取りは共有なので、位置が前後しても輪の原因にはなりません。見るべきは、書き換える三つの並びが二つの処理でそろっているかどうかです。
ほかの選択肢はなぜ違うのか
- ア①read W / ②update Y …:書き換える三つのうち、はじめの二つの並びが相手と入れ替わっています。先に押さえたものを互いに待ち合う形ができ、そこで止まってしまいます。読み取りの位置は同じでも、書き換えの順が違えば意味がありません。先に取った側が持ち続けます。
- イ①read W / ②update Y …:書き換える三つの並びが、相手と大きく食い違っています。相手が先に押さえる X を最後に求め、相手が次に要る Y を先に押さえてしまうため、輪ができます。並びを縦に書き出して見比べると、食い違いがすぐ見えます。二つが逆なら待ち合いが生まれます。
- エ①update Y / ②update …:書き換えを先に始め、共有の読み取りを最後に回した形です。書き換える三つの並びが相手とそろっていないので、待ち合いが生まれます。読み取りを動かしても、輪の原因そのものは消えません。輪はすでにできています。
この問題の用語
- プロトコル通信するときの、決まりごとや手順のまとまりのことをいいます。送る側と受ける側が同じものに従うことで、やり取りが成り立ちます。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和元年度 秋期 基本情報技術者試験 午前 問29
同じ用語が出る問題
- 令和6年度 科目A 問8(プロトコル)
- 令和6年度 科目A 問7:原子性に関する問題(トランザクション)
- 令和5年度 科目A 問7:ACIDに関する問題(トランザクション)
- 令和元年度 秋期 午前 問42:DMZに関する問題(プロトコル)
- 平成31年度 春期 午前 問43(プロトコル)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)