トランザクションとコミット・ロールバックとは?わかりやすく解説

テクノロジ系 ・ 技術要素(データベース) ・ 読む目安8分 ・ 頻出

データベースの一連の処理を「まとめて成功か、まとめて取り消し」にする仕組みを学びます。

最初に考えてみよう

銀行振込で「相手に入金されたのに、自分の口座からは引かれていない」といったズレが起きると大問題です。どうすれば、複数の処理をまとめて安全に完了させられるのでしょうか?

解説

トランザクションは分けられない一連の処理。全部成功で確定するコミット、 失敗時に開始前へ戻すロールバックがカギです。

1振込を1歩ずつ動かす

「Aから500引く→Bに500足す」を実行。片方だけ成功は困るので、 最後にまとめて確定/取り消しします。途中で障害も起こしてみよう。

⟲ ドラッグで回転

2信頼できる処理=ACID特性

A原子性

全部成功か全部なし(中途半端にしない)

C一貫性

ルールを保ち、矛盾した状態にしない

I独立性

同時に動く処理が互いに邪魔しない

D永続性

確定した結果は障害が起きても消えない

頭文字 A・C・I・D。トランザクションが守るべき4つの性質です。

試験のポイント

ITパスポート試験での問われ方

コミット/ロールバックの意味、排他制御、ACID特性が問われる

間違えやすいポイント

  • コミットとロールバックを逆にする
  • 排他制御を暗号化と混同する

関連用語

トランザクション、コミット、ロールバック、排他制御、ロック、ACID特性

図解の内容を文章で読む

トランザクションとコミット・ロールバックをイメージでつかむ

トランザクションは、分けられない一連の処理のまとまりです。全部成功したら確定するのがコミット、途中で失敗したら処理前に戻すのがロールバックです。複数人が同時に更新して矛盾しないよう、排他制御(ロック)も使います。信頼できる処理の性質をACID特性と呼びます。

たとえると:銀行振込で「Aから引いてBに足す」の片方だけ成功は困ります。両方できたら確定(コミット)、ダメなら無かったことにする(ロールバック)=全部成功か全部なしにします。

トランザクションは、「途中まで」では意味をなさない一連の処理を、1つのまとまりとして扱うしくみです。代表例が銀行振込で、「Aの口座から引く」と「Bの口座に足す」は必ずセットで成立しなければなりません。すべて成功したら結果を確定するのがコミット、途中で失敗したら開始前の状態まで巻き戻すのがロールバックです。コミット=確定、ロールバック=巻き戻し、と方向を取り違えないようにしましょう。また、複数の人が同じデータを同時に更新すると矛盾が起きるため、処理中はロックをかけて他の人を待たせる排他制御を行います。トランザクションが備えるべき性質は、原子性・一貫性・独立性・耐久性の頭文字でACID特性と呼ばれます。試験ではコミット/ロールバックの意味と排他制御の目的が問われます。

押さえどころ

  • コミット=処理を確定
  • ロールバック=処理前に戻す
  • 排他制御(ロック)で同時更新の矛盾を防ぐ

確認問題(4問)

確認問題を読み込んでいます...

確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。

「トランザクションとコミット・ロールバック」の過去問(5問)

IPAが公開しているITパスポート試験の公開問題から、このテーマの問題を集めました。

あわせて覚える英略語

つながるテーマ

この解説をXでシェア

学習を記録して、合格まで続ける

教材と確認問題はこのページで全部無料で使えます。登録すると「トランザクションとコミット・ロールバック」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。