【とらんざくしょん】

トランザクション とは?

💡 「全部成功か、全部なかったことに」のひとまとめ処理
📌 このページのポイント
残高: ¥10,000 引出: ¥3,000 実行ボタン ATM 🔒 トランザクション開始 ① 残高確認(¥10,000 あり) ✓ OK ② 残高から ¥3,000 引き落とし ✓ OK ③ 現金を排出する ✓ OK コミット (確定・完了) ロールバック (元に戻す) 成功の場合 残高 ¥7,000 確定 現金受け取り OK 失敗の場合 残高 ¥10,000 に戻る 現金は出ない 全部成功 → コミット / どこかで失敗 → ロールバック(元に戻す)
ATMの引き出し処理は「残高確認・引落・排出」が全部成功しないとロールバックされる
ひよこ ひよこ

トランザクションって何?

ペンギン先生 ペンギン先生

複数の処理を「全部まとめてOKか、全部なかったことにするか」として扱う仕組みだよ。ATMでお金を引き出すとき、「残高を確認して→引き落とす」という2つの処理が両方成功しないといけないよね?それをひとまとめにするのがトランザクションだよ。

ひよこ ひよこ

もし途中で失敗したらどうなるの?

ペンギン先生 ペンギン先生

自動的に「ロールバック」されて、処理前の状態に戻るんだ。ATMの例だと、引き落としの途中でエラーが起きても、残高が減ったまま現金が出ない…なんてことにならないようにしてくれるよ。

ひよこ ひよこ

全部成功したときは?

ペンギン先生 ペンギン先生

「コミット」して処理が確定するんだ。コミットされるまでは「まだ仮の状態」として扱われるから、失敗すれば巻き戻せる。コミットして初めてデータベースに本当に反映されるよ。

ひよこ ひよこ

どんな場面で使うの?

ペンギン先生 ペンギン先生

銀行の送金・ネット通販の注文・チケット予約など「途中で止まったら困る処理」はほぼ全部使ってるよ。「商品の在庫を減らして、注文を登録して、支払いを処理する」という3つがセットで成功しないといけないよね。

ひよこ ひよこ

複数の人が同時に操作したらどうなるの?

ペンギン先生 ペンギン先生

ちょっとマニアックな話になるけど、「トランザクション分離レベル」という概念があって、READ COMMITTEDやREPEATABLE READ、SERIALIZABLEなど複数の設定があるんだ。どのレベルにするかで「ダーティリード」「ノンリピータブルリード」「ファントムリード」という種類の問題を防げたり防げなかったりする。データベースのプロでも「ファントムリードノンリピータブルリードの違いは?」と聞かれると整理に少し時間がかかるくらい、細かくて難しい概念なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「トランザクション」って出てきたら「全部まとめて成功か全部取り消しか、という一連の処理のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「transaction」 = 取引・処理
💬 ビジネス用語の「取引」と同じ単語。銀行の「振込取引」がデータベースでも同じ概念で使われていると覚えよう
← 用語集にもどる