平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
テクノロジ/データベースデッドロックが発生する可能性のある排他制御の方式はどれか。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
- ア2相ロックプロトコルに従ってロックする方式
- イ時刻印を用いて,トランザクションの優先順位を決める方式
- ウ全てのトランザクションにおいて,ロック対象のデータは一定の順序でロックを行い,全てのロックが完了するまで,アンロックを行わない方式
- エトランザクション開始時に一括してロックする方式
正解:ア
解説
2相ロックプロトコル(2PL)は,トランザクションの実行を,ロックを新たに獲得するだけの成長相と,ロックを解放するだけの縮退相とに分けることで,直列可能性(スケジュールの正しさ)を保証する方式である。しかし,2相ロックプロトコルは,複数のトランザクションが互いに相手の保持するロックの解放を待ち合う状態(循環待ち)を防ぐものではないため,デッドロックが発生する可能性が残る。これに対し,ロック対象データを一定の順序でロックする方式や,トランザクション開始時に必要なロックを一括して獲得する方式は,循環待ちが生じない(あるいは全ての資源を先取りするため待ちが生じない)ように設計されており,デッドロックを防止できる。時刻印方式も,トランザクションの優先順位(時刻印の順序)に基づいて,古いトランザクションを優先させたり,衝突する新しいトランザクションを中止・再開させたりすることで,デッドロックを回避する。
選択肢ごとの解説
- ア正しい。2相ロックプロトコルは直列可能性を保証するものであるが,デッドロック(循環待ち)の発生を防ぐ仕組みは組み込まれていないため,デッドロックが発生する可能性がある。
- イ誤り。時刻印を用いてトランザクションの優先順位を決める方式は,優先順位の低いトランザクションを待たせずに中止・再始動させるなどの方法によって,循環待ちの状態が生じないようにする方式であり,デッドロックは発生しない。
- ウ誤り。ロック対象データを一定の順序でロックし,全てのロックが完了するまでアンロックしない方式は,ロック取得の順序をそろえることによって循環待ち自体が生じないようにする,デッドロック防止策の一つである。
- エ誤り。トランザクション開始時に必要な資源を一括してロックする方式(プリクレーミング)は,実行途中で新たにロックを取得する必要がないため,他のトランザクションとの循環待ちが生じず,デッドロックは発生しない。