平成21年秋期試験問題 問88

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

  • 更新処理を中断して参照させる。
  • 更新中の最新のデータを参照させる。
  • 更新中の利用者の処理が終了してから参照させる。
  • 更新を破棄して更新前のデータを参照させる。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
あるプロセスがデータベースを更新している最中に、他のプロセスがそのデータの読出しを行うと、更新途中のデータが読み込まれてしまい、前後の整合性がとれないばかりか間違ったデータを参照してしまう不具合が生じます。

このようなことが起こらないように、更新作業が行われる際は、データベースを管理するソフトウェア(DBMS…データベース管理システム)が、更新対象のデータにロックをかけます。これによって、更新作業中に他のプロセスから対象のデータの更新・読出しを行えない状態になります。更新作業が完了すればロックが解除され、他のプロセスからの読み書きが可能になります。この仕組みを排他制御といい、データベースの更新時異常を防いで整合性を保っています。

したがってデータベースの状態を正常に保ちつつ参照読み出しが可能になるのは、更新が確定(コミット)した後です。
  • 更新作業を中断すると、更新途中のデータを参照させてしまうことになり適切ではありません。
  • 更新中のデータは更新前のデータでも更新後のデータでもない不定な状態です。このデータを参照させることは適切ではありません。
  • 正しい。
  • 更新を破棄すると、読み出しがあるたび更新作業が無効になってしまいます。

Pagetop