平成21年度 秋期 問88
データベース
排他制御に関する問題
複数の利用者が同時にデータベースを利用する場合に,1 人の利用者がデータ更新中に,同一のデータを別の利用者が参照しようとした。このとき,データの整合性を保障するためのデータベース管理システムでの制御として,適切なものはどれか。
- ア更新処理を中断して参照させる。
- イ更新中の最新のデータを参照させる。
- ウ更新中の利用者の処理が終了してから参照させる。
- エ更新を破棄して更新前のデータを参照させる。
答えと解説を見る
✓ これが正解ウ更新中の利用者の処理が終了してから参照させる。
解説
直している最中は、終わるまで待たせるのが筋になります。
同じ中身を複数の人が同時に扱うと、食い違いが生じます。一方が書き換えている途中を、もう一方が読むとどうなるか。直しかけの半端な値を読むことになってしまいます。それでは、正しい状態を読んだことになりません。そこで、直している最中は他から触れないようロックを掛けます。読みたい側は、終わるまで待つことになりました。更新の処理が終わってから参照させると述べた肢が当たります。待たされはしますが、読めるのは必ず正しい状態です。この仕組みを排他制御と呼び、整合性を保つ土台になります。直している側を止めてしまうと、その人の仕事が失われました。直しを捨てて古い値を見せる形も、同じく失われます。半端な値をそのまま見せるのは、いちばん危うい形でした。シラバスも、関係データベースへの操作を学ぶよう求めています。
ほかの選択肢はなぜ違うのか
- ア更新処理を中断して参照させる。:更新を中断して読ませると述べた肢のほうです。待たせないという点では、確かに親切に見えます。ところが中断された側の仕事は、そこで失われました。直しかけの状態が残る恐れもあります。整合性を保つどころか、崩す形でした。
- イ更新中の最新のデータを参照させる。:直している最中の値をそのまま見せる肢というのが、こちらです。最新という言葉が、いかにも良さそうに響きます。けれども直しかけの値は、まだ確定していません。取り消される見込みも残っていました。読んだ値が後から消える恐れがあります。
- エ更新を破棄して更新前のデータを参照させる…:更新を捨てて前の値を見せると述べた肢が、こちらです。読む側は、確かに正しい値を得られます。ところが直していた側の仕事が、丸ごと消えました。読むために書くのを捨てるのは、順序が逆です。待たせるほうが、はるかに損が小さくなります。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成21年度 秋期 ITパスポート試験 問88
同じ用語が出る問題
- 令和6年度 問74:トランザクション処理に関する記述(排他制御)
- 令和5年度 問66:コミットの説明(排他制御)
- 令和2年度 10月 (特別措置試験) 問64:DBMSに関する問題(排他制御)
- 令和元年度 秋期 (特別措置試験) 問87:関係データベースに関する問題(排他制御)
- 令和元年度 秋期 (特別措置試験) 問64:排他制御の目的(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)