平成25年度 秋期 午前 問32
データベース
トランザクションに関する問題
表は,トランザクション 1 〜 3 が資源 A 〜 C にかけるロックの種別を表す。また,資源へのロックはトランザクションの開始と同時にかけられる。トランザクション 1 〜 3 のうち二つのトランザクションをほぼ同時に開始した場合の動きについて,適切な記述はどれか。ここで,表中の “−” はロックなし,“S” は共有ロック,“X” は専有ロックを示す。
| トランザクション \ 資源 | A | B | C |
|---|---|---|---|
| 1 | S | − | X |
| 2 | S | X | − |
| 3 | X | S | − |
- アトランザクション 1 の後にトランザクション 3 を開始したとき,トランザクション 3 の資源待ちはない。
- イトランザクション 2 の後にトランザクション 1 を開始したとき,トランザクション 1 の資源待ちはない。
- ウトランザクション 2 の後にトランザクション 3 を開始したとき,トランザクション 3 の資源待ちはない。
- エトランザクション 3 の後にトランザクション 1 を開始したとき,トランザクション 1 の資源待ちはない。
答えと解説を見る
✓ これが正解イトランザクション 2 の後にトランザクション 1 を開始したとき,トランザクション 1 の資源待ちはない。
解説
両立するのは共有ロックどうしだけと考えて当てます。
すでにかかっているロックと、続いて要求されるロックが同時に成り立つのは、両方とも共有ロックのときだけです。片方でも専有ロックが絡めば、続く側は解放を待つことになります。この一行を先に置いて、表の資源ごとに当てていけば四つの記述はすべて判定できます。表を見ると、資源 C に触れるのはトランザクション 1 だけなので、ぶつかりが起きうるのは、三つとも触れる資源 A と、トランザクション 2 が専有ロック、トランザクション 3 が共有ロックをかける資源 B です。正しいのは、資源 A に共有ロックと資源 B に専有ロックをかける側が先に走り、資源 A に共有ロックと資源 C に専有ロックをかける側が続く組合せです。資源 A は共有ロックどうしなので通り、資源 C は誰も押さえていないためそのままかかります。判定の軸は、続く側が求めるロックと、すでにかかっているロックの組合せです。
ほかの選択肢はなぜ違うのか
- アトランザクション 1 の後にトランザクシ…:トランザクション 1 の後にトランザクション 3 を開始した場合の記述です。資源 A にはすでに共有ロックがあり、そこへ専有ロックを求めることになるので、資源待ちが生じます。
- ウトランザクション 2 の後にトランザクシ…:トランザクション 2 の後にトランザクション 3 を開始した場合の記述です。資源 A で共有ロックの上に専有ロックを求めるうえ、資源 B でも専有ロックの上に共有ロックを求めるので、二か所でつかえます。
- エトランザクション 3 の後にトランザクシ…:トランザクション 3 の後にトランザクション 1 を開始した場合の記述です。資源 A にはすでに専有ロックがあり、そこへ共有ロックを求めることになるため、やはり資源待ちが生じます。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成25年度 秋期 基本情報技術者試験 午前 問32(改変:原典の図表をテキストに書き起こした)
同じ用語が出る問題
- 令和6年度 科目A 問7:原子性に関する問題(トランザクション)
- 令和5年度 科目A 問7:ACIDに関する問題(トランザクション)
- 令和元年度 秋期 午前 問29:ロックが発生しないデータ処理順序(トランザクション)
- 令和元年度 秋期 午前 問28:取ることのない状態遷移(トランザクション)
- 平成30年度 秋期 午前 問55:キャパシティ管理に関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)