問71
頻出度★☆☆
図は処理1, 処理2の順でデータベースを更新するトランザクションの処理フローを示している。図中のa~cのうち, コミット処理 (処理1, 処理2の更新結果を確定させる処理) に該当する箇所だけを全て挙げたものはどれか。
这道题的解析和你的作答记录。
図は処理1, 処理2の順でデータベースを更新するトランザクションの処理フローを示している。図中のa~cのうち, コミット処理 (処理1, 処理2の更新結果を確定させる処理) に該当する箇所だけを全て挙げたものはどれか。
正解 正确答案是 ア(a)。事务是「把处理1和处理2合在一起,作为一个不可分割的单位来对待」的机制,因此只有在处理1和处理2都正常结束时,才可以确定(提交)更新结果。顺着图往下看,「处理1是否正常结束?」为 Yes、接着「处理2是否正常结束?」也为 Yes 的这条路径的前方,只有 a。因此属于提交处理的位置只有 a。
a 是对的,但 b 错了。b 是「处理2是否正常结束?」为 No 时经过的位置,既然处理2已经失败,就不能确定更新结果。在 b 处需要连同处理1的更新一起取消(回滚),所以它不属于提交处理。
b 和 c 都是位于异常结束路径上的位置,两者对应的都不是提交,而是回滚。此外,这个选项没有包含位于两个处理都正常结束的唯一路径上的 a,这一点也是错的。
c 是「处理1是否正常结束?」为 No 时经过的位置。在处理1的阶段就已经失败,处理2甚至没有被执行,因此不存在应当确定的正常更新结果。c 是取消处理1更新的回滚处理,而不是提交处理。