Concurrency 乐观并发控制中的向后/向前验证

Concurrency 乐观并发控制中的向后/向前验证,concurrency,transactions,distributed-system,optimistic-locking,Concurrency,Transactions,Distributed System,Optimistic Locking,我不熟悉“并发”和“事务”,对乐观并发控制中的向后/向前验证感到有点困惑。以反向验证为例。假设Tv是正在验证的事务,Ti是提交的事务。我想知道为什么我们只是检查电视的读写设备。我们为什么不检查一下电视的写入集和Ti的写入集,以及电视的写入集和Ti的读取集呢?由于写-写和写-读也是冲突操作…任何解释都将不胜感激 验证使用读写冲突规则来确保特定事务的调度顺序等同于所有重叠事务。这意味着一旦进入验证阶段,就不能进一步执行对读/写集的更改 任何两个事务Ti和Tj都需要满足3个规则,其中i

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

验证使用读写冲突规则来确保特定事务的调度顺序等同于所有重叠事务。这意味着一旦进入验证阶段,就不能进一步执行对读/写集的更改

任何两个事务Ti和Tj都需要满足3个规则,其中i
  • Ti不得读取Tj写入的对象

  • Tj不得读取Ti写入的对象

  • Ti不得写入由Tj和 Tj不得写入Ti写入的对象

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

    在Tj验证期间,Tj的读取集与Ti的写入集进行检查。如果没有重叠,则(满足规则2)

    如果满足规则1和规则2,则隐式满足规则3。所有提交的变更将按顺序进行,因为Ti在Tj之前进入了验证阶段。Ti的写入集将在Tj的写入集之前进行验证和提交。

    • 电视反向验证:

      • 早期重叠事务的读取操作(已执行 在验证电视之前)不受电视的影响。 验证将检查Tv的读集和早期版本的写集 交易,如果存在任何冲突,则失败
    • 电视的正向验证:

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

      • 与反向验证不同,在正向验证中 是要中止的事务的选项(Tv或 冲突的活跃交易)