【とらんざくしょん】

トランザクション とは?

最終更新:
💡 「全部成功か、全部なかったことに」のひとまとめ処理
📌 このページのポイント
残高: ¥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」 = 取引・処理
💬 ビジネス用語の「取引」と同じ単語。銀行の「振込取引」がデータベースでも同じ概念で使われていると覚えよう
← 用語集にもどる