【问题标题】:How two-phase locking helps avoid the non-serializable schedule?两阶段锁定如何帮助避免不可序列化的调度?
【发布时间】:2014-06-20 04:37:54
【问题描述】:

现在,我在这里有两笔交易。 一致性要求为A=0 v B=0,A=B=0为初始值

T1: read(A);
    read(B);
    if A=0 then B:=B+1;
    write(B).

T2: read(B);
    read(A);
    if B=0 then A:=A+1;
    write(A).

我知道没有并行执行导致可序列化的计划。所以我想应用两阶段锁定来保证可序列化。

两阶段锁定如何保证可串行化?你能给我举一个这两个交易的例子吗?

谢谢。

【问题讨论】:

  • 在这个问题的上下文中,两阶段锁定意味着什么 - 在进入 T1 或 T2 之前先锁定 A,然后锁定 B?

标签: concurrency transactions locking serial-processing


【解决方案1】:

正如您所提到的,没有并行执行导致可序列化的计划,即计划不冲突序列化。

如果一个调度不是可序列化的冲突,那么两阶段锁定协议会导致死锁。所以你不能使用两阶段锁定来保证可序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    相关资源
    最近更新 更多