トランザクション処理 (全26問中13問目)
No.13
処理一覧に示す実行順に,トランザクション1~4を実行する。あるトランザクションが途中で異常終了し,トランザクションを中断してロールバックした結果,データAとデータBが残った。異常終了したトランザクションはどれか。ここで,トランザクションが正常終了したときにコミットを行い,次のトランザクションがあれば,それを実行する。異常終了したときは,当該トランザクション以降のトランザクションを実行しないものとする。
出典:平成27年秋期 問71
- トランザクション1
- トランザクション2
- トランザクション3
- トランザクション4
分類
テクノロジ系 » データベース » トランザクション処理
正解
エ
解説
それぞれのトランザクションの処理が正常に行われた場合、生成されているデータは以下のようになります。トランザクションには、トランザクション内の処理がすべて実行されるか、または全く実行されないかのどちらかで完了しなければならないので、処理途中で障害が発生した場合には「データをトランザクション開始直前の状態に戻す」ロールバック処理が行われます。
ロールバックが行われた結果、データAとデータBが残ったということは「あるトランザクションで障害が発生したために、そのトランザクションの開始直前の状態(データAとデータBがある状態)に戻った」と考えることができます。トランザクションの開始時点でデータAとデータBの両方が存在するのはトランザクション4だけのため、「トランザクション3までは正常にコミットされたが、トランザクション4の途中で障害が発生したためにトランザクション4の開始直前の状態(トランザクション3のコミット時点)に戻った」ことがわかります。
したがって正解は「エ」です。
ロールバックが行われた結果、データAとデータBが残ったということは「あるトランザクションで障害が発生したために、そのトランザクションの開始直前の状態(データAとデータBがある状態)に戻った」と考えることができます。トランザクションの開始時点でデータAとデータBの両方が存在するのはトランザクション4だけのため、「トランザクション3までは正常にコミットされたが、トランザクション4の途中で障害が発生したためにトランザクション4の開始直前の状態(トランザクション3のコミット時点)に戻った」ことがわかります。
したがって正解は「エ」です。