平成27年度 秋期 ITパスポート試験 公開問題 問71 解説 トランザクションの異常終了
処理一覧に示す実行順に,トランザクション1〜4を実行する。あるトランザクションが途中で異常終了し,トランザクションを中断してロールバックした結果,データAとデータBが残った。異常終了したトランザクションはどれか。ここで,トランザクションが正常終了したときにコミットを行い,次のトランザクションがあれば,それを実行する。異常終了したときは,当該トランザクション以降のトランザクションを実行しないものとする。 〔処理一覧〕
- トランザクション1
- トランザクション2
- トランザクション3
- トランザクション4 ✓ 正答
解説
この問題は、各トランザクションが順に実行された際の状態変化を追跡し、最終的な状態がどの時点で止まったのかを逆算することで解くことができます。
実行順序と状態変化のシミュレーション
提示された処理を順番に適用し、データAとデータBの状態がどう変化するかを確認します。
- トランザクション1を実行:データAが作成される。
- 現状:Aが存在する。
- トランザクション2を実行:データBを作成し、データAを削除する。
- 現状:Bが存在する(Aは削除済み)。
- トランザクション3を実行:データAを作成する。
- 現状:AとBの両方が存在する。
- トランザクション4(仮定):処理内容は記載されていませんが、問題文の条件より「異常終了したときは、当該トランザクション以降の処理を行わない」とあります。
問題文にある「データAとデータBが残った」という結果は、トランザクション3が正常終了した直後の状態と一致します。もしトランザクション4が正常に終了していれば、処理一覧に記載はないものの何らかのデータ変更が加わっていたはずです。したがって、トランザクション4で何らかの異常が発生し、ロールバック(処理の取り消し)が行われたことで、トランザクション3終了時点の状態が維持されていると判断できます。
トランザクションとACID特性
ITパスポートで登場する「トランザクション」とは、データベースにおいて「分割不可能な一連の処理単位」を指します。この概念を理解する上で欠かせないのが、ACID(アシッド)特性と呼ばれる4つの性質です。
- 原子性(Atomicity):トランザクション内の処理は「すべて実行される」か「一つも実行されない」かのどちらかであること。異常終了時にはロールバックを行い、処理前の状態に完全に戻すことが求められます。
- 一貫性(Consistency):処理の前後でデータベースの整合性が保たれること。
- 独立性(Isolation):複数のトランザクションが同時に実行されても、互いに影響を受けないこと。
- 持続性(Durability):コミットが完了した処理は、その後システム障害が発生しても失われないこと。
この問題では、特に「原子性」の概念が問われています。異常終了した処理は「なかったこと」になり、その直前までコミットされていた状態が最終結果として残ります。
実務現場におけるトランザクションの重要性
この知識は、銀行の振込システムやECサイトの決済システムなどで非常に重要です。例えば「口座Aから1万円を引き出し、口座Bに1万円を預ける」という処理を考えてみましょう。
もし途中でシステム障害が発生した際、口座Aからお金が減ったのに口座Bに届いていない、あるいはその逆の状態が発生すると、大きなトラブルになります。そのため、システムは処理の途中でエラーが発生した瞬間にロールバックを行い、残高が勝手に減ったり増えたりしないように制御しています。
試験ではこのように、複雑なデータ処理をシンプルに捉え、どの地点までが保証されているかを論理的に整理する能力が求められます。