問77
頻出度★☆☆
DBMSにおいて, データへの同時アクセスによる矛盾の発生を防止し, データの一貫性を保つための機能はどれか。
この問題の解説と、これまでの解答の記録です。
DBMSにおいて, データへの同時アクセスによる矛盾の発生を防止し, データの一貫性を保つための機能はどれか。
正規化はデータベースの設計技法で、表を分割して重複や更新時異状を減らし、データ構造を整理するもの。設計段階で構造上の冗長を取り除く話であり、実行時に発生する同時アクセスの競合を調停する機能ではない。
デッドロックは、複数のトランザクションが互いに相手の保持するロックの解放を待ち続け、どちらも進めなくなる状態のこと。むしろ排他制御を行った結果として起こり得る「困った現象(障害)」であって、矛盾を防止する機能そのものではない。
正解 正解はウの「排他制御」。DBMS では複数の利用者やトランザクションが同じデータへ同時にアクセスし得るため、何も制御しないと「更新が上書きされて消える」「コミット前の中途半端な値を他者が読む」といった矛盾(不整合)が起きる。排他制御は、あるトランザクションが処理中のデータに対してロックをかけ、他のトランザクションからの読み書きを一時的に待たせる仕組みで、同時アクセスの順序を調停してデータの一貫性を守る。ロックには他者の参照も更新も禁じる専有ロック(書込み用)と、参照のみ許す共有ロック(読取り用)があり、設問の「同時アクセスによる矛盾の発生を防止し、一貫性を保つ機能」にそのまま合致する。
リストアはバックアップしたデータを書き戻して、障害発生前の状態にデータベースを復旧する操作。障害からの回復(事後の復旧)が目的であり、稼働中の同時アクセス制御とは役割が異なる。