【问题标题】:correctness of forward oriented optimistic concurrency control前向乐观并发控制的正确性
【发布时间】:2019-07-18 18:57:34
【问题描述】:

我正在学习数据库中的 OCC,前向 OCC 算法需要一个事务来验证所有并行运行但仍处于读取阶段的事务。我很困惑为什么它可以确保提交顺序保持序列化(COCSR,这意味着等效的序列化顺序与提交顺序相同)。

其实我可以举个这样的反例:

tx1: |--r(x)---|--validation--|------w(y)----|
tx2:          |----r(z)----------r(y)----------|

tx1 的验证将通过,因为在其验证阶段它看不到 tx2r(y)tx2 是只读事务,因此不需要验证阶段。 (算法出自《交易信息系统》一书)

但是,tx1tx2 之前提交,但tx2 看不到tx1 写入的值。这与COCSR的定义相矛盾,为什么?

【问题讨论】:

    标签: database concurrency optimistic-concurrency


    【解决方案1】:

    验证写入阶段是一个关键部分。当一个线程处于 val-write 阶段时,没有其他线程可以进行任何读/写操作。

    tx1: |--r(x)---(--validation---w(y)-)----|

    tx2: |----r(z)------------------------------r(y)-- -----|

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多