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

上一篇:DBMS冲突串行化调度

下一篇:调度的可恢复性

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程