トランザクション処理 (全57問中41問目)

No.41

表は,ジョブ1〜3が資源A〜Cにかけるロックの種別を表す。また,資源へのロックはジョブの起動と同時にかけられる。ジョブ1〜3のうち二つのジョブをほぼ同時に起動した場合の動きについて,適切な記述はどれか。ここで,表中の"−"はロックなし,"S"は共有ロック,"X"は占有ロックを示す。
59.gif/image-size:205×86
  • ジョブ1の後にジョブ3を起動したとき,ジョブ3の資源待ちはない。
  • ジョブ2の後にジョブ1を起動したとき,ジョブ1の資源待ちはない。
  • ジョブ2の後にジョブ3を起動したとき,ジョブ3の資源待ちはない。
  • ジョブ3の後にジョブ1を起動したとき,ジョブ1の資源待ちはない。
  • [出題歴]
  • 基本情報技術者 H14秋期 問68
  • 基本情報技術者 H25秋期 問32

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

共有・占有の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がロック解除するのを待つ必要があります。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop