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

基本情報技術者 2016年 春期 午前(科目A)30


問題文

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

選択肢

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

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

トランザクションの排他制御【午前解説】

正解の理由

排他制御は、複数トランザクションが同一データを同時に読み書きして生じる競合を制御するための技法です。具体的には共有ロック・排他ロックや、悲観的ロック・楽観的制御、トランザクション分離レベルの設定などにより、"失われた更新(lost update)"、"ダーティリード(dirty read)"、"非反復読み取り(non‑repeatable read)"、"ファントム(phantom)" といった論理的矛盾を回避します。したがって設問にある「同時に更新する場合、論理的な矛盾を生じさせないために用いる技法」は排他制御が正解です。

解法ステップ

  1. 設問文からキーワードを探す:「同一データベース」「同時に更新」「論理的な矛盾」。
  2. キーワードに対応する概念を列挙する:並行制御、排他制御、整合性制約、正規化、再編成など。
  3. 各選択肢が担う役割を判定する:設計時の手法か、実行時の同時実行制御かで分類する。
  4. 実行時に競合を防ぐものを選ぶ:排他制御(同時実行制御)が該当する。

選択肢別の誤答解説

  • ア: 再編成
    データベースの物理配置やインデックスの再構築など運用や性能改善の作業であり、同時更新による論理矛盾を防ぐための技法ではありません。
  • イ: 正規化
    データモデルの冗長排除や整合性向上のための設計手法で、実行時のトランザクション競合を制御するものではありません。
  • ウ: 整合性制約
    データの整合性ルール(例:参照整合性、属性ドメイン)を定義し不正な状態遷移を防ぐが、複数トランザクションの同時更新による競合解消(ロックや分離制御)は担いません。
  • エ: 排他制御
    同時更新時の競合を防ぎデータの一貫性を保つための実行時制御手法であり、本問の正解です。

よくある誤解

  • 正規化はデータ冗長を減らし整合性を高めるが、実行時の同時更新制御(競合解決)を行うものではありません。
  • 整合性制約(外部キー制約など)は不整合なデータ入力を防ぐが、トランザクション間の同時実行による競合を直接防ぐ仕組みではありません。
  • 「排他制御=常にロックをかけ続ける」ではなく、悲観的ロックと楽観的制御など複数の方式が存在し、性能と整合性のトレードオフがあります。

補足コラム

  • 同時実行制御の代表的手法:
    • 悲観的ロック(Pessimistic locking):更新前にロックを取得して他トランザクションの干渉を防ぐ。衝突が多い場面で有効だが待ちやデッドロックの管理が必要。
    • 楽観的制御(Optimistic concurrency control):更新時に検査して競合があれば再試行する方式。衝突が稀な場面で性能優位。
  • トランザクション分離レベル(ANSI SQL):READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE。分離レベルを高くすると整合性は高まるが並行度は低下する。
  • 実務の注意点:高い整合性が必要な操作(振込処理など)では排他制御を厳格にし、読み取り中心の処理では緩い制御を採るなど設計で使い分ける。

FAQ

Q1: 整合性制約と排他制御はどちらも整合性を保つのでは?
A1: 両者は目的が異なります。整合性制約は「許されるデータの条件」を定義して不正なデータ挿入を防ぎ、排他制御は「同時実行による矛盾(競合)」を防ぐ実行時の仕組みです。
Q2: 排他制御とトランザクション分離レベルは同じものですか?
A2: 分離レベルは排他制御を含む同時実行制御の動作を規定する概念です。分離レベルを変えることでロック取得の仕方や可視性が変わり、結果的に排他制御の挙動が変わります。
Q3: 試験で見分けるコツは?
A3: 「同時に」「更新」「矛盾」といったキーワードがあれば同時実行制御(=排他制御)を連想し、設計手法(正規化)や制約(整合性制約)は除外すること。

関連キーワード: トランザクション制御、排他制御、ロック、同時実行制御、楽観的制御、悲観的制御、分離レベル、競合回避、失われた更新、ダーティリード、非反復読み取り
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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