《数据库系统概念》19-并发控制
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 当多个事务在数据库中并发地执行时,数据的一致性可能无法再维持。系统有必要控制各事务之间的相互作用,这是通过被称为并发控制的机制来实现的。最常用的机制是各种封锁协议、时间戳排序机制、有效性检查技术与多版本机制。 一、封锁协议是一组规则,这些规则阐明了事务何时对数据库中的数据项进行加锁和解锁。 两阶段封锁协议仅在一个事务未曾释放任何数据项上的锁时才允许该事务封锁新的数据项。该协议保证可串行性,但不能避免死锁。在没有关于数据项访问方式信息的情况下,两阶段封锁协议对于保证可串行性即使必要的又是充分的。 严格两阶段封锁协议要求事务持有的所有排他锁必须在事务结束时方可释放,其目的是保证结果调度的可恢复性和无级联性;强两阶段封锁协议要求事务持有的所有锁必须在事务结束时方可释放。 基于图的封锁协议对访问数据项的顺序加以限制,从而不需要使用两阶段封锁还能保证可串行性,而且又能够保证不会产生死锁。 许多种封锁协议都不能防止死锁。一种可以防止死锁的方法是使用数据项的一种顺序,并且按与该顺序一致的次序申请加锁;另一种防止死锁的方法是使用抢占与事务回滚。为控制抢占,我们为每个事务赋予一个唯一时间戳。这些时间戳用于决定事务是等待还是回滚。如果一个事务回滚,它在重启时保持原有时间戳。 如果没有预防死锁的机制