SkillStack
テクノロジ系23 / 25問

ITサービスマネージャ試験 令和5年度 春期 午前II 問23

2相ロッキングプロトコルに従うトランザクションで発生する可能性のある現象はどれか。

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】イ

2相ロッキングプロトコルでは、トランザクションの処理を、必要なロックを獲得していく成長相と、獲得済みのロックを解放していく縮退相に分けます。一度ロックを解放した後は、新たなロックを獲得できません。この方法によってスケジュールの直列化可能性が保証されます。なお、問題文には明示されていませんが、公式解答(イ)は、排他ロックをトランザクションの終了(コミット又はロールバック)まで保持する実装(厳格な2相ロッキング)を想定したものと考えられます。この前提でも、複数のトランザクションが互いのロック解放を待つことがあります。例えば、トランザクションT1がデータAをロックしてBを待ち、T2がBをロックしてAを待つと、双方が処理を進められません。これがデッドロックなので、イが適切です。

アのダーティリードは誤りです。これは、ほかのトランザクションが更新したものの、まだコミットしていないデータを読み取る現象です。基本形の2相ロッキングでは排他ロックをコミット前に解放できるため、厳密には未コミットのデータを読まれる余地が残ります。本問の前提のように排他ロックをトランザクションの終了まで保持すれば、ほかのトランザクションの読取りはコミット又はロールバックまで待たされるので、ダーティリードは発生しません。

ウのノンリピータブルリードは誤りです。これは、同じトランザクション内で同じデータを複数回読んだとき、途中でほかのトランザクションが更新を確定したため、読取り結果が変わる現象です。読取り対象への共有ロックによって更新を待たせます。

エのロストアップデートは誤りです。これは、複数の更新が競合し、後の更新によって先の更新結果が失われる現象です。排他ロックによって更新処理を直列化することで防止します。

【ポイント】 2相ロッキングは、ロック獲得後に別のトランザクションを待つため、デッドロックの可能性をなくす方式ではありません。 対策には、データをロックする順序の統一、待ち時間の監視、待ちグラフによる検出と一方のロールバックなどがあります。

出典:令和5年度 春期 ITサービスマネージャ試験 午前II 問23
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める