1、死锁的定义
��前面我们对死锁问题已经有了初步的了解,本小节专门介绍死锁的定义与处理。如果存在一个事务集,该集合中的每个事务都在等待集合中的另外一个事务,我们就说系统处于死锁状态。例如,如图11-7-1所示,在集合{T0,T1,…,Tn}中,若T0在等待被T1锁住的数据项;T1在等待被T2锁住的数据项;…;Tn-1在等待被Tn锁住的数据项;而Tn在等待被T0锁住的数据项,则系统死锁。

图11-7-1:死锁的示意图
2、死锁的解决
��解决死锁问题主要有以下两种策略:
��⑴�死锁预防:预先防止死锁发生,保证系统永不进入死锁状态;
��⑵�死锁检测与恢复:允许系统进入死锁状态,但要周期性地检测系统有无死锁。如果有,则把系统从死锁中恢复过来。两种策略都会引起事务回滚。如果系统进入死锁状态的概率相对较高,则通常采用死锁预防策略;否则使用死锁检测与恢复更有效。