データベースの基礎【トランザクション管理機能(コミットメント制御)】

今回はトランザクション管理機能の1つであるコミットメント制御機能についてまとめました。

特に新人システムエンジニアやプログラマーに抑えておいて欲しい内容です。

この記事を書いている僕はシステムエンジニア6年目

普段はJavaでWebアプリを作ったりSQL書いたり・・・(DBAのような仕事は普段していないです)

応用情報技術者試験に合格(2回落ちましたが。。)し、データベースの分野が得意だったので、

独学でデータベーススペシャリストの勉強をして、昨年合格(これは1発合格)しました。

今回は、トランザクション管理機能の1つであるコミットメント制御機能についてまとめました。

この記事を読む前に

以下の記事を読んでトランザクションについて理解しておくのがオススメです。

トランザクションのACID特性とトランザクション分離レベルが不十分な場合の挙動

コミットとロールバック

まずコミットとは、、

トランザクション内の全ての処理が正常に完了したとき、その更新結果を確定させてデータベースへ書き込むことです。

こんなイメージです。

逆に言えば、コミットされるまでは途中の処理の状態がデータベースに反映されていません。

これ重要です。抑えておきましょう!!!

次にロールバックとは、、、

トランザクションの途中に何らかのエラーが発生した場合、処理を取り消し、トランザクション開始直前の状態に戻すことです。

こんなイメージです。

このコミットとロールバックによって、原子性(「トランザクションは、完全に実行されるか全くされないかのどちらかでなければならない。」)が実現できます。

今回は簡単な内容でしたが、

トランザクションのコミットとロールバックはシステム開発の現場でプログラミングをしていると頻繁に使用します。

例えばこんな感じで、

コミットやロールバックを何となくこれら使うのではなく、

「トランザクションが中途半端な状態でデータベースに反映されてしまい、他のトランザクションにそれを参照させないために利用しているんだな」

って感じできちんと目的を理解した上で使いましょう!!

変なところでコミットしてる人がたまにいるんですが、、そうならないように注意してください。。。

2022/03/21追記

現場で必要なデータベース周りの知識に関するまとめ記事を作ったので

是非そちらも参照ください!!

初めてデータベースを触る方に向けて〜新人プログラマー時代の自分に伝えたいこと〜

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください