《事务调度的可串行性》由会员分享,可在线阅读,更多相关《事务调度的可串行性(13页珍藏版)》请在金锄头文库上搜索。
1、8.5 事务调度的可串行性n引言 DBMS需对多个并发事务进行运行调度 能将所有事务串行起来的调度策略不会破坏 数据库的不一致性,故而总是正确的n概念 可串行化的调度:多个事务的并发执行是正 确的,当且仅当其结果与按某一次序串行地 执行它们时的结果相同 可串行性是并发事务操作是否正确的判别准 则事务调度的可串行性n为了保证并发操作的正确性,DBMS的并发控 制机制必须提供一定的手段来保证调度是可串 行化的n保证事务调度可串行性的策略 事务排它式执行(资源无法充分共享) 两段锁(Two-Phase Locking, 2PL)协议 其它,如时间戳(TimeStamp)方法等nDBMS普通采用封锁方
2、法实现并发操作调度的 可串行性并发事务的不同调度策略T1T2T1T2T1T2Slock BY = B = 2Unlock BXlock AA = Y + 1写回A(=3)Unlock AX = A = 3Unlock A写回B(=4)Unlock BSlock AXlock BB = X + 1a 串行调度 c 不可串行化的调度 (结果与a,b不同,错误调度 )Slock BY = B = 2Unlock BXlock AA = Y + 1写回A(=3)Unlock AX = A = 2Unlock A写回B(=3)Unlock BSlock AXlock BB = X + 1Slock BY
3、 = B = 2Unlock BXlock AA = Y + 1写回A(=3)Unlock ASlock AX = A = 3Unlock A写回 B(=4)Unlock BXlock BB = X + 1等待等待等待T1T2Slock BY = B = 3Unlock BXlock AA = Y + 1写回A(=4)Unlock AX = A = 2Unlock A写回B(=3)Unlock BSlock AXlock BB = X + 1d 可串行化的调度 (结果与a相同,正确调度 )T1: 读B; A=B+1; 写回A; T2: 读A; B=A+1; 写回B; A,B初值均为2b 串行调
4、度8.6 两段锁协议n概念:事务对数据项的加锁和解锁分为两个阶段 完成 获得封锁:在对数据读写之前首先申请并获得封锁; 释放封锁:在释放一个封锁后不再申请和获得任何其 他封锁n如遵守两段锁协议的事务Slock A Slock B Xlock C . Unlock B Unlock A Unlock Cn如不遵守两段锁协议的事务Slock A Unlock A Slock B . Xlock C Unlock C Unlock B两段锁协议的性质n两段锁协议是可串行化调度的充分条件,但不是 必要条件 若并发事务都遵守两段锁协议,则对这些事务的任何 并发调度策略都是可串行化的; 若对并发事务的一个
5、调度是可串行化的,不一定所有 事务都符合两段锁协议n两段锁协议可以保证并发事务的正确性,但可能 发生死锁T1T2T1T2T1T2Slock B读B=2Y=BA = Y+1写回A = 3Unlock BUnlock ASlock A等待等待读A = 3Unlock BUnlock A等待等待Y = A写回B(=4)Slock B读B=2Y=BXlock AA=Y+1Slock A等待等待读A = 3Xlock BB=X+1等待等待X = AUnlock AUnlock B写回A(=3)Unlock ASlock B读B = 2Xlock ASlock A等待Xlock B等待可串行调度 遵守两段
6、锁协议可串行调度 不遵守两段锁协议遵守两段锁协议的事务 发生死锁关于两段锁协议Xlock A等待Xlock BB=Y+1写回 B(=4)Unlock B读A = 2等待8.7 封锁的粒度n封锁的粒度即封锁对象的大小,如 逻辑单元:属性、元组、关系、索引、数据 库等 物理单元:页、块等n封锁粒度对并发控制的影响 封锁粒度越大,并发度越小,系统封锁开销 越小; 封锁粒度越小,并发度越高,系统封锁开销 越大;封锁粒度修改属性?修改关系?如何选择封锁粒度?多粒度封锁n定义:一个系统中同时支持多种封锁粒度供不 同事务选择的方法n术语:结点、上层结点、后裔结点n多粒度树 显式封锁(应事务要求直接加锁) 隐
7、式封锁(由于上层结点加锁而加锁)数据库关系R1关系Rn元组元组元组元组多粒度封锁的问题n操作办法 对某个数据对象加锁,系统要检查该对象上有无显 式封锁与之冲突; 还要检查所有上级结点,看本事务的显式封锁是否 与该对象上的隐式封锁冲突; 还有检查其所有下级结点,看上面的显式封锁是否 与本事务的隐式封锁冲突n问题:检查效率低数据库关系R1关系Rn元组元组元组元组意向锁n概念:如果对以一个结点加意向锁,则说明该 结点的下层结点正在被加锁;对任一结点加锁 时,必须先对它的上层结点加意向锁n三种意向锁 意向共享锁(IS) 意向排它锁(IX) 共享意向排它锁(SIX)=S+IX 对某个表加SIX,表示该事务要读整个表,同时会更新个别元组扩充的封锁相容矩阵n锁的强度的偏序关系T1 T2SXISIXSIX-SYNYNNY XNNNNNY ISYNYYYY IXNNYYNY SIXNNYNNY -YYYYYYXSIXSIXIS具有意向锁的多粒度封锁方法的特点n任意事务要对一个数据对象加锁,必须先对其上层结点加意向锁。申请封锁时按自上而下的次序进行,释放封锁时按自下而上的次序进行n该方法提高了系统的并发度,减少了加锁和解锁的开销习题nP280 13题