【问题标题】:backward/forward validation in optimistic concurrency control乐观并发控制中的后向/前向验证
【发布时间】:2015-07-18 21:17:18
【问题描述】:

我是“并发”和“事务”的新手,我对乐观并发控制中的后向/前向验证感到有些困惑。仅以反向验证为例。假设 Tv 是正在验证的事务,而 Ti 是已提交的事务。我想知道为什么我们只检查电视的读取集 vs.Ti 的写入集。为什么我们不检查 Tv 的写入集 vs.Ti 的写入集以及 Tv 的写入集 vs.Ti 的读取集呢?由于 write-write 和 write-read 也是冲突操作...任何解释将不胜感激!

【问题讨论】:

    标签: concurrency transactions distributed-system optimistic-locking


    【解决方案1】:

    验证使用 read-write 冲突规则来确保特定事务的调度与所有重叠事务串行等效。这意味着一旦进入验证阶段,就不能进一步对 read/write 集进行任何更改。

    任意两个交易Ti和Tj需要满足3条规则,其中i i在 Tj) 之前进入验证阶段:

    1. Ti 不得读取由 Tj

    2. 写入的对象
    3. Tj 不得读取 Ti

    4. 写入的对象
    5. Ti 不得写入由 Tj 和 Tj 不能写 Ti

    6. 写的对象

    向后验证假定 Ti 的所有读取 操作都是在 Tj 验证开始之前执行的。这意味着 Ti 已经处于验证阶段。 (满足规则 1)

    在验证 Tj 期间,Tjread 集与 Twrite 集进行检查。如果没有重叠,则 (满足规则 2)

    如果满足规则 1 和规则 2,则隐式满足规则 3。由于 Ti 在 Tj 之前进入验证阶段,所有提交的更改都将按顺序完成。 Tiwrite 集将在 Tjwrite 集之前验证并提交。

    【讨论】:

      【解决方案2】:
      • Tv 的后向验证:

        • 早期重叠事务的读取操作(执行 在 Tv 验证之前)不会受到 ot Tv 写入的影响。 验证检查 Tv 的读取集与之前的写入集 交易,如果有任何冲突则失败;
      • 电视前向验证:

        • 将 Tv 的写入集与所有重叠的读取集进行比较 活跃交易;

        • 不同于后向验证,在前向验证中 是选择要中止的交易(电视或任何 有冲突的活动交易);

      【讨论】:

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