检查给定的时间表是否可序列化(DBMS)
如果一个调度表等同于一个串行调度表,它就具有视图可串行化性。如果满足以下三个规则,则计划是视图可序列化的-
规则1-如果Ti最初读取数据,则此Tj在给定的时间表中写入相同的数据之后。在事务组合(读写操作)中必须遵循此顺序。
规则2-如果Ti最初写入数据,则在此Tj之后,在给定的时间表中读取相同的数据。在事务组合(写读操作)中必须遵循这个顺序。
规则3-如果Ti写入数据,则在此之后Tj最终写入数据。在事务组合(写-写操作)中必须遵循这个顺序。
问题
检查调度R1(X)、R2(Y)、R2(Y)、W2(X)、W3(Y)、R1(Y)的视图可序列化性。
解决方案
创建交易的所有可能组合,我们有三个交易,因此组合如下-
规则1-T1在此T2写入相同数据后最初读取,这意味着事务序列必须是“T1后跟T2”,因此,删除以下组合,其中“T1后不跟T2”,即T2发生在必须删除T1之前。
Rule2-T2写数据,这个T1读到相同的数据X后,这意味着交易顺序必须是“T2后跟T1”,现在这个规则违反了规则1,因此没有任何规则可以应用,所以是不能查看可序列化。
规则3-我们不会检查规则3,因为我们已经得出结论,调度在规则2中不是视图可序列化的。
结论
给定的计划不是视图可序列化的。