テクノロジ系応用問題
データベースのトランザクション処理中にシステム障害が発生した場合、ACIDの原子性(Atomicity)を保つためにデータベースはどのような処理を行うか。
A.トランザクション開始前の状態に戻すロールバック処理を実行し、中途半端な更新を取り消す← 正解
✓ 正解です。原子性により、トランザクションは「全て完了」か「全て未実施」のどちらかでなければなりません。障害時はロールバックにより変更を取り消します。
B.コミット済みの更新のみを保持し、未コミットの更新もそのまま残す
✗ 未コミットの更新をそのまま残すと原子性が損なわれます。障害時には未完了のトランザクションはロールバックされる必要があります。
C.障害発生直前の状態を最終状態として確定させ、ログを破棄する
✗ 中途半端な状態を確定させることは原子性に違反します。トランザクションは完全に完了するか全て取り消されるかのどちらかです。
D.トランザクションを再度最初から自動的に再実行する
✗ 自動再実行はデータベースの標準的な障害回復処理ではありません。原子性の保証にはロールバックが用いられます。