【とらんざくしょん】
トランザクション とは?
💡 「全部成功か、全部なかったことに」のひとまとめ処理
📌 このページのポイント
トランザクションって何?
複数の処理を「全部まとめてOKか、全部なかったことにするか」として扱う仕組みだよ。ATMでお金を引き出すとき、「残高を確認して→引き落とす」という2つの処理が両方成功しないといけないよね?それをひとまとめにするのがトランザクションだよ。
もし途中で失敗したらどうなるの?
自動的に「ロールバック」されて、処理前の状態に戻るんだ。ATMの例だと、引き落としの途中でエラーが起きても、残高が減ったまま現金が出ない…なんてことにならないようにしてくれるよ。
全部成功したときは?
「コミット」して処理が確定するんだ。コミットされるまでは「まだ仮の状態」として扱われるから、失敗すれば巻き戻せる。コミットして初めてデータベースに本当に反映されるよ。
どんな場面で使うの?
銀行の送金・ネット通販の注文・チケット予約など「途中で止まったら困る処理」はほぼ全部使ってるよ。「商品の在庫を減らして、注文を登録して、支払いを処理する」という3つがセットで成功しないといけないよね。
複数の人が同時に操作したらどうなるの?
ちょっとマニアックな話になるけど、「トランザクション分離レベル」という概念があって、READ COMMITTEDやREPEATABLE READ、SERIALIZABLEなど複数の設定があるんだ。どのレベルにするかで「ダーティリード」「ノンリピータブルリード」「ファントムリード」という種類の問題を防げたり防げなかったりする。データベースのプロでも「ファントムリードとノンリピータブルリードの違いは?」と聞かれると整理に少し時間がかかるくらい、細かくて難しい概念なんだよ。
まとめ:ざっくりこれだけ覚えればOK!
「トランザクション」って出てきたら「全部まとめて成功か全部取り消しか、という一連の処理のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「transaction」 = 取引・処理
💬 ビジネス用語の「取引」と同じ単語。銀行の「振込取引」がデータベースでも同じ概念で使われていると覚えよう