DBデータベーススペシャリスト試験 午前Ⅱ
平成27年度春期 データベーススペシャリスト 午前Ⅱ 問13
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア全てのトランザクションが直列に制御され,デッドロックが発生することはない。
- イトランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
- ウトランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
- エトランザクションは,必要なロック獲得命令を全て実行した後にだけ,ロック解除命令を実行できる。
解き方のヒントを見る
トランザクション境界を見極める視点
トランザクションの開始点と終了点に注目し、処理のまとまりがどこで区切られるか、途中の状態が他の処理からどう扱われるかを整理して考えるためのヒントです。まず境界を図にして確認しましょう。
この問題で問われていること
確認の中心を、各処理が一つのまとまりとして扱われる範囲に絞ります。開始から終了までの操作を時系列に並べ、境界の前後で状態や他処理との関係を比較してください。判断は定義と記述の対応から行います。
視点
トランザクションは複数の操作をひとまとまりとして捉える枠組みです。境界を見つけたら、内部の操作、確定や取り消しに関わる節目、他の処理が観測するタイミングを分けて整理し、個々の操作と全体の扱いを混同しないようにします。
確認ポイント
- 処理の開始と終了を示す記述を時系列で整理する
- 境界の内側に含まれる操作の範囲を確認する
- 他の処理から見える状態の変化と節目を区別する
正解と解説を見る
正解
エ
解説
2相ロック方式では、トランザクションは最初にロックを獲得する段階を進み、その後にロックを解除する段階へ移る。いったんロック解除を開始した後は、新たなロックを獲得できないため、必要なロック獲得命令を全て実行してから解除命令を実行するエが適切です。
理由
2相ロック方式には、ロックを追加して獲得する成長相と、ロックを解除する縮退相がある。縮退相に入った後は新たなロックを獲得できないため、必要なロック獲得命令を全て実行した後にロック解除命令を実行する必要がある。したがって、正しい記述はエです。
比較
2相ロック方式はトランザクションを全て直列化する方式ではなく、デッドロックを必ず防ぐものでもない。また、コミット順序を開始時刻順に固定する方式でもない。方式の条件は、ロック獲得とロック解除の順序に関するものです。
選択肢ア
これは不正解だよ。2相ロック方式は、全てのトランザクションを直列に実行する方式ではない。また、複数のトランザクションが互いにロックを待つ状況では、デッドロックが発生する可能性もあるため、「デッドロックが発生することはない」という後半も誤りである。
選択肢イ
これは不正解だよ。2相ロック方式が定めるのは、ロックを獲得する段階と解除する段階の順序であり、コミット順序をトランザクション開始時刻順にすることではない。したがって、開始時刻とコミット順序を結び付けるこの記述は方式の説明になっていない。
選択肢ウ
これは不正解だよ。2相ロック方式では、必要なロックを全て獲得した後にロック解除を開始することが条件であり、コミット操作の前に獲得したロックを全て解除しなければならないわけではない。解除とコミットの必須順序を述べている点が誤りである。
選択肢エ(正解)
これは正解だよ。2相ロック方式では、ロックを獲得する成長相と、ロックを解除する縮退相を分ける。縮退相で解除を始めた後は新たなロックを獲得できないため、必要なロック獲得命令を全て実行してからロック解除命令を実行する。
学習のポイント
2相ロック方式の本質は、ロック獲得段階から解除段階へ一方向に移る操作順序にある。
出典:独立行政法人 情報処理推進機構(IPA)平成27年度春期 データベーススペシャリスト試験 午前Ⅱ 問13(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針