問32 |
表は、トランザクション1〜3が資源A〜Cにかけるロックの種別を表す。また、資源へのロックはトランザクションの開始と同時にかけられる。トランザクション1〜3のうち二つのトランザクションをほぼ同時に開始した場合の動きについて、適切な記述はどれか。ここで、表中の“−”はロックなし、“S”は共有ロック、“X”は占有ロックを示す。
|
|
ア |
トランザクション1の後にトランザクション3を開始したとき、トランザクション3の資源待ちはない。 |
イ |
トランザクション2の後にトランザクション1を開始したとき、トランザクション1の資源待ちはない。 |
ウ |
トランザクション2の後にトランザクション3を開始したとき、トランザクション3の資源待ちはない。 |
エ |
トランザクション3の後にトランザクション1を開始したとき、トランザクション1の資源待ちはない。 |
|
|
解説 |
データのロックに関する問題です。ロックは、読み込んで書き込む間にデータが書き換えられると整合性が崩れる場合にもちいられるものです。また、自分だけが占有する占有ロックと、他者の読み込みを許可する共有ロックが存在します。
占有ロックに占有ロックや共有ロックはかけられません。共有ロックに占有ロックはできませんが、共有ロックは可能です。
さらに、デッドロックとは、互いに占有ロックをした状態で他方の資源を要求することで、処理が進まなくなってしまう現象です。この場合は、両方ともロールバックをして処理をやり直します。
選択肢アは、ジョブ1がAを共有ロックし、ジョブ3がAを占有ロックしようとするので、待ちが生じます。
選択肢イは、どのロックでも、待ちが生じない。
選択肢ウは、ジョブ2がAを共有ロックし、ジョブ3がAを共有ロックしようとするので、待ちが生じます。
ジョブ2がBを占有ロックし、ジョブ3がBを共有ロックしようとするので、待ちが生じます。
選択肢エは、ジョブ3がAを占有ロックし、ジョブ1がAを共有ロックしようとするので、待ちが生じます。 |
|