数据库复习8――并发(二)

2015-07-24 06:34:54 · 作者: · 浏览: 1
.5 死锁处理

DBMS的事务并发管理器处理死锁有两种机制:死锁预防死锁检测

(1)死锁预防

死锁预防顾名思义就是保证数据库绝对不会进入死锁状态,一些策略如下:

要求所有事务在开始执行操作前获取所有需要的锁,叫做预先申请 事务对数据的上锁顺序取决于[偏序],类似于死锁检测中的等待图 设置事务等待锁的时间上限,超时则会滚事务,称之为超时策略

(2)死锁检测

死锁检测是去检测等待图(Wait-For Graph,一种描述事务锁依赖的有向图)是否成环的机制,当检测到死锁时选取部分锁会滚或者直接所有事务会滚

等待图中有:

顶点V代表所有活跃的事务 有向边E=Ti->Tj表示Ti正在等待Tj释放某个元组t上的锁,并有Tj释放锁后Ti申请到时,删除边E

可以用有向图成环检测的算法来检测是否存在死锁