ロールバックとは?ロールバック
ロールバックとは、更新前ログ(UNDOログ)を使って、トランザクションが行った更新を取り消し、開始前の状態へ戻す処理。利用者のROLLBACK文だけでなく、デッドロックの犠牲者に選ばれたときや異常終了時にも起きる。再起動時の回復処理では、コミットしていないトランザクションがすべてこの対象になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
更新の途中で異常が起きたとき、そこまでの部分的な更新が残ると、業務上ありえない状態がデータベースに固定されてしまう。かといって更新のたびに全体を複製するのは現実的でないので、DBMSはページを書き換える前に「元の値」をログへ書き残しておく。この記録があれば、どこまで進んでいても開始時点へ巻き戻せる。試験ではどの障害にどちらの向きの回復を使うかが定番の設問になる。
具体例
MySQLのInnoDBはUNDOログを保持しており、ROLLBACK文を受けると更新前の値を書き戻す。デッドロックを検出したときも、片方のトランザクションを自動的にロールバックして待ちの輪を解く。
試験での引っ掛け
ロールフォワードと向きが逆。ロールバックは更新前ログ(UNDO)で過去の状態へ戻し、ロールフォワードは更新後ログ(REDO)で先の状態へ進める。使うログの種類まで含めて対で覚える。また媒体障害の回復にロールバックは使わない(バックアップの復元+ロールフォワード)。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)解説で登場
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問17(IPA)解説で登場
トランザクションの原子性(atomicity)の説明として、適切なものはどれか。
正解:トランザクションが終了したときの状態は、処理済みか未処理のどちらかしかない。
要点:原子性は全て実行か全く実行しないかのどちらかになる性質
原子性は、トランザクションの処理が全て実行されるか、全く実行されないかのどちらかになる性質である。途中で異常が起きた場合はロールバックして開始前の状態に戻すため、中途半端に一部だけ反映された状態は残らない。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6(IPA)解説で登場
DBMSが取得するログに関する記述として、適切なものはどれか。
正解:ロールフォワードに備えて、データベースの更新されたページに対する更新後情報を取得する。
要点:ロールフォワードは更新後情報、ロールバックは更新前情報
ロールフォワードは、バックアップ取得後の更新をログで再現して復旧する処理なので、更新後の内容を記録したログが必要になる。逆にトランザクションの取消し(ロールバック)では更新前の内容を使って元に戻す。目的によって更新前・更新後のどちらを使うかが決まる。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)解説で登場
データベース更新における2相コミットに関する記述のうち、適切なものはどれか。
正解:2相コミットを行うためには、同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
要点:2相コミットは全サイトへの可否確認のやり取りが前提
2相コミットでは、第1相で調停役のサイトが関係する全サイトにコミット可能かどうかを問い合わせ、その応答を集めてから第2相でコミットまたはロールバックを指示する。この可否確認のやり取りがあるからこそ、分散した複数のデータベースの更新を一括して確定・取消しできる。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA)
分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、…
正解:2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
要点:2相コミットでも指示が届かないと判断できず待たされる
2相コミットには、了承応答を返した後に主サイトからの最終指示が届かないと、そのサイトがコミットもロールバックもできずロックを保持したまま待ち続けるという弱点がある。これをブロッキングと呼び、2相コミットでも完全には避けられない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。