一种数据库集群的死锁信息收集方法、存储介质及设备技术

技术编号:37819679 阅读:28 留言:0更新日期:2023-06-09 09:52
本发明专利技术提供了一种数据库集群的死锁信息收集方法、存储介质及设备,该死锁信息收集方法包括:获取锁信息收集信号;控制数据库集群进入锁信息收集状态;获取数据库集群的各个节点对应的锁的相关信息;对相关信息进行加工;将加工结果输入死锁检测模块,进行死锁检测。本发明专利技术实现了跨节点集群的锁信息快速获取,并高效应用到集中式死锁检测模块,提升系统对死锁检测处理,提高开发效率。提高开发效率。提高开发效率。

【技术实现步骤摘要】
一种数据库集群的死锁信息收集方法、存储介质及设备


[0001]本专利技术涉及数据库领域,特别是涉及一种数据库集群的死锁信息收集方法、存储介质及设备。

技术介绍

[0002]在系统中,死锁指的是两个或多个实体相互独占,对方保持等待的资源,导致这几个实体相互阻塞,无法正常运转的情况。死锁的产生会导致系统提供服务的效率降低,过多的死锁甚至会导致系统无法提供服务,造成系统故障。在数据库系统中,由于事务的并发执行,会导致死锁产生概率高于其他其他系统,所以,死锁检测在数据库系统中非常必要。
[0003]目前应用于集中式数据库领域的死锁检测算法和技术比较多,但是集中式死锁检测显然不能满足集群场景,包括但不限于share

disk架构。
[0004]集中式数据库领域的死锁检测算法和技术已经呈现百花齐放的态势,但是集群场景的死锁检测算法相对较少,且存在和应用场景深度绑定的情况。那么如何将集中式数据库领域的成熟技术迁移到集群数据库中,是一个很有价值的问题。解决这一问题的关键就是在集群中各点获取锁信息,然后找到突破口,将数据输入到死锁检测模块,实现在集群中死锁检测和预防。

技术实现思路

