ITパスポート 学習ページ|テクノロジ系・技術要素

トランザクション処理

データベースを複数の利用者や処理が同時に更新するときは、データの整合性を保つ仕組みが必要です。トランザクションの性質、排他制御、障害からの回復を関連付けて理解します。

処理をひとまとまりで扱う

データベースに対する一連の処理を、意味のある一つの処理単位としてまとめたものをトランザクションといいます。例えば在庫を1個減らして売上を1件記録する処理では、片方だけが実行されるとデータのつじつまが合わなくなります。

このため、関連する処理は途中までの状態を残さず、全て成功させるか、失敗時には元の状態へ戻すように扱います。一連の更新を一つの処理単位として扱うことが整合性の維持につながると押さえます。

関連する更新は一つの処理単位で扱う

ACID特性を押さえる

トランザクションに求められる代表的な性質をACID特性といいます。原子性は処理を全て実行するか全く実行しないこと、整合性は処理の前後でデータが定められたルールを満たすことを表します。

独立性は複数のトランザクションを同時に実行しても、互いの途中状態の影響を受けにくくする性質です。耐久性は、正常に確定した結果がその後の障害でも失われないようにする性質です。

ACIDは原子性・整合性・独立性・耐久性

排他制御で競合を防ぐ

同じデータを複数のトランザクションが同時に更新すると、後から書き込んだ値によって先の更新が失われるなどの問題が起こります。そこで、更新中のデータを他の処理が勝手に変更できないようにする排他制御を行います。

複数の処理が互いに相手の解放を待ち続けて先へ進めない状態をデッドロックといいます。排他制御は競合を防ぐための仕組みであり、障害時にデータを復元する仕組みではない点を区別します。

排他制御は同時更新による矛盾を防ぐ

確定と取消しを区別する

トランザクションが正常に終了したとき、その更新内容を正式な結果として確定することをコミットといいます。一方、処理途中に異常が起きたときなどに、それまでの更新を取り消して処理開始前の状態へ戻すことをロールバックといいます。

コミットは更新の確定、ロールバックは未完了の更新の取消しです。名称が似た処理として覚えるのではなく、確定するのか元に戻すのかで区別します。

コミットは確定、ロールバックは取消し

障害からデータを戻す

DBMSでは、障害が発生してもデータを利用可能な状態へ戻せるように回復機能を備えます。回復の起点として利用できるよう、処理状況を一定の時点で記録するものがチェックポイントです。

障害によって未完了になった更新を取り消す方法をバックワードリカバリ、保存済みのデータなどを基に障害前までの確定済み更新を再現する方法をフォワードリカバリといいます。ロールバックは未完了処理を戻し、ロールフォワードは確定済み更新を進め直すと整理します。

戻す回復と進め直す回復を区別する

本番の形で解いてみる

基本の問題(このページのために作った問題・本番と同じ四肢択一)

ある通販サイトでは、注文確定時に商品の在庫数を1減らし、同時に注文記録を1件追加する。途中で障害が発生した場合に、この二つの更新が片方だけ残らないようにする考え方として最も適切なものはどれか。

  1. 二つの表に同じ索引を設定して更新速度をそろえる
  2. 二つの更新を一つのトランザクションとして扱う
  3. 二つの表を同じタイミングでバックアップする
  4. 二つの更新を別々のトランザクションとして確定する
答えと解説を見る

正解: 二つの更新を一つのトランザクションとして扱う

二つの更新を一つのトランザクションとして扱えば、まとめて確定または取消しできます。別々に確定すると、一方だけが反映される可能性があります。

まちがえやすい点: 処理速度やバックアップではなく、複数更新を一体として確定する仕組みを選びます。

基本の問題(このページのために作った問題・本番と同じ四肢択一)

トランザクションのACID特性のうち、正常に確定した更新結果が、その後に障害が起きても失われないようにする性質はどれか。

  1. 原子性
  2. 整合性
  3. 独立性
  4. 耐久性
答えと解説を見る

正解: 耐久性

正常に確定した結果を保持する性質は耐久性です。原子性は一連の処理を全て実行するか全く実行しない性質です。

まちがえやすい点: 原子性と耐久性は、どちらも障害と関係するため混同しやすい。

基本の問題(このページのために作った問題・本番と同じ四肢択一)

二つのトランザクションがそれぞれ別のデータをロックした後、互いに相手がロックしているデータの解放を待ち続け、どちらも処理を進められなくなった。この状態を何というか。

  1. ロック待ち
  2. デッドロック
  3. タイムアウト
  4. 競合状態
答えと解説を見る

正解: デッドロック

複数のトランザクションが互いに相手のロック解放を待ち、処理を進められない状態がデッドロックです。単なるロック待ちは相手の処理が終われば進行できます。

まちがえやすい点: 一方向に待つだけのロック待ちと、互いに待ち合うデッドロックを区別します。

この内容を問題で確かめる

読んだところを、本番と同じ四肢択一の10問セットで思い出してみましょう。

ITパスポートの問題を解く →

このページの内容は、IPA「ITパスポート試験 シラバス Ver.6.5」(2026年1月公表)の範囲にもとづきます(2026年10月確認)。