1、等待-死亡机制
��这种机制基于非抢占技术。当事务Ti申请的数据项当前被Tj持有,仅当TS(Ti)<TS(Tj)时,允许Ti等待。否则,Ti回滚。如图11-7-2所示:
图11-7-2:等待-死亡机制示意图
例如,若事务Ti、Tj、Tk的时间戳分别为5、10、15。如果Ti申请的数据项当前被Tj持有,则Ti将等待;如果Tk申请的数据项当前被Tj持有,则Tk将回滚。

2、受伤-等待机制
��这种机制基于抢占技术,是wait-die的相反机制。当事务Ti申请的数据项当前被Tj持有,仅当TS(Ti)>TS(Tj)时,允许Ti等待。否则,Ti抢占Tj持有的数据项,而Tj回滚。如图11-7-3所示:
图11-7-3:受伤-等待机制示意图
和上面的例子相同。如果Ti申请的数据项当前被Tj持有,则Ti将从Tj抢占数据项,Tj回滚;如果Tk申请的数据项当前被Tj持有,则Tk将等待。

3、等待-死亡与受伤-等待的区别
��⑴�等待区别:在等待-死亡机制中,较老的事务必须等待较新的事务释放它所持有的数据项。因此,事务变得越老,它越要等待。与此相反,在受伤-等待机制中,较老的事务从不等待较新的事务;
��⑵�回滚区别:在等待-死亡机制中,如果事务Tk由于申请的数据项当前被Tj持有而死亡并回滚,则当事务Tk重启时它可能重新发出相同的申请序列。如果该数据项仍被Tj持有,则Tk将再度死亡。因此,Tk在获得所需数据项之前可能死亡多次!而在受伤-等待机制中,如果Ti申请的数据项当前被Tj持有而引起Tj受伤并回滚,则当Tj重启并发出相同的申请序列时,Tj会等待而不是回滚!为什么?请大家自己思考。