27

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

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

4

8 回答 8

60

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

例如:

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

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

但在以下情况下:

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

有冲突。

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

冲突等效:指的是时间表S1以及S2它们在两个时间表中维护冲突指令的顺序的位置。例如,如果必须在写入 之前T1读取,那么它也应该是相同的。(仅应为冲突操作维护顺序)。XT2XS1S2

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

于 2015-04-02T22:11:23.107 回答
8

来自维基百科

冲突对等

S1如果满足以下条件,则称这些调度S2是冲突等价的:

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

  2. 和 中每对冲突动作的顺序S1相同S2

可冲突序列化

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

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

于 2012-12-11T15:34:17.507 回答
7

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

冲突等价:你需要说附表A是冲突等价于附表B。它必须涉及两个时间表

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

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

我们没有说附表 A 是可序列化到附表 B 的冲突

于 2013-07-06T05:20:47.630 回答
4

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

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

于 2014-04-29T14:15:26.607 回答
1

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

于 2014-01-13T09:17:58.130 回答
1

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

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

于 2015-03-19T11:00:41.180 回答
0

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

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

于 2015-10-27T21:43:43.723 回答
0

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

于 2017-03-13T08:21:35.570 回答