检查两个计划是否视图相等(DBMS)

有两种类型的可串行化,如下所示 -

查看可序列化性

如果视图等同于串行调度,则调度是视图可串行化的。

它遵循的规则如下 -

  • T1正在读取A的初始值,然后T2也读取A的初始值。

  • T1是T2写入的读取值,然后T2也读取T1写入的值。

  • T1是写终值,然后T2也有写操作作为终值。

冲突可串行化

它以与某些串行执行相同的方式对任何冲突操作进行排序。如果一对操作对同一数据项进行操作,并且其中一个是写操作,则称这对操作发生冲突。

这意味着,

  • Readi(x) readj(x) - 非冲突读写操作

  • Readi(x) writej(x) - 冲突读写操作。

  • Writei(x) readj(x) - 冲突读写操作。

  • Writei(x) writej(x) - 冲突写-写操作。

现在让我们找出时间表是否相等。

调度是视图可串行化的,如果它是视图等效于串行调度。如果满足以下三个规则,时间表是视图可序列化的 -

  • 规则 1 - 如果 Ti 最初读取数据,则在此 Tj 写入相同数据之后,在给定的时间表中。在事务组合(读写操作)中必须遵循此顺序。

  • 规则 2 - 如果 Ti 最初写入数据,则在此 Tj 之后,在给定的时间表中读取相同的数据。在事务组合(写读操作)中必须遵循这个顺序。

  • 规则 3 - 如果 Ti 写入数据,则在此之后 Tj 最终写入数据。在事务组合(写-写操作)中必须遵循这个顺序。

示例

R1(X) W2(X) W1(X),创建交易的所有可能组合。我们有 2 个交易,所以组合是 - <T1, T2> 和 <T2, T1>。

  • 规则 1 - T1 最初读取,在此 T2 写入相同数据后,这意味着事务顺序必须是“T1 后跟 T2”。因此,删除以下组合,其中“T1 后面没有 T2”,即 <T2, T1>

  • 规则 2 - T2 最初写入,此后没有事务读取相同的数据。所以我们保留所有交易组合,这意味着规则 2 不会删除任何组合。

  • Rule 3 - T1 最后写入数据,这意味着 T1 必须最后出现,因此删除以下“t1 最后没有出现”的组合。<T1、T2>

因此,没有任何组合可以满足视图的可序列化性。

结论

给定的时间表不可查看序列化。

以上是 检查两个计划是否视图相等(DBMS) 的全部内容, 来源链接: utcz.com/z/338752.html

回到顶部