トランザクションとコミット・ロールバックとは?わかりやすく解説
データベースの一連の処理を「まとめて成功か、まとめて取り消し」にする仕組みを学びます。
最初に考えてみよう
銀行振込で「相手に入金されたのに、自分の口座からは引かれていない」といったズレが起きると大問題です。どうすれば、複数の処理をまとめて安全に完了させられるのでしょうか?
解説
1振込を1歩ずつ動かす
「Aから500引く→Bに500足す」を実行。片方だけ成功は困るので、 最後にまとめて確定/取り消しします。途中で障害も起こしてみよう。
2信頼できる処理=ACID特性
全部成功か全部なし(中途半端にしない)
ルールを保ち、矛盾した状態にしない
同時に動く処理が互いに邪魔しない
確定した結果は障害が起きても消えない
試験のポイント
ITパスポート試験での問われ方
コミット/ロールバックの意味、排他制御、ACID特性が問われる
間違えやすいポイント
- コミットとロールバックを逆にする
- 排他制御を暗号化と混同する
関連用語
トランザクション、コミット、ロールバック、排他制御、ロック、ACID特性
図解の内容を文章で読む
トランザクションとコミット・ロールバックをイメージでつかむ
トランザクションは、分けられない一連の処理のまとまりです。全部成功したら確定するのがコミット、途中で失敗したら処理前に戻すのがロールバックです。複数人が同時に更新して矛盾しないよう、排他制御(ロック)も使います。信頼できる処理の性質をACID特性と呼びます。
たとえると:銀行振込で「Aから引いてBに足す」の片方だけ成功は困ります。両方できたら確定(コミット)、ダメなら無かったことにする(ロールバック)=全部成功か全部なしにします。
トランザクションは、「途中まで」では意味をなさない一連の処理を、1つのまとまりとして扱うしくみです。代表例が銀行振込で、「Aの口座から引く」と「Bの口座に足す」は必ずセットで成立しなければなりません。すべて成功したら結果を確定するのがコミット、途中で失敗したら開始前の状態まで巻き戻すのがロールバックです。コミット=確定、ロールバック=巻き戻し、と方向を取り違えないようにしましょう。また、複数の人が同じデータを同時に更新すると矛盾が起きるため、処理中はロックをかけて他の人を待たせる排他制御を行います。トランザクションが備えるべき性質は、原子性・一貫性・独立性・耐久性の頭文字でACID特性と呼ばれます。試験ではコミット/ロールバックの意味と排他制御の目的が問われます。
押さえどころ
- コミット=処理を確定
- ロールバック=処理前に戻す
- 排他制御(ロック)で同時更新の矛盾を防ぐ
確認問題(4問)
確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。
「トランザクションとコミット・ロールバック」の過去問(5問)
IPAが公開しているITパスポート試験の公開問題から、このテーマの問題を集めました。
あわせて覚える英略語
つながるテーマ
学習を記録して、合格まで続ける
教材と確認問題はこのページで全部無料で使えます。登録すると「トランザクションとコミット・ロールバック」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。