📜  视图等效的调度条件

📅  最后修改于: 2021-09-09 10:22:46             🧑  作者: Mango

如果满足以下条件,则两个调度 S1 和 S2 被称为视图等效:

1) 初始读取
如果事务 T1 从 S1 中的数据库读取数据项 A,那么在 S2 中 T1 也应该从数据库中读取 A。

T1     T2     T3
-------------------
        R(A)
 W(A)          
               R(A)
        R(B)

事务 T2 正在从数据库读取 A。

2)更新阅读
如果 Ti 正在读取由 S1 中的 Tj 更新的 A,那么在 S2 中 Ti 也应该读取由 Tj 更新的 A。

T1     T2     T3         T1    T2    T3                   
-------------------       ----------------
 W(A)                    W(A)       
         W(A)                               R(A)
                 R(A)               W(A)

以上两个时间表在 S1 中不是视图等效的:T3 正在读取由 T2 更新的 A,在 S2 T3 正在读取由 T1 更新的 A。

3)最终写操作
如果事务 T1 最后在 S1 中更新了 A,那么在 S2 中 T1 也应该执行最终的写操作。

T1       T2        T1     T2            
------------    ---------------
 R(A)              R(A)
         W(A)     W(A)
 W(A)                    W(A)

以上两个调度不是视图等效的,因为 S1 中的最终写入操作由 T1 完成,而 S2 中的最终写入操作由 T2 完成。

视图可序列化:如果视图等于串行调度(没有重叠事务),则调度称为视图可序列化。

以下是关于此主题的上一个 Year Gate 问题
https://www.geeksforgeeks.org/dbms-gq/transactions-and-concurrency-control-gq/