第十一章 并发控制--概念

11.1 封锁协议
11-1

概念

解释

共享锁

如果事务T获得了数据项Q上的共享锁(记为S),则T可读Q但不能写Q。

排他锁

如果事务T获得了数据项Q上的排他锁(记为X),则T既可读Q又可写Q。

锁相容

A与B代表任意类型的锁。假设事务Ti请求对数据项Q加A类型锁,而事务Tj(Ti≠Tj)当前在数据项Q上拥有B类型锁。尽管数据项Q上存在B类型锁,但如果事务Ti可以立即获得数据项Q上的A类型锁,则称A类型锁与B类型锁相容。

锁相容矩阵

锁相容一般用矩阵来表示,称为锁相容矩阵。只有其值为TRUE的两类锁才相容。

死锁

调度中所有的事务因为持有锁和申请锁而导致大家都处于等待状态,无法继续执行。

饿死

调度中一个事务总是不能在某个数据项上加上锁,因此该事务也就永远不能取得进展。

两阶段封锁协议

该协议要求每个事务分两个阶段提出加锁和解锁申请:

�C增长阶段:事务可以获得锁,但不能释放锁;

�C缩减阶段:事务可以释放锁,但不能获得新锁。

对于一个事务而言,刚开始事务处于增长阶段,它可以根据需要获得锁;一旦该事务开始释放锁,它就进入了缩减阶段,就不能再发出加锁请求。

封锁点

对于任何一个事务而言,在调度中该事务获得其最后一个锁的时刻称为事务的封锁点。

严格两阶段封锁协议

除了要求封锁是两阶段之外,还要求事务持有的所有排他锁必须在事务提交之后方可释放。

强两阶段封锁协议

除了要求封锁是两阶段之外,还要求事务在提交之前不得释放任何锁。

11.2 树形协议
11-2

概念

解释

   
11.3 时间戳排序协议
11-3

概念

解释

时间戳

就是一个时间标志,该时间标志是在事务T开始执行前由DBMS的并发控制管理器赋予的,记为TS(T)。

11.4 有效性检查协议
11-4

概念

解释

   
11.5 多粒度机制
表11-5

概念

解释

   
11.6 多版本机制
11-6

概念

解释

   
11.7 死锁处理
11-7

概念

解释

死锁

参见前面的表11-1。

等待-死亡机制

这种机制基于非抢占技术。当事务Ti申请的数据项当前被Tj持有,仅当TS(Ti)<TS(Tj)时,允许Ti等待。否则,Ti回滚。

受伤-等待机制

这种机制基于抢占技术,是等待-死亡机制的相反机制。当事务Ti申请的数据项当前被Tj持有,仅当TS(Ti)>TS(Tj)时,允许Ti等待。否则,Ti抢占Tj持有的数据项,而Tj回滚。

11.8 插入与删除
11-8

概念

解释