基本情報技術者 2012年 秋期 午前(科目A) 問30
問題文
DBMSが、データベースの更新に対して保証すべき原子性(atomicity)の単位はどれか。
選択肢
ア:DBMSの起動から停止まで
イ:チェックポイントから次のチェックポイントまで
ウ:データベースのバックアップ取得から媒体障害の発生時点まで
エ:トランザクションの開始からコミット又はロールバックまで(正解)
##: 原子性(atomicity)の単位はどれか【午前2 解説】
要点まとめ
- 結論:原子性の単位はトランザクションの開始からコミット又はロールバックまでで、途中で部分的適用は許されません。
- 根拠:ACIDのA(Atomicity)は「全て実行されるか全く実行されないか」を保証し、ログ(UNDO/REDO)で処理単位を管理します。
- 差がつくポイント:チェックポイントやバックアップはリカバリや耐久性に関する概念であり、原子性はあくまでトランザクション境界の概念です。
正解の理由
トランザクションは一連の更新操作をひとまとめにして扱う論理的単位であり、原子性はその単位全体に対して「全成功または全失敗」を保証します。コミットが発行された時点で変更が確定し、ロールバックが発生すれば当該トランザクションの影響は完全に取り消されます。従って原子性の単位は「トランザクションの開始からコミット又はロールバックまで」であり、選択肢の中では エ が正解です。
簡単なSQL例:
BEGIN TRANSACTION; UPDATE account SET balance = balance - 100 WHERE id = 1; UPDATE account SET balance = balance + 100 WHERE id = 2; COMMIT; -- 問題があれば ROLLBACK;
この例では両方のUPDATEが共に反映されるか、あるいは全て取り消されるかのいずれかになります。これが原子性です。
よくある誤解
- 「チェックポイント間が原子性の単位」だと思う誤解:チェックポイントはログ切り捨てや回復時間短縮のためで、操作の原子性を定義するものではありません。
- 「バックアップ取得から障害時までが原子性」だと思う誤解:バックアップはデータ保護・復旧のためであり、原子性(操作単位)とは趣旨が異なります。
- 「DBMSの起動から停止までなら原子性は守られる」:起動期間は単に稼働時間であり、個々の更新はトランザクション単位で管理されます。
解法ステップ
- 問題文のキーワード「原子性(atomicity)」を確認し、ACIDのAを思い出します。
- 「単位」を問われているので、どの範囲で“全て実行されるか全く実行されないか”を保証するかを考えます。
- トランザクションの境界(開始〜コミット/ロールバック)が該当することを確認して選択肢を絞ります。
- チェックポイント・バックアップ・起動期間がそれぞれ何の目的か(耐久性・回復・稼働)を整理して除外します。
選択肢別の誤答解説
- ア: DBMSの起動から停止まで
- 誤り。これは単なる稼働期間であり、個々の更新操作の一貫性や原子性はトランザクション単位で管理されます。
- イ: チェックポイントから次のチェックポイントまで
- 誤り。チェックポイントはログの適用状況をディスクに反映して回復時間を短縮するための仕組みで、原子性そのものの単位ではありません。
- ウ: データベースのバックアップ取得から媒体障害の発生時点まで
- 誤り。バックアップは障害時の復旧手段であり、更新操作の原子性(全か無か)を定義するものではありません。
- エ: トランザクションの開始からコミット又はロールバックまで
- 正解。トランザクション境界が原子性の単位であり、この範囲で全操作の成功または失敗が保証されます。
補足コラム
実装面では、原子性を実現するためにログ(Write-Ahead Logging)、UNDO/REDO、クラッシュリカバリの仕組みが用いられます。分散トランザクション環境では2相コミット(2PC)で複数ノードにまたがるトランザクションの原子性を確保します。ネストしたトランザクションの取り扱いや部分コミットの有無はDBMSにより設計が異なるため、問題文で「トランザクション」と明記されている場合は基本的な定義を優先してください。
FAQ
Q1: 原子性と耐久性(Durability)の違いは何ですか?
A1: 原子性は「操作が全部適用されるか全部取り消されるか」を保証する性質で、耐久性は「コミットした変更が恒久的に保持される」ことを指します。
A1: 原子性は「操作が全部適用されるか全部取り消されるか」を保証する性質で、耐久性は「コミットした変更が恒久的に保持される」ことを指します。
Q2: チェックポイントは原子性に全く関係ないですか?
A2: 完全に無関係というわけではありませんが、チェックポイントは主にログ管理と回復時間短縮のための仕組みで、原子性の単位を定めるものではありません。
A2: 完全に無関係というわけではありませんが、チェックポイントは主にログ管理と回復時間短縮のための仕組みで、原子性の単位を定めるものではありません。
Q3: 分散トランザクションでも原子性は同じ単位ですか?
A3: 原子性の概念自体は同じですが、複数ノード間では2相コミットなどのプロトコルで全体の原子性を実現します。
A3: 原子性の概念自体は同じですが、複数ノード間では2相コミットなどのプロトコルで全体の原子性を実現します。
関連キーワード: 原子性、トランザクション、ACID、コミット、ロールバック、チェックポイント、WAL、UNDO/REDO、リカバリ、二相コミット

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

