【DB基礎】トランザクション・コミット・ロールバックとは? 意味が初心者でもわかるように説明

トランザクション処理

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、DBにおけるトランザクション・コミット・ロールバックとは何か、意味が初心者でもわかるように解説します。

トランザクション・コミット・ロールバックとは?

「トランザクション」「コミット」「ロールバック」の3点セットはデータベースの話でよく出てきます。

具体的なコマンド操作については触れずに、概念の理解を深めましょう。

トランザクション(Transaction)とは?

トランザクションは「特定の処理の開始から、特定の処理の終了までがワンセット」な処理単位です。

つまり、トランザクション処理は「処理のハッピーセット」(処理のまとまったセット)なのです!

そして「トランザクション処理」と言う「処理のワンセット」(処理のハッピーセット)は、

最終的に「COMMIT(コミット)」「ROLLBACK(ロールバック)」で終了します。

コミットは一連の処理をまとめて確定し、ロールバックはまとめて処理を取り消すコマンドです。

細かい点は、この後、それぞれ解説します。

コミット(COMMIT)とは?

トランザクション処理の結果を確定させる(処理を反映させる)ことをコミット (COMMIT)」と言います。

先述のとおり、トランザクション処理は「特定の処理の開始から、特定の処理の終了までがワンセット」な処理です。

そしてトランザクション処理は、コミットで処理を完了させる(反映させる)か、

ロールバックで処理を取り消す(処理の開始まで戻る)かのどちらかです。

コミットされるまでは、処理は反映されません。

コミットされて初めて、トランザクション処理の結果が本体に反映されるのです。

ちなみに、Gitのコミットも処理をブランチに反映させるコマンドなので、同じ考え方ですね。

ロールバック (Rollback)とは?

ロールバック (Rollback)とは、トランザクションの開始地点まで処理結果を取り消して、戻ることです。

少しだけ細かく言うと、トランザクション処理中に何らかの理由によりエラーが発生した時に、

途中までの処理結果を捨てて(中断して)、トランザクション開始前の状態にDBを戻す処理のことです。

処理がちゃんと最後まで完了しないで、できた中途半端な結果(エラー)をDBに反映させると、今度はDBがエラーを起こします。

こういった2次被害を防ぐためにロールバック (Rollback)はあります。

まとめ

トランザクション処理を実施した際に、

トランザクション処理の結果を確定させるのが「コミット」(結果の反映)

やりかけの処理結果を捨てて、処理開始前の状態に戻すのが「ロールバック」(巻き戻し)

です。

つまり、処理が成功したら「コミット」で処理を反映させる、処理が失敗したら「ロールバック」で処理を戻す

と言うことです。

上記の「トランザクション」「コミット」「ロールバック」の3点セットの関係性・概念を理解しておきましょう。

DB・SQL関連書籍

参考・引用

  1. 【初級】新人SEのためのSQLの基礎 第5回 トランザクションとカーソルにまつわる注意点
  2. ロールバック (rollback)とは
  3. ロールバック とは? – Insider’s Computer Dictionary – ITmedia

最近の投稿