データベース応用問題

データベースサーバで大規模なバッチ処理(数百万件のINSERT)を実行中に、途中でサーバが突然停止した。データベースがACID特性を保証しており、バッチ処理は単一トランザクションとして実行されていた場合、再起動後のデータベースの状態として正しいものはどれか。

A.処理が完了した件数分だけINSERTされた状態で確定し、残りは無効化される
✗ 単一トランザクション内で一部だけ確定する動作はACIDの原子性(Atomicity)に違反します。
B.バッチ処理の開始前の状態に戻り、途中までのINSERTはすべて取り消される← 正解
✓ 正解です。原子性により、コミットされていないトランザクションは障害後の再起動時にロールバックされ、開始前の状態に戻ります。
C.INSERT済みのデータはコミットされ、未処理分のみロールバックされる
✗ コミット前のデータが部分的に確定することはありません。トランザクション全体が一つの単位として扱われます。
D.インデックスのみロールバックされ、テーブル本体のデータは残存する
✗ インデックスとテーブルデータを別々にロールバックする仕組みは存在せず、整合性が保たれた状態に戻されます。

基本情報技術者試験 の問題一覧