��也可能存在这样的调度,它们产生的结果相同,但却不是冲突等价的。考虑两个调度S和S',其中参与两个调度的事务集是相同的。若调度S和S'满足下面三个条件,则称S和S'是视图等价的。
��⑴�对于每个数据项Q,若事务Ti在调度S中读取了Q的初始值,那么Ti在调度S'中也必须读取Q的初始值;
��⑵�对于每个数据项Q,若事务Ti在调度S中执行了read(Q)并且读取的值是由Tj产生的(write(Q)),则Ti在调度S'中读取的值也必须是由Tj产生的(write(Q));
��⑶�对于每个数据项Q,若在调度S中有事务执行了最后的写操作write(Q),则在调度S'中该事务也必须执行最后的写操作write(Q)。
��在视图等价的三个条件中,前两个条件保证了两个调度中的每个事务都读取了相同的值,从而才能进行相同的计算。第三个条件和前两个条件一起保证了两个调度能够得到相同的最终结果。
��视图等价的概念引出了视图可串行化的概念。如果某个调度视图等价于一个串行调度,则说这个调度是视图可串行化的。如图10-5-11所示,调度8就视图等价于串行调度<T3,T4,T5>,因此它是视图可串行化的。
|