设 S 是关系数据库系统中三个事务 T1、T2 和 T3 的以下操作时间表:
R2(Y),R1(X),R3(Z),R1(Y)W1(X),R2(Z),W2(Y),R3(X),W3(Z)
考虑下面的语句 P 和 Q:
- P: S 是冲突可序列化的。
- 问:如果 T3 在 T1 完成之前提交,那么 S 是可恢复的。
以下哪个选项是正确的?
(A) P 和 Q 都为真
(B) P 为真,Q 为假
(C) P 为假,Q 为真
(D) P 和 Q 都是假的答案:(乙)
解释:
T1 | T2 | T3 |
R(Y) | ||
R(X) | ||
R(Z) | ||
R(Y) | ||
W(X) | ||
R(Z) | ||
W(Y) | ||
R(X) | ||
W(Z) |
因此,语句 P 是冲突可序列化的。
如果 T j通过读取 T i写入的数据创建脏读,并且 T j在 T i提交后提交,则调度 S 是可恢复的。
T1 和 T2 必须在 T3 之前提交,因为 T3 脏读取了 T1 和 T2 的值,因此如果T3 在 T1 完成之前提交,那么 S 将无法恢复。
因此陈述 Q 是错误的。
这个问题的测验