1定理:由2PL事务所构成的任意合法调度S都是冲突可串行化的。证明:当调度S仅由一个事务组成时,调度S是冲突可串行化的。假设:由(n-1)个2PL事务所构成的任意一个合法调度都是冲突可串行化的。设调度S涉及n个2PL事务:T1,T2,……,Tn,并且Ti是调度S中第一个有解锁动作的事务,则我们可以得到以下结论:?可以将Ti的所有动作不经过任何冲突而移动到调度S的最前面。
2定理证明(续)设在Ti中有一个动作wi(A)(或ri(A)),如果调度S在该动作的前面有一个与之冲突的动作wj(A)(i?j),那么调度S的情况必是:…;wj(A);…;uj(A);…;li(A);…;wi(A);…∵Ti是调度S中第一个有解锁动作的事务∴在uj(A)之前必存在Ti中的一个解锁动作(如ui(B)),则调度S变为:…;wj(A);…;ui(B);…;uj(A);…;li(A);…;wi(A);…在上述的调度S中,仅考虑与事务Ti有关的动作序列
3定理证明(续)在上述的调度S中,仅考虑与事务Ti有关的动作序列:…;ui(B);…;li(A);…;wi(A);…这不符合2PL事务的定义,与Ti是2PL事务相矛盾。∴在Ti的每个动作wi(A)(或ri(A))之前,都不存在与其产生冲突且属于其它事务的动作∴结论?成立
4定理证明(续)根据得到的结论?,我们可以将调度S转换为另一个冲突等价的调度S:(Ti的所有动作);(其它(n-1)个2PL事务的动作)并且维持其后半部分动作在调度S中的原有顺序不变;其中Ti的封锁/解锁动作在转换后可以恢复到调度S中去。
5定理证明(续)调度S:(Ti的所有动作);(其它(n-1)个2PL事务的动作)∵调度S是一个合法调度∴调度S的后半部分是其它(n-1)个2PL事务的一个合法调度∴根据步骤2的归纳假设的前提可得:调度S的后半部分是其它(n-1)个2PL事务的一个‘冲突可串行化’的调度,即冲突等价于这(n-1)个2PL事务的某个串行调度。∴调度S冲突等价于这n个2PL事务的某个串行调度∴调度S是冲突可串行化的∴调度S也是冲突可串行化的 证毕
6