DBMS檢視可序列化


如果檢視相當於一個序列排程,那麼檢視將序列化。
如果排程是衝突可序列化的,那麼它將是可序列化的。
可序列化的檢視可序列化包含盲寫。

檢視等效

如果滿足以下條件,則兩個排程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讀取A由T2更新,而在S2中,T3讀取A由T1更新。

3. 最後寫入

兩個排程之間的最終寫入必須相同。 在時間表S1中,如果事務T1最後更新A然後在S2中,則最終寫入操作也應該由T1完成。

以上排程檢視相等,因為S1中的最終寫入操作由T3完成,而在S2中,最終寫入操作也由T3完成。

範例:

有3個事務,可能的排程總數,如下所示:

= 3! = 6  
S1 = <T1 T2 T3>  
S2 = <T1 T3 T2>  
S3 = <T2 T3 T1>  
S4 = <T2 T1 T3>  
S5 = <T3 T1 T2>  
S6 = <T3 T2 T1>

採取第一個排程S1:

排程S1

第1步: 對資料項進行最終更新
在排程S和S1中,除了初始讀取之外沒有讀取,這是不需要檢查該條件的原因。

第2步: 初始讀取
S中的初始讀操作由T1完成,在S1中,也由T1完成。

第3步: 最後寫入
S中的最終寫入操作由T3完成,在S1中,它也由T3完成。 因此,S和S1是等效檢視。第一個排程S1滿足所有三個條件,因此我們不需要檢查另一個排程。

因此,檢視等效的序列排程是:

T1    →      T2    →    T3