【问题标题】:What is the difference between "conflict serializable" and "conflict equivalent"?“冲突可序列化”和“冲突等效”有什么区别?
【发布时间】:2012-11-29 04:04:21
【问题描述】:

在数据库理论中,“冲突可序列化”和“冲突等效”有什么区别?

我的教科书有一节关于可序列化的冲突,但忽略了冲突等价。这可能是我熟悉的两个概念,但我不熟悉术语,所以我正在寻找解释。

【问题讨论】:

    标签: database conflict serializable equivalence


    【解决方案1】:

    DBMS 中的冲突可以定义为两个或多个不同的事务访问同一个变量,并且其中至少一个是写操作。

    例如:

    T1: Read(X)   
    T2: Read (X)
    

    在这种情况下没有冲突,因为两个事务都在执行读取操作。

    但在以下情况下:

    T1: Read(X)   
    T2: Write(X)
    

    有冲突。

    假设我们有一个时间表S,我们可以重新排序其中的说明。并创建另外 2 个计划 S1S2

    冲突等效:指的是计划S1S2,它们在这两个计划中维护冲突指令的顺序。例如,如果T1 必须在T2X 写入S1 之前读取X,那么在S2 中也应该是相同的。 (应该只为有冲突的操作维护顺序)。

    冲突可串行化:如果S 与串行调度等效(即事务一个接一个地执行),则称它是可冲突串行化的。

    【讨论】:

    • 您在未经编辑的答案中说过,如果不清楚,您会发布图片。还是请你做吗?
    【解决方案2】:

    来自Wikipedia

    冲突等价

    如果满足以下条件,则称计划 S1S2 是冲突等效的:

    1. S1S2 的计划都涉及相同的事务集(包括每个事务中的操作顺序)。

    2. S1S2中每对冲突动作的顺序相同。

    可冲突序列化

    当调度冲突等效于一个或多个串行调度时,调度被称为是可冲突串行化的。

    冲突可序列化的另一个定义是,当且仅当它的优先级图/可序列化图是非循环的,当且仅当它的优先级图/可序列化图是非循环的(如果该图定义为还包括未提交的事务,则可能会发生涉及未提交事务的循环而不会违反可串行化冲突)。

    【讨论】:

    • 我知道,我已经阅读了 Wiki...我只是看不出这两件事实际上有何不同。
    【解决方案3】:

    只有两个术语可以用不同的方式描述一件事。

    冲突等价:你需要说Schedule A和Schedule B是冲突等价的。它必须涉及两个schedule

    冲突可序列化:仍然使用 Schedule A 和 B。我们可以说 Schedule A 是可冲突可序列化的。附表 B 是冲突可序列化的。

    我们没有说 Schedule A/B 是冲突等价的

    我们没有说 Schedule A 与 Schedule B 冲突可序列化

    【讨论】:

    • 所以您是在强调特定术语的差异?要使用“冲突等价”,必须参考两个独立的时间表,它们彼此保持冲突等价?并且要使用“冲突可序列化”,必须引用一个具有与至少一个其他日程表相冲突的属性的单一日程表?那么“冲突等价”是指至少两个调度,每个调度都是“冲突可序列化”的?
    • 是的,这是我刚刚在事务处理课上学到的。应该是对的。
    【解决方案4】:

    如果一个调度 S 可以通过一系列非冲突指令的交换转换为一个调度 S´,我们说 S 和 S´ 是冲突等价的。

    如果一个调度 S 与串行调度是等价的,我们就说它是冲突可串行化的。

    【讨论】:

      【解决方案5】:

      冲突可串行化意味着冲突等同于任何串行调度。

      【讨论】:

        【解决方案6】:

        冲突等价调度:如果调度 S 可以通过一系列非冲突指令的交换转换为调度 S',我们说调度 S & S' 是冲突等价的。 p>

        冲突可序列化调度:如果调度 S 与串行调度等效,则它是可冲突序列化的。

        【讨论】:

          【解决方案7】:

          定义已经被完美地解释了,但我觉得这对某些人来说非常有用。

          我开发了一个small console program(在 github 上),它可以测试任何计划的冲突可序列化性,并且还会绘制优先图。

          【讨论】:

            【解决方案8】:

            如果考虑的事务调度至少有一个冲突等效调度,则它是冲突可序列化的。

            【讨论】:

              猜你喜欢
              • 2013-12-30
              • 2016-01-22
              • 2015-10-16
              • 2014-04-15
              • 2023-04-01
              • 2016-01-23
              • 2011-07-01
              • 2017-07-06
              • 1970-01-01
              相关资源
              最近更新 更多