考虑事务T1,T2和T3以及下面给出的时间表S1和S2。
T1: r1(X); r1(Z); w1(X); w1(Z)
T2: r2(Y); r2(Z); w2(Z)
T3: r3(Y); r3(X); w3(Y)
S1: r1(X); r3(Y); r3(X); r2(Y); r2(Z);
w3(Y); w2(Z); r1(Z); w1(X); w1(Z)
S2: r1(X); r3(Y); r2(Y); r3(X); r1(Z);
r2(Z); w3(Y); w1(X); w2(Z); w1(Z)
以下有关时间表的以下哪一项是正确的?
(A)只有S1是可冲突序列化的。
(B)只有S2是可冲突序列化的。
(C) S1和S2都是可冲突序列化的。
(D) S1和S2都不是可冲突序列化的。答案: (A)
说明:对于日程表的冲突可序列化(与串行日程表具有相同的效果),我们应检查冲突操作,即每对事务之间的读写操作,读写读写操作,并基于这些冲突,创建一个优先级图,如果该图包含一个循环,则它不是可序列化的冲突计划。
制作一个优先级图:如果Ti中的Read(X)继之以Tj中的Write(X)(因此发生冲突),那么我们将绘制一条从Ti到Tj的边(Ti-> Tj)
如果我们为S1和S2制作优先级图,我们将得到S1的有向边,如T2-> T1,T2-> T3,T3-> T1,而S2的有向边为T2-> T1,T2-> T3,T3- > T1,T1-> T2。在S1中没有周期,但是S2有一个周期。因此,只有S1是可冲突序列化的。
注意:S1的串行顺序为T2-> T3-> T1。这个问题的测验