[0005]本专利技术的一个目的是要提供一种能够解决上述任一问题的数据库集群的死锁信息收集方法、存储介质及设备。
[0006]本专利技术一个进一步的目的是要提高数据集群的死锁检测效率。
[0007]特别地,本专利技术提供了一种数据库集群的死锁信息收集方法,包括:
[0008]获取锁信息收集信号;
[0009]控制数据库集群进入锁信息收集状态;
[0010]获取数据库集群的各个节点对应的锁的相关信息;
[0011]对相关信息进行加工;
[0012]将加工结果输入死锁检测模块,进行死锁检测。
[0013]进一步地,对相关信息进行加工的步骤包括:
[0014]根据相关信息生成数据库集群的锁全集结构。
[0015]进一步地,相关信息包括锁、锁持有者和锁等待者,根据相关信息生成数据库集群的锁全集结构的步骤包括:
[0016]将锁、与锁对应的锁持有者以及与锁对应的锁等待者对应保存,生成散列表;
[0017]对散列表进行处理以形成数据库集群的锁全集结构。
[0018]进一步地,进行死锁检测的步骤之后还包括:
[0019]获取死锁检测结果;
[0020]判断数据库集群内是否存在死锁;
[0021]若是,则通知死锁对应节点的对应代理进程,命令对应代理进程放弃持有锁,并回滚事务;
[0022]若否,则将锁全集结构发送至锁信息收集信号对应节点的对应代理进程,由对应代理进程进行本地锁信息的重构,防止死锁产生。
[0023]进一步地,控制数据库集群进入锁信息收集状态的步骤包括:
[0024]按照预设顺序向数据库集群的各个节点发送锁信息收集预备信息;
[0025]尝试获取各个节点的应答信息,应答信息包括已收到锁信息收集预备信息并成功执行的信号;
[0026]若获取各个节点的应答信息均获取成功,则确认数据库集群进入锁信息收集状态。
[0027]进一步地,获取各个节点对应的锁的相关信息步骤还包括:
[0028]对各个节点增加锁信息收集守护进程,以使得各个节点互相独立进行锁信息收集。
[0029]进一步地,锁信息收集信号为事务处理进程的等锁时间的超时信号。
[0030]进一步地,锁信息收集信号为事务统计模块统计的事务数量的超限信号。
[0031]根据本专利技术的另一方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种数据库集群的死锁信息收集方法。
[0032]根据本专利技术的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种数据库集群的死锁信息收集方法。
[0033]本专利技术的数据库集群的死锁信息收集方法包括:获取锁信息收集信号;控制所述数据库集群进入锁信息收集状态;获取所述数据库集群的各个节点对应的锁的相关信息;对所述相关信息进行加工;将加工结果输入死锁检测模块,进行死锁检测。本专利技术实现了跨节点集群的锁信息快速获取,并高效应用到集中式死锁检测模块,提升系统对死锁检测处理,提高开发效率。
[0034]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0035]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0036]图1是根据本专利技术一个实施例的数据库集群的死锁信息收集方法的示意性步骤图;
[0037]图2是根据本专利技术另一个实施例的数据库集群的死锁信息收集方法的示意性步骤图;
[0038]图3是是根据本专利技术又一个实施例的数据库集群的死锁信息收集方法的示意性步骤图;
[0039]图4是根据本专利技术一个实施例的机器可读存储介质的示意图;以及
[0040]图5是根据本专利技术一个实施例的计算机设备的示意图。
具体实施方式
[0041]图1是根据本专利技术一个实施例的数据库集群的死锁信息收集方法的示意性步骤图。如图1所示,本实施例的数据库集群的死锁信息收集方法包括:
[0042]步骤S102,获取锁信息收集信号。锁信息收集信号可以为事务处理进程的等锁时间的超时信号,还可以为事务统计模块统计的事务数量的超限信号。在事务处理进程的等锁时间超时,则表示可能发生了死锁,导致该事务处理进程无法继续进行。在事务统计模块统计的事务数量超限的状态下,由于事务过多,也可能导致死锁的发生。
[0043]步骤S104,控制数据库集群进入锁信息收集状态,数据库集群准备采集锁信息收集。
[0044]步骤S106,获取数据库集群的各个节点对应的锁的相关信息。
[0045]步骤S108,对相关信息进行加工。对相关信息进行加工得到数据库集群的锁全集结构。
[0046]步骤S110,将加工结果输入死锁检测模块,进行死锁检测。将数据库集群的锁全集结构作为加工结果输入死锁检测模块。
[0047]本实施例的数据库集群的死锁信息收集方法可以通过远程过程调用(RPC,Remote Procedure Call)通知数据库集群的各节点进入锁锁信息收集预备阶段,通过RPC调用获取锁队列和等待队列等信息,在守护进程内生成整集群锁信息全集结构,实现锁信息的收集和处理,最终复用集中式死锁检测算法。
[0048]当事务处理进程等锁时间超过设定的阈值,或者当事务统计模块检测到处理超过阈值等特定事件发生时,将会通过发送信号通知锁信息收集进程,发起一次全局锁信息收集和死锁本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库集群的死锁信息收集方法,包括:获取锁信息收集信号;控制所述数据库集群进入锁信息收集状态;获取所述数据库集群的各个节点对应的锁的相关信息;对所述相关信息进行加工;将加工结果输入死锁检测模块,进行死锁检测。2.根据权利要求1所述的数据库集群的死锁信息收集方法,其中,对所述相关信息进行加工的步骤包括:根据所述相关信息生成所述数据库集群的锁全集结构。3.根据权利要求2所述的数据库集群的死锁信息收集方法,其中,所述相关信息包括锁、锁持有者和锁等待者,根据所述相关信息生成所述数据库集群的锁全集结构的步骤包括:将所述锁、与所述锁对应的锁持有者以及与所述锁对应的锁等待者对应保存,生成散列表;对所述散列表进行处理以形成所述数据库集群的锁全集结构。4.根据权利要求3所述的数据库集群的死锁信息收集方法,其中,所述进行死锁检测的步骤之后还包括:获取死锁检测结果;判断所述数据库集群内是否存在死锁;若是,则通知所述死锁对应节点的对应代理进程,命令所述对应代理进程放弃持有锁,并回滚事务;若否,则将所述锁全集结构发送至所述锁信息收集信号对应节点的对应代理进程,由所述对应代理进程进行本地锁信息的重构,防止死锁产生。5.根据权利要求1所述的数据库集群的死锁信息收集方法,其中,控制...

【专利技术属性】
技术研发人员:程强
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1