1 .一种死锁处理方法,包括:
获取数据库运行过程中的锁等待图;
对所述锁等待图进行强连通分量检测,获取所述锁等待图中存在的强连通分量;
根据所述锁等待图中的强连通分量确定待进行的强连通解除操作的信息,根据所述强
连通解除操作的信息解除所述强连通分量对应的死锁。
2.根据权利要求1所述的方法,其中,所述根据所述锁等待图中的强连通分量确定待进
行的强连通解除操作的信息,包括:
根据所述锁等待图中的强连通分量确定待去除的所述强连通分量中的节点的信息,根
据所述节点的信息确定对所述锁等待图进行强连通解除操作的信息。
3 .根据权利要求2所述的方法,其中,所述强连通分量包括至少一个;
在所述根据所述锁等待图中的强连通分量确定待进行的强连通解除操作的信息之后,
所述方法还包括:
针对每个强连通分量,从构成当前强连通分量的节点中去除待去除的节点,以进行当
前强连通分量的强连通解除操作。
4 .根据权利要求3所述的方法,其中,所述针对每个强连通分量,从构成当前强连通分
量的节点中去除待去除的节点,以进行当前强连通分量的强连通解除操作,包括:
针对每个强连通分量,从构成当前强连通分量的节点中去除一个待去除的节点;
判断去除了节点后的当前强连通分量中是否还存在子强连通分量;
若不存在,则确定完成当前强连通分量的强连通解除操作;
若存在,则对子强连通分量继续进行节点去除 ,直至当前强连通分量中不存在子强连
通分量。
5 .根据权利要求4所述的方法,其中,所述锁等待图中的节点与数据库事务会话对应,
所述数据库事务会话具有会话标识值;
所述从构成当前强连通分量的节点中去除一个待去除的节点,包括:
确定构成当前强连通分量的节点中 ,对应的数据库事务会话的会话标识值最大的节
点;
将会话标识值最大的节点从当前强连通分量中去除。
6 .根据权利要求2-5任一项所述的方法,其中,所述根据所述强连通解除操作的信息解
除所述强连通分量对应的死锁,包括:
根据待去除的所述节点的信息,终止待去除的所述节点对应的数据库事务会话,以解
除所述强连通分量对应的死锁。
7 .根据权利要求1-5任一项所述的方法,其中,所述根据所述锁等待图中的强连通分量
确定待进行的强连通解除操作的信息,根据所述强连通解除操作的信息解除所述强连通分
量对应的死锁,包括:
对检测获得的至少一个强连通分量的信息和各所述强连通分量对应的节点的信息进
行记录;
从记录的各所述强连通分量对应的节点中,确定各所述强连通分量待去除的节点;
去除所述锁等待图中的所述待去除的节点,并终止所述待去除的节点对应的数据库事
务会话,以解除所述强连通分量对应的死锁。
权 利 要 求 书
1/2 页
2
评论