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

令和2年度10月 データベーススペシャリスト 午前Ⅱ 問14

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

問題

同時実行制御の手法の一種である楽観的制御法に関する記述として,適切なものはどれか。

選択肢

  1. ア
    データに対して順序付けを行い,その順序に従ってロックを掛ける。
  2. イ
    データに対してのロックは行わずに,更新対象のデータが他のトランザクションと競合がなかったことを確認してからコミットを行う。
  3. ウ
    分散データベースシステムにおいて,コミット可否の問合せをした上で,コミット指示を行う。
  4. エ
    ロックが増加していく成長フェーズである第1相と,ロックが減少していく縮退フェーズである第2相の2相制を行う。
解き方のヒントを見る

説明が成り立つ前提を確かめる

同時実行制御を学ぶときは、ある説明がどのような前提で成り立つのかに注目しましょう。用語の印象だけで判断せず、与えられた条件と説明の関係を整理し、条件を勝手に補っていないかを確かめます。

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

この問題では、説明の内容そのものを先に決めるのではなく、その説明を支える条件が何かという一点に意識を向けてください。明示された条件と自分が想定した条件を分けると、判断の根拠を落ち着いて確認できます。

視点

説明を理解する際は、どの条件に基づく説明なのかを意識します。条件として示されていることと、自分の知識から補ったことを区別し、根拠の範囲を保ちながら考えましょう。

確認ポイント

  • 説明を支える条件は何か
  • 明示された条件と自分の想定を分けているか
  • 根拠のない条件を付け足していないか
正解と解説を見る

正解

イ

解説

正解はイです。楽観的制御法は、ロックを行わずに処理を進め、コミット前に他のトランザクションとの競合を検証します。競合がなかったことを確認してからコミットするという記述が、この特徴に一致します。

理由

楽観的制御法は、競合が少ないことを想定して、データに対するロックを行わずに処理を進めます。コミット前の検証で競合がないと確認できれば変更を確定し、競合があれば処理を取り消して再実行するなどの対応を取ります。このため、イが適切です。

比較

アはロックの取得順序を統一してデッドロックの防止を図る方法、ウは分散トランザクションの原子性を保つ2相コミット法、エはロックの取得と解放を二つのフェーズに分ける2相ロック法です。エの末尾は、公式画像どおり「第2相の2相制御を行う。」と読みます。2相コミット法と2相ロック法は、名称が似ていますが目的と手順が異なります。

選択肢ア

これは不正解だよ。データに順序を付け、その順序に従ってロックを掛ける方法の説明です。ロックの取得順序を統一することで、相互にロックの解放を待つデッドロックの防止を図ります。ロックを使って競合に対処するため、楽観的制御法の説明ではありません。

選択肢イ(正解)

これは正解だよ。楽観的制御法では、データに対するロックを行わずに処理を進め、コミット前に他のトランザクションとの競合がなかったかを確認します。競合がなければコミットし、競合があれば処理を取り消すなどして整合性を保つので、選択肢の記述と一致します。

選択肢ウ

これは不正解だよ。分散データベースで複数の参加者にコミット可否を問い合わせ、その結果を受けてコミットを指示する2相コミット法の説明です。複数の拠点で処理を確定するか取り消すかをそろえ、トランザクションの原子性を保つ手法であり、楽観的制御法とは目的が異なります。

選択肢エ

これは不正解だよ。公式画像の本文は「第2相の2相制御を行う。」です。これは、ロックが増える成長フェーズと減る縮退フェーズに分ける2相ロック法の説明です。一度ロックを解放した後は新たなロックを取得しないという規則で同時実行を制御し、楽観的制御法とは異なります。

学習のポイント

楽観的制御法の競合検証と、ロックによる制御及び分散環境でのコミット手順の違いを理解しましょう。

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

関連する過去問一覧

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