资源描述
高级数据库中的并发控制问题,传统的并发控制方法,基本2PL协议,如果一个事务所有的封锁操作(读写)都在第一个解锁操作之前,那么它就遵守2PL协议事务的执行中Lock的管理分成两个阶段上升阶段(成长阶段):获取Lock阶段(只能获取锁)收缩阶段(衰退阶段):释放Lock阶段(只能解锁)封锁点是指事务获得了它所要求的所有锁,并且还没有开始释放任何锁的时刻如果允许锁的转换,锁的升级必须在成长阶段进行,锁的降级必须在锁的衰退阶段进行。2PL可以保证事务执行的可串行性.,2PL协议(两阶段封锁协议),开始,加锁点,结束,事务执行过程,获得锁,释放锁,两阶段封锁协议,基本2PL协议,基本2PL协议实现的难点锁管理器必须要知道事务的锁点位置级联撤销(cascadingaborts)如果事务在开始释放Lock后又Abort时,将引起级联撤销(cascadingaborts)(其他访问这个数据项的事务也被撤销)保守2PL要求事务在开始执行之前就持有所有它要访问的数据项上的锁(可避免死锁)事务要预先声明它的读集和写集(很难做到,所以很少用)大多数2PL调度器实现的是严格2PL(S2PL)事务在提交或者撤销之前,绝对不释放任何一个写锁事务结束时(提交或者撤销),同时释放所有的锁,开始,结束,事务执行阶段,获得锁,释放锁,严格2PL(StrictTwo-phaseLocking)协议,数据项使用,严格2PL事务T在提交或撤销之前,不能释放任何一个锁(写锁或者读锁),因此它比基本2PL更容易实现,总之,传统的并发控制方法是以等待和放弃为基本手段,目的是实现事务的可串行化运行。,高级数据库系统对并发控制的新需求,适合长事务的并发控制方法,对适合于长事务并发控制方法的研究分为两大流派:,其一是依然以可串行性为判断事务正确运行的标准,同时利用事务的语义,扩展可串行化技术,达到提高系统并发度的目的。如利它锁,其二为突破可串行性标准的限制,充分利用应用层语义和一致性谓词,构造非串行化的,维护数据库状态一致的事务经历。如NT/PV模型,利它锁协议,赠锁操作的规则如下:,(1)事务只能对它们当前上锁的数据项实行赠锁操作;(2)事务不能存取任何已被自己赠锁后的数据项,利它锁方法虽不能完全解决长事务并发控制的问题,但可明显缓解事务的长期等待。,基于NTPV模型的井发控制方法,嵌套事务(NestTransaction),谓词(Predicates)和多版本(MultipleVersion),基于NTPV模型的并发控制方法被认为是一种适于长事务管理,突破可串行化限制,具有前途的并发控制方法!,三个概念,嵌套事务是指在NTPV模型中每个事务都可看作由若干子事务组成,每个子事务又是一个事务.如此形成事务的嵌套树,直至用树的叶结点代表数据库操作,谓词用来表示数据库的一致性限制,多版本允许一数据项同时存在不同时期的多个版本值,这三个概念的存在使NTPV模型适于描述划分长事务,有利于提高系统并发度!,利它锁方法和基于NT/PV的并发控制方法,代表了两种不同的工作成果。前者试图改进传统方法以适应数据库应用新需求;而后者则尝试突破传统方法的局限,充分利用应用层语义,构造基于新的正确性标准的事务经历。,利它锁和NT/PV比较,谢谢,
展开阅读全文