DBMS查看可序列化
精华
小牛编辑
202浏览
2023-03-14
如果视图相当于一个串行调度,那么视图将序列化。
如果调度是冲突可序列化的,那么它将是可序列化的。
可序列化的视图可序列化包含盲写。
查看等效
如果满足以下条件,则两个调度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