平成30年度 秋期 (特別措置試験) 問63
データベース
ロールバックの説明
トランザクション処理におけるロールバックの説明として,適切なものはどれか。
- アあるトランザクションが共有データを更新しようとしたとき,そのデータに対する他のトランザクションからの更新を禁止すること
- イトランザクションが正常に処理されたときに,データベースへの更新を確定させること
- ウ何らかの理由で,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態にすること
- エ複数の表を,互いに関係付ける列をキーとして,一つの表にすること
答えと解説を見る
✓ これが正解ウ何らかの理由で,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態にすること
解説
うまく終わらなかった処理を、始める前の状態へ巻き戻します。
トランザクションとは、まとめて成り立たなければ意味のない一連の処理のことです。口座から引いて別の口座へ足す、という組がその例です。片方だけ済んで止まると、お金が消えたことになります。だから、途中で失敗したときは、始める前の状態へ丸ごと戻します。これがロールバックです。戻すための記録を別に取っておき、それを逆にたどって元へ戻します。うまく終わったときは、変更を確定させます。こちらはコミットで、ロールバックと対になります。戻す範囲は、一つのトランザクションの中だけです。すでに終わった別の処理までは戻しません。戻す引き金は、途中の失敗のほかにもあります。利用者が取り消した場合や、機械が落ちた場合も同じです。立ち上げ直したときに、記録を見て自動で戻します。残る三つは、同じデータベースの中の別の操作です。
ほかの選択肢はなぜ違うのか
- アあるトランザクションが共有データを更新し…:あるトランザクションが更新している間、他からの更新を禁じるという肢です。これは排他制御にあたります。待たせるぶん遅くなります。範囲を狭くする工夫が必要です。同時に触って壊れるのを防ぐ仕組みで、失敗した後に戻す話ではありません。
- イトランザクションが正常に処理されたときに…:正常に処理されたときに更新を確定させるという肢です。これはコミットにあたります。ロールバックと対になっていて、どちらもトランザクションの終わり方です。確定した後は取り消せません。分かれ目は、うまくいったかどうかです。
- エ複数の表を,互いに関係付ける列をキーとし…:複数の表を、関係付ける列をキーにして一つの表にするという肢です。これは結合と呼ばれる操作です。表からほしい形を取り出すための操作で、処理の失敗とは関わりません。キーの列がそろっていないと結べません。四つの中で最も遠い肢です。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成30年度 秋期 ITパスポート試験(特別措置試験) 問63
同じ用語が出る問題
- 令和8年度 問56:チェックポイントの説明(トランザクション)
- 令和7年度 問61:トランザクションに関する記述(トランザクション)
- 令和6年度 問74:トランザクション処理に関する記述(排他制御)
- 令和2年度 10月 (特別措置試験) 問64:DBMSに関する問題(排他制御)
- 令和元年度 秋期 (特別措置試験) 問87:関係データベースに関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)