📜  门| GATE-CS-2014-(Set-3) |第 65 题

📅  最后修改于: 2021-09-26 03:34:29             🧑  作者: Mango

考虑下面给出的事务 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 都不是冲突可序列化的。答案:(一)
说明:对于调度的冲突可串行化(与串行调度产生相同的效果),我们应该检查冲突操作,即每对事务之间的读写、写-读和写-写,并根据这些冲突我们制作一个优先级图,如果该图包含一个循环,则它不是一个冲突可序列化的时间表。

制作优先级图:如果 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。这个问题的测验