DBデータベーススペシャリスト試験 午前Ⅱ

平成22年度春期 データベーススペシャリスト 午前Ⅱ 問15

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。

選択肢

  1. ア
    すべてのトランザクションが直列に制御され,デッドロックが発生することはない。
  2. イ
    トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
  3. ウ
    トランザクションは,自分が獲得したロックをすべて解除した後にだけ,コミット操作を実行できる。
  4. エ
    トランザクションは,必要なロック獲得命令をすべて実行した後にだけ,ロック解除命令を実行できる。
解き方のヒントを見る

トランザクション境界の見極め方

トランザクションの開始点と終了点を意識し、処理のまとまり、途中で失敗した場合の扱い、他の処理との関係を順に整理して、整合性を考えるための視点を確認します。特定の結論に急がず、条件の読み分けに集中しましょう。

この問題で問われていること

一つの処理単位としてどこまでを捉えるべきかに焦点を絞り、境界の前後で状態や責任の範囲をどう読み取るかを、問題文の条件に沿って確認してください。用語の定義と前提も見落とさないようにします。

視点

トランザクション境界を考えるときは、処理のまとまりと、そのまとまりが成立するための前提を分けて整理します。開始・終了を決める手掛かり、途中の例外、複数処理の関係を個別に書き出し、整合性に関係する条件だけを比較してください。

確認ポイント

  • 処理のまとまりがどこからどこまでかを確認する
  • 境界を判断する前提条件や例外を整理する
  • 他の処理との関係が整合性に与える影響を確認する
正解と解説を見る

正解

エ

解説

2相ロック方式では、ロックを獲得する段階と解除する段階を分け、解除を始めた後に新たなロック獲得へ戻らないように制御する。この性質に合う記述が適切です。

理由

2相ロック方式は、トランザクションの直列実行や開始時刻順のコミットを直接保証する方式ではありません。ロック獲得を行う成長相と、ロック解除を行う縮退相を分けることが本質です。

比較

いったんロック解除を始めた後は、再びロックを獲得する操作へ戻れない。この制約によって競合する操作の順序を整理し、直列化可能性を確保する。

選択肢ア

これは不正解だよ。2相ロック方式は同時実行を制限しつつ直列化可能な結果を得るための方式であり、すべてのトランザクションを完全に直列実行するものではない。また、トランザクション同士が相手の解除を待つ状況では、デッドロックが発生する可能性もある。

選択肢イ

これは不正解だよ。2相ロック方式が定めるのは、ロックを獲得する段階と解除する段階の関係である。トランザクションの開始時刻を基準としてコミット順序をそろえることまでは、この方式の一般的な制約には含まれない。

選択肢ウ

これは不正解だよ。2相ロック方式では、ロック解除を始めた後に新たなロックを獲得しないことが重要であり、コミット前に必ずすべてのロックを解除しなければならないとは限らない。したがって、解除後でなければコミットできないという説明は方式の定義と一致しない。

選択肢エ(正解)

これは正解だよ。2相ロック方式では、前半の成長相で必要なロックを獲得し、後半の縮退相でロックを解除する。ロック解除を始めた後に新たなロック獲得へ戻らないため、必要なロック獲得命令をすべて実行してから解除命令を実行する。

学習のポイント

2相ロックの成長相と縮退相の関係を正確に理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成22年度春期 データベーススペシャリスト試験 午前Ⅱ 問15(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針