在数据库理论中,“冲突可序列化”和“冲突等效”之间有什么区别?
我的教科书中有一个关于冲突可序列化的部分,但隐藏了冲突等同性。这些可能都是我熟悉的概念,但我对术语不熟悉,所以我正在寻找解释。
答案 0 :(得分:55)
DBMS中的冲突可以定义为访问同一个变量的两个或多个不同的事务,其中至少一个是写操作。
例如:
T1: Read(X)
T2: Read (X)
在这种情况下,没有冲突,因为两个事务都只执行读操作。
但在以下情况中:
T1: Read(X)
T2: Write(X)
存在冲突。
假设我们有一个时间表S
,我们可以对其中的说明进行重新排序。并创建另外2个时间表S1
和S2
。
冲突等效:指的是时间表S1
和S2
,它们维护两个时间表中冲突指令的顺序。例如,如果T1
必须在X
T2
中X
之前阅读S1
,那么S2
中的S
也应该相同。 (只应为冲突操作保留订购)。
冲突可串行性:如果{(1}}冲突等同于串行计划(即,一个接一个地执行事务),则称{{1}}是冲突可序列化的。
答案 1 :(得分:8)
来自Wikipedia。
如果满足以下条件,则表示时间表S1
和S2
被认为是冲突等效的:
时间表S1
和S2
都涉及同一组交易(包括每个交易中操作的排序)。
S1
和S2
中每对冲突操作的顺序相同。
当计划冲突 - 相当于一个或多个连续计划时,计划可以冲突序列化。
冲突可序列化的另一个定义是,当且仅当其仅考虑提交的事务时,其优先级图/可序列性图是非循环的(如果图形被定义为还包括未提交的事务,那么)调度是冲突可序列化的涉及未提交事务的周期可能会发生而不会发生冲突可串行化违规。)
答案 2 :(得分:7)
只用两个术语来描述不同的方式。
冲突等效:您需要说计划A与计划B相当,必须涉及两个计划
冲突可序列化:仍然使用Schedule A和B.我们可以说Schedule A是冲突可序列化的。附表B是冲突可序列化的。
我们没有说计划A / B是冲突等价的
我们没有说附表A是冲突可序列化到附表B
答案 3 :(得分:4)
如果可以通过一系列非冲突指令的转换将时间表S转换为时间表S',我们说S和S'是冲突等价的。
如果计划S与串行计划相当冲突,我们说计划S是可序列化的。
答案 4 :(得分:1)
冲突等效时间表:如果可以将时间表S转换为时间表S'通过一系列非冲突指令的交换,我们说时间表S& S'相当于冲突。
冲突可序列化计划:如果计划S与串行计划冲突等效,则冲突可序列化。
答案 5 :(得分:0)
冲突序列化意味着与任何连续计划相当的冲突。
答案 6 :(得分:0)
已经完全解释了定义,但我觉得这对某些人来说非常有用。
我已经开发了一个small console program(在github上),它可以测试冲突可串行化的任何时间表,并且还会绘制一个优先图。
答案 7 :(得分:0)
如果考虑的事务计划至少存在一个冲突等效计划,则冲突可序列化。