データベーススペシャリスト試験 令和5年度 秋期 午前II 問12
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】エ
2相ロック方式では、トランザクションの実行期間を、ロックを獲得していく拡大相と、獲得済みのロックを解除していく縮小相に分けます。一度でもロックを解除して縮小相に入ると、新しいロックを獲得できません。したがって、以後の処理に必要な全てのロックを獲得した後でなければ、ロックを解除できないとするエが正解です。
アの、全てのトランザクションが直列に実行され、デッドロックが発生しないという説明は誤りです。2相ロック方式が保証するのは、並行実行の結果を何らかの直列実行と同等にできる直列可能性です。実際には並行して動作し、複数のトランザクションが互いのロック解除を待つデッドロックも発生します。
イの、コミット順を開始時刻順にするという説明は誤りです。開始時刻などに基づいて処理順序を管理するのは、タイムスタンプ順序方式の考え方です。2相ロック方式はコミット順を開始順に限定しません。
ウの、全ロックを解除した後にだけコミットできるという説明は誤りです。基本的な2相ロック方式は、コミットとロック解除の前後関係をそのようには定めません。むしろ、更新用ロックをコミット又はロールバックまで保持する方式は厳格2相ロック方式です。
【ポイント】 2相とは、ロックを増やす拡大相と、ロックを減らす縮小相を指します。 2相ロック方式は直列可能性を保証しますが、デッドロックの防止方式ではありません。 厳格2相ロック方式では、更新用ロックをトランザクション終了まで保持します。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前II 問12
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる