DBデータベーススペシャリスト試験 午前Ⅱ
令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問13
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア全てのトランザクションが直列に制御され,デッドロックが発生することはない。
- イトランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
- ウトランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
- エトランザクションは,必要な全てのロックを獲得した後にだけ,ロックを解除できる。
解き方のヒントを見る
ロック取得と解放の順序を確認
2相ロック方式の説明を読むときは、トランザクションが共有資源を利用する前後で、ロック操作の順序や変化に注目し、同時実行時の整合性と待ち合わせの関係を整理しましょう。
この問題で問われていること
各選択肢について、ロックを取得する段階と手放す段階がどのように区別されているかを追い、処理の途中で資源への保護がどう変化するかという観点だけで読み比べることが大切です。
視点
二相ロックでは、トランザクションの進行に伴うロック操作の位置関係を手掛かりにします。個々の選択肢の細かな表現を暗記するより、取得・利用・解放の流れが問題文の主題とどう結び付くかを確認してください。
確認ポイント
- ロック操作が処理のどの段階に置かれているか
- 共有資源へのアクセス保護が途中でどう扱われているか
- 同時実行時の整合性や待ち合わせに関する説明か
正解と解説を見る
正解
エ
解説
二相ロック方式では、トランザクションは必要なロックを取得する段階と、取得を終えてロックを解除する段階を分けて実行する。したがって、必要なロックを全て取得する前に解除を開始することはできない。
理由
二相ロック方式では、前半をロックの取得だけを行う成長フェーズ、後半をロックの解除を行う縮退フェーズとして扱う。縮退フェーズに入った後で、新たなロックを取得することはできないため、解除を始められるのは必要なロックを全て取得した後です。
比較
二相ロック方式は実行を完全に直列化する方式ではなく、ロックの競合によってデッドロックが発生することもある。また、コミット順序をトランザクション開始時刻順に固定する方式でもない。
選択肢ア
これは不正解だよ。二相ロック方式は、トランザクション間のロック競合を調整して直列化可能性を確保する方式であり、全ての処理を直列に実行する方式ではない。ロック待ちの組合せによっては、デッドロックが発生する可能性もある。
選択肢イ
これは不正解だよ。二相ロック方式が定めるのは、ロックの取得と解除に関する順序であって、コミット順序をトランザクション開始時刻順にすることではない。実際のコミット順序は、ロック待ちや処理の進行状況などに左右される。
選択肢ウ
これは不正解だよ。二相ロック方式では、必要なロックを全て取得した後に解除を始める必要があるが、コミット操作まで必ず全ロック解除後に限定されるわけではない。したがって、解除とコミットの関係をこのように断定するのは誤りである。
選択肢エ(正解)
これは正解だよ。二相ロック方式では、前半の成長フェーズで必要なロックを取得し、後半の縮退フェーズでロックを解除する。解除を始めた後に新たなロックを取得できないため、必要な全てのロックを獲得した後にだけ解除できる。
学習のポイント
二相ロックの取得段階と解除段階の切替条件を正確に理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午前Ⅱ 問13(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針