DBデータベーススペシャリスト試験 午前Ⅱ
令和5年度秋期 データベーススペシャリスト 午前Ⅱ 問12
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア全てのトランザクションが直列に制御され,デッドロックが発生することはない。
- イトランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
- ウトランザクションは,自身が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
- エトランザクションは,必要な全てのロックを獲得した後にだけ,ロックを解除できる。
解き方のヒントを見る
二相ロック方式の確認視点
二相ロック方式では、トランザクションの実行中にロックを取得・解放する流れと、その順序が同時実行の安全性にどう関係するかを意識して整理しましょう。
この問題で問われていること
ロックの取得と解放がトランザクションのどの段階で行われるかに注目し、方式名が示す二つの段階と同時実行制御の関係を確認しましょう。
視点
二相ロックでは、ロック操作を実行全体の中でどのように区分して考えるかが重要です。取得と解放の順序、他のトランザクションとの競合に着目して各記述を読み比べてください。
確認ポイント
- ロック取得と解放の順序に注目する
- トランザクションの実行段階を区別する
- 同時実行時の競合との関係を確認する
正解と解説を見る
正解
エ
解説
2相ロック方式では,トランザクションの処理をロック取得が中心の拡張フェーズと,ロック解放が中心の縮小フェーズに分ける。縮小フェーズへ移ると新たなロックは取得できないため,必要なロックを全て取得してから解放を開始する。
理由
2相ロック方式では,最初のロック解放後に新たなロックを取得することはできない。したがって,ロックを解放し始める前に,そのトランザクションが必要とする全てのロックを取得しておく。これが選択肢エの内容に一致する。
比較
2相ロックは実行を完全に直列化する方式ではなく,デッドロックを防止するとも限らない。また,コミット順序を開始時刻順に固定する規則でもない。ロック解放とコミットの前後関係を一律に定めるのではなく,取得と解放の段階分けが要点です。
選択肢ア
これは不正解だよ。2相ロック方式は全てのトランザクションを直列に実行する方式ではなく,ロックの競合がなければ並行して進められる。また,複数のトランザクションが互いのロック解放を待つ状態になれば,デッドロックが発生する可能性もある。
選択肢イ
これは不正解だよ。2相ロック方式が定めるのは,ロックを取得する段階と解放する段階の順序であり,コミット順序をトランザクション開始時刻順にすることではない。実際のコミット順は,処理時間やロック競合などの影響を受ける。
選択肢ウ
これは不正解だよ。2相ロック方式では,必要なロックを全て取得した後なら,ロックの解放を開始できる。ただし,自身が獲得したロックを全て解除した後でなければコミットできない,という条件までは方式そのものから導かれない。
選択肢エ(正解)
これは正解だよ。2相ロック方式では,ロックを取得する拡張フェーズと,ロックを解放する縮小フェーズを分ける。縮小フェーズに入った後は新たなロックを取得できないため,ロックを解除する前に必要な全てのロックを獲得しておく。
学習のポイント
2相ロックの拡張フェーズと縮小フェーズの切替条件を理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午前Ⅱ 問12(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針