トランザクション処理 (全58問中26問目)
No.26
表は,トランザクション1~3が資源 A~C にかけるロックの種別を表す。また,資源へのロックはトランザクションの起動と同時にかけられる。トランザクション1~3のうち二つのトランザクションをほぼ同時に起動した場合の動きについて,適切な記述はどれか。ここで,表中の"-"はロックなし,"S"は共有ロック,"X"は専有ロックを示す。
出典:平成25年秋期 問32
- トランザクション1の後にトランザクション3を起動したとき,トランザクション3の資源待ちはない。
- トランザクション2の後にトランザクション1を起動したとき,トランザクション1の資源待ちはない。
- トランザクション2の後にトランザクション3を起動したとき,トランザクション3の資源待ちはない。
- トランザクション3の後にトランザクション1を起動したとき,トランザクション1の資源待ちはない。
- [出題歴]
- 基本情報技術者 H14秋期 問68
- 基本情報技術者 H20春期 問59
分類
テクノロジ系 » データベース » トランザクション処理
正解
イ
解説
共有・専有の2つのロックが出てきますので違いを把握しておきましょう。
- 共有ロック
- データを読込むときに使うロックで、この状態の場合は他のトランザクションによる更新処理ができなくなる。(読込みは可能)
- 専有ロック
- データを更新するときに使うロックで、この状態の場合は他のトランザクションによる読込みや更新ができなくなる。
- トランザクション3が起動したとき、トランザクション1が資源Aを共有ロックしている状態です。トランザクション3は資源Aに対して専有ロックをかけたいのでトランザクション1が資源Aのロックを解除するのを待つことになります。
- 正しい。トランザクション1が使用する資源Cはロックされていない状態のため問題なし、資源Aはトランザクション2が使用していますが、それは共有ロックなのでトランザクション1がさらに読込みを行うための共有ロックをかけることは可能です。
- トランザクション3が起動したとき、トランザクション2が資源Aを共有ロックしている状態です。トランザクション3は資源Aに対して専有ロックをかけたいので、トランザクション2が資源Aのロックを解除するのを待つことになります。さらにトランザクション2も資源Bに対して専有ロックをかけている状態なので、こちらのロック解除も待つ必要があります。
- トランザクション1が起動したとき、トランザクション3が資源Aを専有ロックしている状態です。資源Aに共有ロックをかけるにはトランザクション3がロック解除するのを待つ必要があります。