今回はトランザクション管理機能の1つであるコミットメント制御機能についてまとめました。
特に新人システムエンジニアやプログラマーに抑えておいて欲しい内容です。
この記事を書いている僕はシステムエンジニア6年目
普段はJavaでWebアプリを作ったりSQL書いたり・・・(DBAのような仕事は普段していないです)
応用情報技術者試験に合格(2回落ちましたが。。)し、データベースの分野が得意だったので、
独学でデータベーススペシャリストの勉強をして、昨年合格(これは1発合格)しました。
今回は、トランザクション管理機能の1つであるコミットメント制御機能についてまとめました。
この記事を読む前に
以下の記事を読んでトランザクションについて理解しておくのがオススメです。
トランザクションのACID特性とトランザクション分離レベルが不十分な場合の挙動
コミットとロールバック
まずコミットとは、、
トランザクション内の全ての処理が正常に完了したとき、その更新結果を確定させてデータベースへ書き込むことです。
こんなイメージです。
逆に言えば、コミットされるまでは途中の処理の状態がデータベースに反映されていません。
これ重要です。抑えておきましょう!!!
次にロールバックとは、、、
トランザクションの途中に何らかのエラーが発生した場合、処理を取り消し、トランザクション開始直前の状態に戻すことです。
こんなイメージです。
このコミットとロールバックによって、原子性(「トランザクションは、完全に実行されるか全くされないかのどちらかでなければならない。」)が実現できます。
今回は簡単な内容でしたが、
トランザクションのコミットとロールバックはシステム開発の現場でプログラミングをしていると頻繁に使用します。
例えばこんな感じで、
コミットやロールバックを何となくこれら使うのではなく、
「トランザクションが中途半端な状態でデータベースに反映されてしまい、他のトランザクションにそれを参照させないために利用しているんだな」
って感じできちんと目的を理解した上で使いましょう!!
変なところでコミットしてる人がたまにいるんですが、、そうならないように注意してください。。。
2022/03/21追記
現場で必要なデータベース周りの知識に関するまとめ記事を作ったので
是非そちらも参照ください!!