第六章 并发控制

第一节 第二节 第三节 第四节 第五节 第六节

第五节 并发调度的可串行性
    一、什么样的并发操作调度是正确的?计算机系统对并行事务中并行操作的调度是的随机的,而不同的
调度可能会产生不同的结果。将所有事务串行起来的调度策略一定是正确的调度策略。如果一个事务运行过
程中没有其他事务在同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是
正常的或者预想的。以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一
致状态,所以都可以认为是正确的。
    几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行
调度策略称为可串行化(Serializable)的调度。可串行性是并行事务正确性的唯一准则。
    例:现在有两个事务,分别包含下列操作:
    事务1:读B;A=B+1;写回A;
    事务2:读A;B=A+1;写回B;
    假设A的初值为2,B的初值为2。对这两个事务的不同调度策略,串行执行,串行调度策略1,串行调度
策略2,交错执行,不可串行化的调度,可串行化的调度。
    (a,b) 串行调度策略,正确的调度:
                
                
    二、如何保证并发操作的调度是正确的?为了保证并行操作的正确性,DBMS的并行控制机制必须提供一
定的手段来保证调度是可串行化的。从理论上讲,在某一事务执行时禁止其他事务执行的调度策略一定是可
串行化的调度,这也是最简单的调度策略,但这种方法实际上是不可行的,因为它使用户不能充分共享数据库资源。
     封锁方法,两段锁 (Two-Phase Locking, 简称2PL) 协议:时标方法;乐观方法。

吉林大学网络教育学院 版权所有