本文へスキップ

平成21年度 秋期 ITパスポート試験 問88

この問題の解説と、これまでの解答の記録です。

問88
頻出度★☆☆

複数の利用者が同時にデータベースを利用する場合に,1人の利用者がデータ更新中に,同一のデータを別の利用者が参照しようとした。このとき,データの整合性を保障するためのデータベース管理システムでの制御として,適切なものはどれか。

出典 平成21年度 秋期 ITパスポート試験 問88
解説

問 88

  • 不正解ア

    参照要求のたびに更新処理を中断させると、正当に進行中の更新が妨げられ、処理が中途半端な状態で止まってしまいます。参照は更新を打ち切らせる理由にならず、整合性を保つ制御とはいえません。

  • 不正解イ

    更新中の未確定データを参照させると、その後に更新が取り消された (ロールバックされた) 場合に、存在しない値を読んだことになります。これはダーティリードと呼ばれる不整合であり、DBMS が避けるべき状態です。

  • ウ

    正解 データベース管理システム (DBMS) は、複数の利用者が同時に同じデータを扱うときに排他制御 (ロック) を行います。1人の利用者が更新中のデータは、トランザクションが完了 (コミット) するまでは確定していない中途半端な状態なので、その途中の値を他の利用者に見せると誤ったデータに基づく処理が発生してしまいます。そこで DBMS は更新側がロックを解放する (処理が終了する) まで参照側を待たせ、確定したデータだけを読ませます。これがウの「更新中の利用者の処理が終了してから参照させる」であり、データの整合性 (一貫性) を保つ正しい制御です。

  • 不正解エ

    他人が参照したというだけの理由で進行中の更新を破棄するのは、更新した利用者の正当な処理を失わせる不当な扱いです。更新の破棄 (ロールバック) は障害や明示的な取消しのときに行うものであり、参照要求への対応策ではありません。

ここがポイント
  • 排他制御 (ロック): 同時実行時に、更新中のデータへの参照や更新を待たせて整合性を保つ DBMS の仕組み。
  • トランザクションは ACID 特性をもち、コミットして確定するまでの中途データを他の利用者に見せない (ダーティリードの防止)。
用語

解答の記録