DBMS视图可序列化

  • 如果时间表与序列时间表等效, 则它将查看可序列化的时间表。
  • 如果时间表可序列化冲突, 那么它将可视图序列化。
  • 与可序列化不冲突的可序列化视图包含盲写。
查看等效 如果两个计划S1和S2满足以下条件, 则它们被视为等效视图:
1.初始读取
两个时间表的初始读取必须相同。假设有两个时间表S1和S2。在计划S1中, 如果事务T1正在读取数据项A, 则在S2中, 事务T1也应读取A。
DBMS视图可序列化

文章图片
上面两个时间表是等效的视图, 因为S1中的初始读取操作由T1完成, 而S2中的初始读取操作也由T1完成。
2.更新阅读
在时间表S1中, 如果Ti正在读取由Tj更新的A, 那么在S2中, Ti也应读取由Tj更新的A。
DBMS视图可序列化

文章图片
上面的两个时间表是不相等的, 因为在S1中, T3读取由T2更新的A, 在S2中, T3读取由T1更新的A。
3.最终写
两个计划之间的最终写入必须相同。在时间表S1中, 如果事务T1最后更新了A, 则在S2中, 最后的写操作也应由T1完成。
DBMS视图可序列化

文章图片
由于S1中的最终写入操作由T3完成, 而S2中的最终写入操作也由T3完成, 因此以上两个时间表的视图相等。
例:
DBMS视图可序列化

文章图片
附表S
【DBMS视图可序列化】有3笔交易, 可能的时间表总数
= 3! = 6S1 = < T1 T2 T3> S2 = < T1 T3 T2> S3 = < T2 T3 T1> S4 = < T2 T1 T3> S5 = < T3 T1 T2> S6 = < T3 T2 T1>

采取第一时间表S1:
DBMS视图可序列化

文章图片
附表S1
步骤1:对数据项进行最终更新
在计划S和S1中, 没有读取, 只有初始读取, 这就是为什么我们不需要检查该条件的原因。
步骤2:初始读取
S中的初始读取操作由T1完成, 而S1中的初始读取操作也由T1完成。
步骤3:最终写入
S中的最终写操作由T3完成, 而S1中的最终写操作也由T3完成。因此, S和S1是等效视图。
第一个时间表S1满足所有三个条件, 因此我们不需要检查另一个时间表。
因此, 查看等效的串行时间表是:
T1→T2→T3

    推荐阅读