---
title: "排他制御とは？同時更新による不整合を防ぐ仕組み【SG試験】"
description: "排他制御とは、複数の処理が同じデータを同時に更新して不整合が起きないように、処理の順番を制御する仕組みです。情報セキュリティマネジメント試験で迷いやすい正規化・整合性制約・再編成との違いも、初心者向けに整理します。 選択肢で問われる目的・対象・責任範囲を押さえ、似た用語や対策との違いを判断できるようにします。"
last_modified_at: "2026-05-10"
canonical_url: "https://stemtazoo.github.io/sg/exclusive-control/"
section: "sg"
---

# 排他制御とは？同時更新による不整合を防ぐ仕組み【SG試験】

## まず結論

**排他制御**とは、複数の処理が同じデータを同時に更新して、データの不整合が起きないようにする仕組みです。

情報セキュリティマネジメント試験では、

> 同じデータに対する他のトランザクションを待たせる

という説明が出てきたら、**排他制御**を選びます。

ポイントは、データベースの「整理」ではなく、**同時アクセス時の衝突を防ぐ制御**だと考えることです。

---

## 直感的な説明

排他制御は、銀行口座の残高更新で考えると分かりやすいです。

たとえば、同じ口座に対して、ほぼ同時に次の処理が行われたとします。

- ATMで1万円を引き出す
- ネットバンキングで5千円を振り込む

この2つの処理が同時に残高を書き換えると、どちらか一方の更新が消えてしまう可能性があります。

そこで、排他制御では、

> ある処理がデータを更新している間は、他の処理を待たせる

という制御を行います。

つまり、排他制御は、データベースの世界でいう**「今このデータを使っているので、少し待ってください」**という仕組みです。

---

## 定義・仕組み

排他制御は、トランザクション処理において、同じデータに対する同時更新を制御し、データの整合性を保つための仕組みです。

### トランザクションとは

**トランザクション**とは、データベースに対する一連の処理のまとまりです。

たとえば、銀行振込では、

1. Aさんの口座残高を減らす
2. Bさんの口座残高を増やす

という2つの処理がセットで行われます。

このように、途中で止まると困る処理のまとまりをトランザクションと考えます。

### 排他制御で防ぐこと

排他制御では、主に次のような問題を防ぎます。

- 同じデータを複数の処理が同時に更新してしまう
- 古い値をもとに更新してしまう
- 片方の更新結果が消えてしまう
- 不正確なデータを読み込んでしまう

試験では、

> あるトランザクションが処理中のデータに対して、他のトランザクションのアクセスを制限する

という形で問われることがあります。

---

## どんな場面で使う？

排他制御は、複数の利用者や処理が、同じデータベースを同時に使う場面で重要になります。

たとえば、次のような場面です。

- 銀行口座の残高更新
- 在庫数の更新
- 座席予約システム
- チケット販売システム
- ECサイトの商品購入処理

特に、在庫や残高のように、**数値が正確でないと困るデータ**では、排他制御が重要です。

たとえば在庫が1個しかない商品を、2人が同時に購入しようとした場合、排他制御がなければ、どちらにも購入できたように見えてしまう可能性があります。

---

## よくある誤解・混同

### 排他制御と正規化の違い

**正規化**は、データの重複を減らし、整合性を保ちやすい表の構造にすることです。

一方、**排他制御**は、複数の処理が同じデータを同時に操作するときに、不整合が起きないように制御することです。

| 用語 | 見るポイント |
|---|---|
| 正規化 | 表の設計・データの重複削減 |
| 排他制御 | 同時更新・トランザクションの衝突防止 |

「表をどう設計するか」なら正規化、
「同時に更新されると困る」なら排他制御です。

### 排他制御と整合性制約の違い

**整合性制約**は、データベースに不正な値が入らないようにするルールです。

たとえば、

- 主キーは重複できない
- 外部キーは存在するデータを参照する
- 必須項目は空欄にできない

といった制約です。

一方、**排他制御**は、同時処理による更新の衝突を防ぐ仕組みです。

| 用語 | 見るポイント |
|---|---|
| 整合性制約 | 入力できる値・参照関係のルール |
| 排他制御 | 同じデータへの同時アクセスの制御 |

「データのルール」なら整合性制約、
「他の処理を待たせる」なら排他制御です。

### 排他制御と再編成の違い

**再編成**は、データベースの断片化を解消するために、データの物理的な配置や空き領域を整理する処理です。

一方、排他制御は、データ更新中の衝突を防ぐ仕組みです。

| 用語 | 見るポイント |
|---|---|
| 再編成 | 物理的な配置・空き領域の整理 |
| 排他制御 | 同時更新による不整合の防止 |

「データベースを整理する」なら再編成、
「更新中は他を待たせる」なら排他制御です。

---

## 試験での判断ポイント

排他制御を選ぶときは、次の言葉に注目します。

- 同じデータ
- 同時更新
- トランザクション
- 他の処理を待たせる
- 更新消失を防ぐ
- 不整合を防ぐ

特に、問題文に

> あるトランザクションがデータを更新している間、他のトランザクションを待機させる

という内容があれば、排他制御の可能性が高いです。

---

## まとめ（試験直前用）

排他制御は、**同じデータを同時に更新して不整合が起きないようにする仕組み**です。

試験直前は、次の3つで切り分けましょう。

- **同時更新を防ぐ** → 排他制御
- **表の重複を減らす** → 正規化
- **物理的に整理する** → 再編成

排他制御は、データベースの設計や整理ではなく、**トランザクションの衝突を防ぐための制御**と覚えておくと選びやすくなります。
