什么时候我们说调度是冲突等价的(DBMS)?
如果两个调度的任何两个冲突操作的顺序相同,则称这两个调度是冲突等价的。
此外,如果可以通过交换非冲突指令的执行顺序从调度 S 获得串行调度 S',则并发调度 S 与串行调度 S' 冲突等价。
示例 1
即使调度 S1 使数据库保持一致状态,我们也无法将其转换为串行调度,因此我们得出结论,该调度与任何串行调度都不冲突等价。
因此,我们不仅要考虑读写操作,还要考虑中间操作,这将导致一种新的可串行化形式,称为视图可串行化。
因此,通过查看上述事务,S1 是 S2 的冲突等价。
示例 2
如果两个调度的任何两个冲突操作的顺序相同,则称这两个调度是冲突等价的。
冲突操作的先决条件是:
两个冲突操作必须属于两个不同的事务。
它们必须作用于同一个数据库或变量,例如 x。
至少有一个操作必须是“写”。例如,操作应该是读-写;写-写;写-读
调度 1 | 调度 2 |
---|---|
R1(x) | R1(y) |
W2(x) | R1(x) |
R1(y) | W2(x) |
在此示例中,
R(x) - 对变量 x 的读取操作
W(x) - 对变量 x 的写入操作
R1W2 是冲突操作。由于两个调度中的顺序相同。
广告