检查给定的调度是否可视图序列化(DBMS)
dbmsdatabasebig data analytics更新于 2026/1/13 0:37:17
如果一个调度在视图上等同于串行调度,则该调度具有视图可序列化性。如果满足以下三个规则,则该调度是视图可序列化的 −
规则 1 − 如果 Ti 先读取数据,则 Tj 随后在给定的调度中写入相同的数据。事务组合(读写操作)必须遵循此顺序。
规则 2 − 如果 Ti 先写入数据,则 Tj 随后在给定的调度中读取相同的数据。事务组合(写入读操作)必须遵循此顺序。
规则 3 − 如果 Ti 写入数据,则 Tj 随后最终写入数据。在事务组合(写-写操作)中必须遵循此顺序。
问题
检查调度 R1(X)、R2(Y)、R2(Y)、W2(X)、W3(Y)、R1(Y) 的视图可串行化性。
解决方案
创建事务的所有可能组合,我们有三个事务,因此组合如下 −
<T1, T2, T3>
<T1, T3, T2>
<T2, T1, T3>
<T2, T3, T1>
<T3, T1, T2>
<T3, T2, T1>
规则 1 − T1 在 T2 写入相同数据后首次读取,这意味着事务顺序必须是"T1 后跟 T2",因此,删除以下"T1 后不跟 T2"的组合,即 T2 在 T1 之前发生。
<T2, T1, T3>
<T2, T3, T1>
<T3, T2, T1>
规则 2 − T2 写入数据,之后 T1 读取相同的数据 X,这意味着事务顺序必须是"T2 后接 T1",现在这条规则违反了规则 1,因此所有规则均不适用,因此它不是视图可序列化的。
规则 3 − 我们不会检查规则 3,因为我们已经得出结论,在规则 2 中,调度不是视图可序列化的。
结论
给定的调度不是视图可序列化的。

