💻 ITパスポート | テクノロジ系

トランザクションとは?

「全部成功か、全部なかったことか」を保証する、DBの一連の処理のまとまり。

🎬 こんなシーンを想像
A口座から3万円をB口座に送金中、処理の途中でサーバーがクラッシュ。「Aから引いた」けど「Bに足していない」という中途半端な状態になったら大問題。
…どうやってデータの整合性を守る?

これを防ぐためにトランザクションがある。「全部成功」か「全部なかったこと(ロールバック)」にする。

🧪 ACID特性(4つの保証) A 原子性 C 一貫性 I 独立性 D 永続性

A:原子性(Atomicity)

全部完了するか、全部なかったことになるか。中途半端はあり得ない。

C:一貫性(Consistency)

処理の前後でDB内のデータが矛盾しない状態を保つ。

I:独立性(Isolation)

複数のトランザクションが同時に動いても、互いに影響を与えない。

D:永続性(Durability)

コミット済みの変更はクラッシュが起きても消えない。

🔄 コミットとロールバック
トランザクション開始
一連の処理(例:A口座から引く → B口座に足す)をまとめて実行開始。
全処理を実行
DBへの変更はまだ「仮」の状態。確定されていない。
✅ 全部成功 → コミット
変更をDBに確定。永続的に保存される。
❌ 途中でエラー → ロールバック
変更をすべて取り消し、開始前の状態に戻す。
⚠️ ひっかけ注意ポイント
「コミット」と「保存」を混同しやすい
コミットはトランザクションの確定操作。ファイルの「上書き保存」とは別の概念。
「ロールバック=削除」は誤り
ロールバックはトランザクション開始前の状態への復元。データを削除するのではなく、変更をなかったことにする。
ACID の I(独立性)の意味
「隔離性」とも呼ぶ。並行して動く別のトランザクションの途中の変更が見えないようにする性質。試験では「分離性」表記も。
トランザクション=DBだけの話ではない
広義には「一連の処理の塊」全般を指す(ATMの一取引など)。ただし試験問題では主にDB文脈で出る。
🧠 覚え方(無理やりゴロ)
ACID は「ア・シ・ド(酸)」で覚える!
A(原子性)・C(一貫性)・I(独立性)・D(永続性)

ゴロ:「全か無か、原子の掟」
A(Atomicity)=全か無か、が一番大事!口頭で「全か無か」と言えたら正解
ITパスポート 詳細解説 / itp-transaction