戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2023年 科目A07


問題文

トランザクションが、データベースに対する更新処理を完全に行うか、全く処理しなかったかのように取り消すか、のどちらかの結果になることを保証する特性はどれか。

選択肢

一貫性(consistency)
原子性(atomicity)(正解)
耐久性(durability)
独立性(isolation)

🔒 解説は解答すると表示されます

原子性【午前解説】

正解の理由

トランザクションが「更新処理を完全に実行するか、全く行わないかのどちらか」を保証する性質は、原子性と呼ばれます。設問の表現は「全部実行するかゼロか(all-or-nothing)」を示しており、選択肢のうち (原子性:atomicity)がこれに該当します。原子性は、途中で障害が起きた場合にトランザクション全体を取り消して(ロールバック)、データの中途半端な状態を残さないことを保証します。

解法ステップ

  1. 問題文からキーワードを抽出する:「完全に行う」「全く処理しなかったか」「取り消す」や「全部か零か」などの表現を探す。
  2. キーワードとACIDの対応を思い出す:
    • Atomicity(原子性)= all-or-nothing
    • Consistency(一貫性)= 制約を満たす状態遷移
    • Isolation(独立性)= 同時実行の干渉制御
    • Durability(耐久性)= コミット後の永続化
  3. 該当する性質を選ぶ:キーワードが「all-or-nothing」を示しているため、を選択する。
  4. 残りの選択肢は定義で消去する(以下の選択肢別解説参照)。

選択肢別の誤答解説

  • ア: 一貫性(consistency)
    一貫性は、トランザクションが開始前と完了後でデータベースが制約(整合性制約、参照整合性など)を満たすことを指します。「部分的に実行されない」ことを直接示すものではありません。したがって本問の趣旨とは異なります。
  • : 原子性(atomicity)
    正解です。トランザクション全体を単一の不可分な単位とみなし、途中で失敗した場合は全ての操作を取り消し、成功した場合のみすべて適用されることを保証します(ロールバック/コミットの概念)。
  • ウ: 耐久性(durability)
    耐久性は、一度コミットされた変更が永続的に保持され、障害や再起動があっても失われないことを保証します。コミット後の保持に関する性質であり、「全部かゼロか」を示すものではありません。
  • エ: 独立性(isolation)
    独立性は複数トランザクションが同時に実行されても相互に干渉しないこと(直列化やロックなど)の性質です。並行性に関する性質であり、本問の「取り消す/全く行わない」という意味とは異なります。

よくある誤解

  • 原子性と一貫性を混同する:どちらもトランザクションの性質ですが、原子性は実行の粒度(全か無か)、一貫性はデータの整合状態に関するものです。
  • 耐久性=原子性と誤解する:耐久性はコミット後の永続性であり、コミットの有無(全か無か)自体を保証するのは原子性です。
  • 「取り消す」動作をコミット後に期待する:原子性によるロールバックはコミット前の障害処理であり、コミット後は耐久性により変更は残ります。

補足コラム

ACIDの中で原子性を実現するために、データベースは一般にログ(WAL: Write-Ahead Logging)やシャドウページ、ジャーナリングを用います。分散トランザクションでは、全体の原子性を保つために2フェーズコミット(2PC)や3フェーズコミットが用いられます。
簡単なイメージ(口語的):
  • 口座AからBへ1,000円振替える処理は、(1)Aの残高減少と(2)Bの残高増加の2操作で構成されます。原子性がなければ途中で失敗したときにAだけ減ってBに入らない可能性がありますが、原子性があればどちらも適用されるかどちらも適用されないかになります。
SQLの例:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 1000 WHERE id = 'A';
UPDATE accounts SET balance = balance + 1000 WHERE id = 'B';
-- エラーが発生したら
ROLLBACK;
-- 正常なら
COMMIT;

FAQ

Q. 原子性はトランザクションのどの段階で保証されますか?
A. トランザクションがコミットされるかロールバックされるまでの間に保証されます。途中で障害が起きればロールバックにより全操作が取り消されます。
Q. 分散トランザクションでも原子性は維持されますか?
A. はい。ただし複数のノードにまたがる場合は、2フェーズコミットなどのプロトコルを使って全体の原子性を実現します。これには通信障害への対処やデッドロック回避が課題になります。
Q. 「部分的な適用」は完全に防げますか?
A. 単一DB内では通常ログとリカバリ機構で防げます。分散環境では追加の同期手法(2PC、分散トランザクション管理)が必要です。

関連キーワード: トランザクション、ACID、ロールバック、コミット、WAL、二相コミット、整合性、並行制御、耐久性
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について