戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報セキュリティマネジメント 2018年 春期 午前(科目A)46


問題文

DBMSにおいて、複数のトランザクション処理プログラムが同一データベースを同時に更新する場合、論理的な矛盾を生じさせないために用いる技法はどれか。

選択肢

再編成
正規化
整合性制約
排他制御(正解)

🔒 解説は解答すると表示されます

排他制御【情報セキュリティマネジメント解説】

正解の理由

DBMS(Database Management System:データベース管理システム)で同時に複数のトランザクション(トランザクション:複数の処理を一つのまとまりとして扱う操作単位)が同一データを更新すると、更新の衝突や「取り消し」「上書き忘れ(lost update)」などの論理的矛盾が起きます。これを防ぐ仕組みが排他制御です。したがって選択肢の中では(排他制御)が正しい答えです。
排他制御とは、同時アクセスを制限してデータの整合性を保つ「同時実行制御(concurrency control)」の一手法です。具体的にはロック(lock:データを一時的に占有する仕組み)やMVCC(Multi-Version Concurrency Control:複数バージョンを使って並行処理を許す方式)などで実現されます。

解法ステップ

  1. 問題の目的を確認する:同時更新による「論理的な矛盾」を防ぐ手法を問うている。
  2. 各選択肢の意味を短く確認する:
    • 再編成:物理的な配置や索引の整理(性能改善)
    • 正規化:データ冗長を減らす設計手法(設計段階)
    • 整合性制約:データの正しさをチェックするルール(例:外部キー)
    • 排他制御:同時アクセスを調整して矛盾を防ぐ仕組み(実行時)
  3. 問題が「同時更新(実行時)」の矛盾を問うているため、実行時に同時実行を制御する「排他制御」を選ぶ。よってが該当する。

選択肢別の誤答解説

  • ア: 再編成
    再編成はデータの物理配置やインデックスの再構築などを指します。性能改善や断片化の解消が目的で、同時更新による矛盾を防ぐ仕組みではありません。
  • イ: 正規化
    正規化はデータベース設計の手法で、データの重複を減らし整合性を保ちやすくするものです。設計段階の話で、実行時に発生する同時更新の競合を直接制御するものではありません。
  • ウ: 整合性制約
    整合性制約(例:NOT NULL、UNIQUE、外部キー制約)はデータのルール違反を検出・防止しますが、複数のトランザクションが同時に更新してしまうことによる「上書き順序の問題」や「ロストアップデート」は、整合性制約だけでは防げないことがあります。実行時のアクセス順序を制御する必要があります。
  • エ: 排他制御
    排他制御は同時にデータを変更しようとする処理を調整して、矛盾を起こさないようにします。DBMSではロックやMVCCなどで実装され、トランザクションの分離性(Isolation)を確保します。よって本問の正答です。

よくある誤解

  1. 整合性制約があれば同時更新の問題も解決できると思い込む
    • 整合性制約はデータのルール違反を防ぎますが、同時更新のタイミングによる「更新の取りこぼし(lost update)」や「データが古い値で上書きされる」問題は、排他制御が必要です。
  2. 排他制御は常にロックだけだと思う
    • ロック方式(悲観的制御)だけでなく、MVCC(楽観的制御に近い仕組み)などもあり、目的や性能要件に応じて使い分けます。
  3. 排他制御は無条件で安全だが性能を損なうと考える
    • 短いトランザクションや適切な隔離レベルの設定で、性能と整合性のバランスを取れます。過剰な排他は遅延やデッドロックを招きます。

補足コラム

  • ACIDについて一言:トランザクション処理で重要な性質の頭文字で、AはAtomicity(原子性)、CはConsistency(一貫性)、IはIsolation(分離性)、DはDurability(永続性)です。排他制御は主にIsolation(分離性)を支える仕組みです。
  • 実務での運用イメージ:受注システムで在庫を更新する場合、在庫数を読み・減算・書き戻す一連の処理を短いトランザクションにし、ロックや楽観的更新(更新時にバージョンチェック)を使う。もしデッドロックが発生したら再試行するロジックを入れることが多いです。
  • よく使われる方式:行ロック(row-level lock)、テーブルロック、MVCC(マルチバージョン)など。RDBMS(例:PostgreSQL、MySQL)はこれらを組み合わせて提供します。

FAQ

Q1: 排他制御がないと具体的にどんな不具合が起きますか?
A1: 代表例は「ロストアップデート(AとBが同じ在庫を同時に減らし、片方の更新が消えてしまう)」「ダーティリード(未確定の更新を他が読んでしまう)」などです。業務データの信頼性が損なわれます。
Q2: MVCCとは何ですか?簡単に教えてください。
A2: MVCC(Multi-Version Concurrency Control:多版本同時実行制御)は、データの更新時に古いバージョンを残しておき、読み取りは安定したスナップショットを見る方式です。読み取りと書き込みの衝突を減らし、読み取り性能を改善します。
Q3: 排他制御で注意する運用ポイントは?
A3: トランザクションを短く保つ、ロックの粒度(行単位かテーブル単位か)を適切にする、デッドロック検出と再試行の実装を準備する、などが重要です。

関連キーワード: DBMS、トランザクション、排他制御、同時実行制御、ロック、MVCC、整合性制約、正規化、ACID、デッドロック
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報セキュリティマネジメント
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について