データベースで言うコミット(Commit)とは、データベースに対して行った一連の変更を確定させ、正式に反映させる操作のことです。データの追加や更新、削除といった処理は、コミットを行って初めて、他の利用者からも見える正式なデータとして確定します。
現実世界に例えると、コミットは下書きした書類に、責任者が最終的なハンコを押すようなものです。ハンコが押されるまでは、いつでも内容を書き直せる下書きの状態ですが、押した瞬間に正式な記録として確定します。
トランザクションとの関係
| 用語 | 内容 |
|---|---|
| トランザクション | ひとまとまりとして扱われる一連の処理 |
| コミット | トランザクションの内容を確定させる操作 |
コミットが必要な理由
データベースの処理は、複数の変更をひとまとめの「トランザクション」として扱い、すべてが成功した場合にのみ確定させるという考え方に基づいています。コミットを行うことで、その一連の処理が無事に完了したことを正式に記録できます。
コミット前の状態
コミットが行われる前の変更内容は、まだ確定していない一時的な状態にあり、その処理を行った本人以外からは見えないのが基本です。この間であれば、内容を取り消す「ロールバック」によって、変更をなかったことにすることもできます。これにより、途中でミスに気づいても安全に処理をやり直せます。
自動コミットという設定
データベースの中には、1つの命令ごとに自動的にコミットを行う「自動コミット」というモードを備えているものもあります。複数の処理をまとめて確定させたい場合には、この設定を切り替えて手動でコミットのタイミングを制御することもできます。用途に応じて適切な方を選ぶことが大切です。
コミットのタイミングが重要な理由
関連する複数の処理を別々にコミットしてしまうと、途中で異常が発生した際に、データの整合性が崩れてしまうおそれがあります。関連する処理はひとつのトランザクションとしてまとめ、まとめてコミットすることが重要です。
コミットが遅れることの影響
コミットされるまでの間、該当するデータには他の処理からの変更を防ぐロックがかけられ続けます。コミットのタイミングが遅れると、その分だけ他の処理を待たせてしまい、システム全体の応答速度が低下する原因になることがあります。
複数のデータベースにまたがるコミット
複数のシステムやデータベースにまたがる処理では、すべてが同時に確定するよう調整する、より高度な仕組みが使われることもあります。一部だけが確定し、他が未確定のままになってしまう事態を避けるための工夫です。
あわせて知っておきたい用語
- トランザクション:
ひとまとまりとして扱われる、一連のデータベース処理です。 - ロールバック:
確定前の変更を取り消し、元の状態に戻す操作です。 - デッドロック:
複数の処理が互いに待ち合い、身動きが取れなくなる状態です。 - RDB(リレーショナルDB):
表形式でデータを管理する、代表的なデータベースです。

コメント