考虑以下具有两个事务 T1 和 T2 的数据库调度。
S = r2(X); r1(X); r2(Y); w1(X); r1(Y); w2(X); a1; a2;
其中 ri(Z) 表示事务 Ti 对变量 Z 的读操作,wi(Z) 表示 Ti 对变量 Z 的写操作,ai 表示事务 Ti 的中止。
关于上述时间表,以下哪一项是正确的?
(A) S 不可恢复
(B) S 是可恢复的,但有级联中止
(C) S 没有级联中止
(D) S 是严格的答案: (C)
解释:
正如我们在图中看到的,
- T2 覆盖 T1 写入的值
- T1 中止:恢复其“记忆”值。
- 如果 -> T1 的中止需要 T2 的中止,但由于 T2 已经中止,它不是级联中止,则可能出现级联中止。因此,选项 C
选项 A –不正确,因为给定的时间表是可恢复的
选项 B –不正确,因为它是可恢复的并且避免级联中止;
选项 D –不正确,因为 T2 在 T1 之后也在执行中止操作,所以不严格。
这个问题的测验