首页 理论教育死锁管理在分布式数据库技术中的重要性

死锁管理在分布式数据库技术中的重要性

【摘要】:从而,死锁是分布式数据库管理系统面临的严肃问题。要采取措施,先要分析是否出现死锁,通常称为死锁检测。等待图是帮助监测的一个有用工具。WFG是一个有向图,表示事务间的等待关系。图9.9是例9.7的WFG。WFG中有环出现就意味着有死锁存在。在分布式系统中,WFG的形式复杂得多,因为两个参与死锁的条件可能出现在不同的节点上,我们把它称为全局死锁。图9.9等待图WFG发现死锁后,就要设法打破死锁。

基于封锁的并发控制算法可能导致死锁,因为封锁会导致几个操作相互排外地存取共享资源(数据),互相又等待对方释放封锁,每个事务在没等到期待的封锁前又不会释放自己手里的资源。严格的TO算法也要求事务等待,因此也有死锁问题。从而,死锁是分布式数据库管理系统面临的严肃问题。

【例9.7】 有两个事务Ti和Tj分别拥有对数据项x和y的写封锁(即wli(x)和wlj(y)),假设现在Ti发布一个rli(y)或wli(y)请求。因为此时y被Tj锁着,Ti必须等待Tj释放对y的锁。在这期间,如果Tj请求对x的一个(read或write)锁,死锁就发生了。这是因为它们两个事务分别拥有对方需要的东西,而分别要求对方的东西,按照协议在得不到对方手里的东西前又不能释放自己手里东西的封锁,死锁就此产生。

死锁一旦发生,就不会自己消亡,所以需要采取必要的措施。要采取措施,先要分析是否出现死锁,通常称为死锁检测。

等待图(wait-for graph,WFG)是帮助监测的一个有用工具。WFG是一个有向图,表示事务间的等待关系。如果事务Ti等待Tj释放某个实体封锁,图中就有一条从Ti到Tj的有向弧。图9.9是例9.7的WFG。

使用WFG,找出出现死锁的条件就容易了。WFG中有环出现就意味着有死锁存在。在分布式系统中,WFG的形式复杂得多,因为两个参与死锁的条件可能出现在不同的节点上,我们把它称为全局死锁。分布式系统中,在每个节点上构造本地分布式DBMS的本地等待图(LWFG)是不够的,还必须构造一个全局等待图(GWFG)。GWFG是所有LWFG的组合。(www.chuimin.cn)

图9.9 等待图WFG

发现死锁后,就要设法打破死锁。打破死锁的办法是,把等待图里死锁环中的某个(些)事务取消,从而释放它们所拥有的封锁。如何选择合适的事务,让它(们)退出,从而打破死锁环,有各种算法,有兴趣的读者可参阅相关文献