检查两个调度是否视图等价(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 没有删除任何组合。

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

因此,没有组合剩下以满足视图可串行化。

结论

给定的调度不是视图可串行化的。

更新于: 2021-07-08

372 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.