📜  DBMS视图可序列化性

📅  最后修改于: 2020-12-12 07:35:32             🧑  作者: Mango

查看可序列化

  • 如果时间表与序列时间表等效,则它将查看可序列化的时间表。
  • 如果时间表是可序列化的冲突,则它将是可序列化的视图。
  • 与可序列化不冲突的可序列化视图包含盲写。

查看等效

如果两个计划S1和S2满足以下条件,则它们被视为等效视图:

1.初始读取

两个时间表的初始读取必须相同。假设有两个时间表S1和S2。在计划S1中,如果事务T1正在读取数据项A,则在S2中,事务T1也应读取A。

上面的两个时间表是等效的视图,因为S1中的初始读取操作由T1完成,而S2中的初始读取操作也由T1完成。

2.更新阅读

在时间表S1中,如果Ti正在读取由Tj更新的A,则在S2中,Ti也应读取由Tj更新的A。

上面的两个时间表是不相等的,因为在S1中,T3读取由T2更新的A,而在S2中,T3读取由T1更新的A。

3.最后写

两个计划之间的最终写入必须相同。在调度表S1中,如果事务T1最后更新A,则在S2中,最后的写操作也应由T1完成。

由于S1中的最终写入操作由T3完成,而S2中的最终写入操作也由T3完成,因此以上两个时间表是相同的。

例:

附表S

有3笔交易,可能的时间表总数

= 3! = 6
S1 = 
S2 = 
S3 = 
S4 = 
S5 = 
S6 = 

采取第一时间表S1:

附表S1

步骤1:对数据项进行最终更新

在计划S和S1中,都没有读取,只有初始读取,这就是我们不需要检查该条件的原因。

步骤2:初始读取

S中的初始读取操作由T1完成,而S1中的初始读取操作也由T1完成。

步骤3:最终写入

S中的最终写操作由T3完成,而S1中的最终写操作也由T3完成。因此,S和S1是等效视图。

第一个时间表S1满足所有三个条件,因此我们无需检查另一个时间表。

因此,查看等效的串行时间表是:

T1    →      T2    →    T3