一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

死锁处理方法、装置、计算机设备和存储介质与流程

2022-11-23 21:44:30 来源:中国专利 TAG:


1.本技术涉及人工智能及智能运维技术领域,特别是涉及一种死锁处理方法、装置、计算机设备、存储介质和计算机程序产品。


背景技术:

2.随着计算机技术的发展,计算机处理器的运算能力越来越强,计算机能够同时并发处理的事务也越来越多,多事务的并发带来了数据库的死锁问题,由此出现了多种死锁处理方法,例如,设定资源优先级或随机强制某个事务释放锁定的资源等。
3.然而,在实际的业务场景中,死锁的产生原因往往比较复杂,目前的死锁处理方法未考虑解决死锁的代价,无法及时、有效的解决问题,从而导致事务长时间处于不可用状态。


技术实现要素:

4.基于此,有必要针对无法及时、有效地解决死锁的技术问题,提供一种死锁处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种死锁处理方法。所述方法包括:
6.在检测到数据库发生死锁的情况下,获取所述数据库的死锁信息;所述死锁信息包括造成死锁的多个事务及所述多个事务之间的等待信息;
7.根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,根据所述第一处理方式处理所述死锁信息;
8.在未从所述死锁场景库中确定出目标死锁场景的情况下,根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,根据所述第二处理方式处理所述死锁信息。
9.在其中一个实施例中,所述死锁信息包括事务等待图,所述事务等待图为表示事务之间等待关系的有向图;
10.所述根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,包括:
11.从所述死锁信息包括的所述事务等待图中识别出死锁环路信息;所述死锁环路信息表示造成死锁的至少两个事务所构成的环路信息,所述死锁环路信息中的每个事务均在等待下一个事务占用的资源;
12.根据所述死锁环路信息,从所述预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式。
13.在其中一个实施例中,所述根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,包括:
14.根据所述死锁信息,得到造成死锁的所述多个事务中的目标事务对应的多个死锁特征信息;所述目标事务表示造成死锁的所述多个事务中的任一个事务;
15.按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找所述死锁场景决策树,得到针对所述目标事务的处理方式,作为所述死锁信息对应的第二处理方式。
16.在其中一个实施例中,所述根据所述死锁信息,得到造成死锁的所述多个事务中的目标事务对应的多个死锁特征信息,包括:
17.根据所述死锁信息,得到所述目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值;所述等待事务数目表示等待使用所述目标事务占用的资源的事务的数量,所述处理程度值表示强制释放所述目标事务占用的资源后对解决死锁问题的帮助程度;
18.将所述目标事务占用的资源对应的等待事务数目、所述已执行时间、所述剩余执行时间、所述占用资源类型和所述处理程度值,确定为所述多个死锁特征信息。
19.在其中一个实施例中,所述处理程度值通过下述方式确定:
20.根据所述死锁信息,获取所述目标事务占用的资源数和预设的经验系数;
21.根据所述事务占用的资源对应的等待事务数目、所述剩余执行时间、所述事务占用的资源数和所述经验系数,得到所述处理程度值。
22.在其中一个实施例中,所述按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找所述死锁场景决策树,得到针对所述目标事务的处理方式,作为所述死锁信息对应的第二处理方式,包括:
23.确定当前死锁特征信息;
24.若所述当前死锁特征信息符合所述当前死锁特征信息对应的判定条件,则基于所述当前死锁特征信息确定所述第二处理方式;
25.若所述当前死锁特征信息不符合所述当前死锁特征信息对应的判定条件,则将重要程度低于所述当前死锁特征信息的下一个死锁特征信息作为新的死锁特征信息,基于所述新的死锁特征信息确定所述第二处理方式。
26.在其中一个实施例中,所述获取所述数据库的死锁信息,包括:
27.获取所述数据库在死锁时间点下,各个事务的执行状态和所述各个事务占用的资源信息;
28.根据所述各个事务的执行状态和所述各个事务占用的资源信息,生成所述数据库在死锁时间点对应的事务等待图;
29.基于所述事务等待图、所述各个事务的执行状态和所述各个事务占用的资源信息,得到所述死锁信息。
30.第二方面,本技术还提供了一种死锁处理装置。所述装置包括:
31.死锁获取模块,用于在检测到数据库发生死锁的情况下,获取所述数据库的死锁信息;所述死锁信息包括造成死锁的多个事务及所述多个事务之间的等待信息;
32.第一处理模块,用于根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,根据所述第一处理方式处理所述死锁信息;
33.第二处理模块,用于在未从所述死锁场景库中确定出目标死锁场景的情况下,根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,根据所述第二处理方式处理所述死锁信息。
34.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
35.在检测到数据库发生死锁的情况下,获取所述数据库的死锁信息;所述死锁信息包括造成死锁的多个事务及所述多个事务之间的等待信息;
36.根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,根据所述第一处理方式处理所述死锁信息;
37.在未从所述死锁场景库中确定出目标死锁场景的情况下,根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,根据所述第二处理方式处理所述死锁信息。
38.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
39.在检测到数据库发生死锁的情况下,获取所述数据库的死锁信息;所述死锁信息包括造成死锁的多个事务及所述多个事务之间的等待信息;
40.根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,根据所述第一处理方式处理所述死锁信息;
41.在未从所述死锁场景库中确定出目标死锁场景的情况下,根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,根据所述第二处理方式处理所述死锁信息。
42.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
43.在检测到数据库发生死锁的情况下,获取所述数据库的死锁信息;所述死锁信息包括造成死锁的多个事务及所述多个事务之间的等待信息;
44.根据所述死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及所述目标死锁场景对应的第一处理方式,根据所述第一处理方式处理所述死锁信息;
45.在未从所述死锁场景库中确定出目标死锁场景的情况下,根据所述死锁信息,查询预先构建的死锁场景决策树,得到所述死锁信息对应的第二处理方式,根据所述第二处理方式处理所述死锁信息。
46.上述死锁处理方法、装置、计算机设备、存储介质和计算机程序产品,通过数据库中发生死锁的死锁信息,在预设的场景库中匹配最合适的死锁处理方式,若场景库中匹配不到,则根据死锁信息中死锁的特征信息从死锁场景决策树中匹配处理代价小的处理方式,完成对死锁的处理,达到了发生死锁时能够及时、有效,并且以更小的代价解决死锁的效果,避免事务和资源长期处于不可用状态。
附图说明
47.图1为一个实施例中死锁处理方法的流程示意图;
48.图2为另一个实施例中死锁处理方法的流程示意图;
49.图3为一个实施例中系统执行本技术的死锁处理方法的流程示意图;
50.图4为一个实施例中事务等待图的示例图;
51.图5为一个实施例中死锁场景决策树的示例图;
52.图6为一个实施例中死锁处理装置的结构框图;
53.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
54.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
55.在一个实施例中,如图1所示,提供了一种死锁处理方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
56.步骤101,在检测到数据库发生死锁的情况下,获取数据库的死锁信息;死锁信息包括造成死锁的多个事务及多个事务之间的等待信息。
57.其中,多个事务之间的等待信息表示事务等待其他事务占有的资源的信息。
58.需要说明的是,事务的执行需要获取到对应的资源,若对应的资源已被其他事务获取并占用,则事务需要等待对应的资源被释放之后再获取并占用。
59.具体地,通过其他系统或方法检测到数据库发生了死锁后,获取到数据库中死锁的死锁标识,根据死锁标识获取到死锁信息(可以根据死锁信息完整复现对应的死锁场景)。示例性地,获取到数据库中死锁的死锁标识,根据死锁标识找到造成死锁的事务的事务标识,获取到事务的执行状态(即事务的执行时间、事务占用的资源和事务等待的资源等),同时获取到数据库中的数据信息(即资源信息,包括资源标识、被占用的状态和占用的事务标识等)。由事务的标识、事务执行状态和数据信息等组成死锁信息。
60.步骤102,根据死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式,根据第一处理方式处理死锁信息。
61.其中,死锁场景库中的处理方式可以是用户根据历史死锁场景,统计得到的最佳处理方式。
62.具体地,根据死锁信息中表达对应死锁的特征信息,从死锁场景库中遍历查找,匹配到目标死锁场景,根据目标死锁场景和处理方式之间的映射关系,找到对应的第一处理方式。基于得到的第一处理方式,处理当前数据库中的死锁,解决死锁问题。示例性地,死锁信息可以由图像信息表达,图像信息可以是根据死锁信息生成的事务等待图,通过图像识别技术,从死锁场景库中匹配到符合图像信息特征的目标死锁场景。
63.步骤103,在未从死锁场景库中确定出目标死锁场景的情况下,根据死锁信息,查询预先构建的死锁场景决策树,得到死锁信息对应的第二处理方式,根据第二处理方式处理死锁信息。
64.其中,死锁场景决策树可以是用户根据历史死锁场景训练得到的决策步骤,也可以是用户直接设定的决策步骤。
65.具体地,若死锁场景库中未能查询到目标死锁场景和对应的第一处理方式,则根据死锁信息中的特征信息,每个特征信息按照重要程度从高到低的顺序,从决策树中匹配对应的第二处理方式,基于得到的第二处理方式,处理当前数据库中的死锁,解决死锁问题。示例性地,死锁信息中用于匹配决策树第二处理方式的特征信息可以是事务已执行的
时间的事务占用资源的类型等,由重要程度顺序匹配对应的第二处理方式,当前特征信息系匹配不到,则由下一个特征信息继续匹配,直到得到第二处理方式。
66.上述死锁处理方法中,通过数据库中发生死锁的死锁信息,在预设的场景库中匹配最合适的死锁处理方式,若场景库中匹配不到,则根据死锁信息中死锁的特征信息,按照重要程度从高到低的顺序从决策树中匹配处理代价小的处理方式,完成对死锁的处理。达到了发生死锁时能够及时、有效,并且以更小的代价解决死锁,避免事务和资源长期处于不可用状态。
67.在其中一个实施例中,上述步骤101获取数据库的死锁信息,具体还可以通过以下步骤实现:
68.步骤一,获取数据库在死锁时间点下,各个事务的执行状态和各个事务占用的资源信息;
69.步骤二,根据各个事务的执行状态和各个事务占用的资源信息,生成数据库在死锁时间点对应的事务等待图;
70.步骤三,基于事务等待图、各个事务的执行状态和各个事务占用的资源信息,得到死锁信息。
71.其中,事务等待图为表示事务之间等待关系的有向图,能够表达出事务已占用的资源、等待的资源和资源的状态信息等内容。进一步地,若事务等待图中事务之间等待关系的有向图构成一个闭环则表示一个死锁场景的死锁环路。
72.作为一个示例,服务器检测到数据库发生的死锁,将当前的死锁时间点的信息数据保存下来,信息数据包括各个事务的执行状态(包括事务已执行时间和剩余执行时间等)和各个事务占用的资源信息(包括事务已占用的资源信息和事务等待的资源信息等,资源信息包括资源标识和资源类型等),根据信息数据可以复现当前的死锁场景。根据信息数据,生成对应的事务等待图,即将各个事务基于资源构建的关系由事务等待图表示出来。将事务等待图、各个事务的执行状态和各个事务占用的资源信息,组成当前死锁的死锁信息。
73.本实施例中,通过保存当前发生死锁的时间点下事务和资源的状态信息,能够得到对应事务等待图组成死锁信息,后续可以根据死锁信息对死锁场景进行匹配得到处理方式,从而可以及时、有效地处理死锁问题。
74.在其中一个实施例中,死锁信息包括事务等待图,事务等待图为表示事务之间等待关系的有向图;上述步骤102根据死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式,还可以通过以下步骤实现:
75.步骤一,从死锁信息包括的事务等待图中识别出死锁环路信息;死锁环路信息表示造成死锁的至少两个事务所构成的环路信息,死锁环路信息中的每个事务均在等待下一个事务占用的资源;
76.步骤二,根据死锁环路信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式。
77.其中,死锁环路是造成死锁的事务之间等待关系在事务等待图中构成的有向环路。
78.作为一个示例,服务器从死锁信息中的事务等待图,识别出当前死锁的死锁环路,将死锁环路以图片信息的形式,基于图像识别技术提取死锁环路的特征信息,从预先建立
的死锁场景库中匹配符合特征信息的目标死锁场景,根据目标场景信息与第一处理方式之间的映射关系,得到对应的第一处理方式。
79.本实施例中,通过事务等待图中的死锁环路信息,从死锁场景库中以图像识别技术,查询到匹配的死锁场景和对应的第二处理方式。实现及时、高效解决死锁问题的目的。
80.在其中一个实施例中,上述步骤103根据死锁信息,查询预先构建的死锁场景决策树,得到死锁信息对应的第二处理方式,具体还可以通过以下步骤实现:
81.步骤一,根据死锁信息,得到造成死锁的多个事务中的目标事务对应的多个死锁特征信息;目标事务表示造成死锁的多个事务中的任一个事务;
82.步骤二,按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找死锁场景决策树,得到针对目标事务的处理方式,作为死锁信息对应的第二处理方式。
83.其中,死锁特征信息可以用来完整复现死锁场景。
84.作为一个示例,服务器根据死锁信息,获取到造成死锁的多个事务中任一事务对应的多个死锁特征信息,死锁特征信息包括事务占用的资源类型和事务已执行时间等;根据各个死锁特征信息的重要程度从高到低的顺序,基于场景决策树顺序匹配对应的处理方式,若当前死锁特征信息匹配不到,则由下一个死锁特征信息继续匹配,直到匹配到对应的处理方式为止。将得到的处理方式作为当前死锁信息的第二处理方式。
85.本实施例中,根据造成死锁的任一事务的死锁特征信息,从场景决策树中匹配对应的第二处理方式,可以及时、有效,并且以更小代价地解决死锁问题。
86.在其中一个实施例中,上述步骤根据死锁信息,得到造成死锁的多个事务中的目标事务对应的多个死锁特征信息,具体还可以通过以下步骤实现:
87.步骤一,根据死锁信息,得到目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值;等待事务数目表示等待使用目标事务占用的资源的事务的数量,处理程度值表示强制释放目标事务占用的资源后对解决死锁问题的帮助程度;
88.步骤二,将目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值,确定为多个死锁特征信息。
89.其中,资源类型包括核心资源和非核心资源。根据具体场景确定资源的类型。
90.作为一个示例,服务器具体根据死锁信息中的目标事务占用的资源对应的等待事务数目、已执行时间(根据不同场景确定已执行时间是否过长)、剩余执行时间、占用资源类型(根据不同场景是否是核心资源)和处理程度值,确定为多个死锁特征信息。
91.本实施例中,根据造成死锁的任一事务的不同的死锁特征信息,可以从场景决策树中匹配出解决死锁代价最小的第二处理方式,实现及时、有效,并且以更小代价地解决死锁问题的目的。
92.在其中一个实施例中,上述处理程度值还可以通过下述方式确定:
93.步骤一,根据死锁信息,获取目标事务占用的资源数和预设的经验系数;
94.步骤二,根据事务占用的资源对应的等待事务数目、剩余执行时间、事务占用的资源数和经验系数,得到处理程度值。
95.其中,经验系数根据不同场景的不同事务具体确定,由用户自己预设。
96.作为一个示例,服务器可以通过公式计算得到处理程度值,其中,d(r)表示处理程度值,r表示目标事务占用的全部资源,n为资源r的等待事务数目,avg(t)-t为事务的剩余执行时间,t为所有事务从开始到结束的执行时间,t为目标事务剩余执行时间,x为r占用的表记录行数,k为经验系数。
97.本实施例中,通过目标事务的死锁特征信息,计算得到处理程度值,可以根据处理程度值从决策树中匹配到处理代价最小的第二处理方式,进而及时、代价小地解决死锁问题。
98.在其中一个实施例中,上述步骤按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找死锁场景决策树,得到针对目标事务的处理方式,作为死锁信息对应的第二处理方式,还可以通过以下步骤实现:
99.步骤一,确定当前死锁特征信息;
100.步骤二,若当前死锁特征信息符合当前死锁特征信息对应的判定条件,则基于当前死锁特征信息确定第二处理方式;
101.步骤三,若当前死锁特征信息不符合当前死锁特征信息对应的判定条件,则将重要程度低于当前死锁特征信息的下一个死锁特征信息作为新的死锁特征信息,基于新的死锁特征信息确定第二处理方式。
102.作为一个示例,服务器获取到目标事务的死锁特征信息后,根据死锁特征信息的重要程度,从高到低挑选死锁特征信息,从死锁决策树中顺序匹配对应的第二处理方式,若当前死锁特征信息匹配不到对应的第二处理方式,则由下一个死锁特征信息继续匹配,直到得到对应的第二处理方式为止。
103.本实施例中,通过死锁特征信息重要程度顺序匹配对应的第二处理方式,进而可以及时并且以更小代价地解决死锁问题。
104.在另一个实施例中,如图2所示,提供了一种死锁处理方法的完整步骤流程图,本实施例中,包括以下步骤:
105.步骤201,在检测到数据库发生死锁的情况下,获取数据库在死锁时间点下,各个事务的执行状态和各个事务占用的资源信息。
106.步骤202,根据各个事务的执行状态和各个事务占用的资源信息,生成数据库在死锁时间点对应的事务等待图;基于事务等待图、各个事务的执行状态和各个事务占用的资源信息,得到死锁信息。
107.步骤203,从死锁信息包括的事务等待图中识别出死锁环路信息。
108.步骤204,根据死锁环路信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式。
109.步骤205,根据死锁信息,得到目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型、占用的资源数和预设的经验系数。
110.步骤206,根据事务占用的资源对应的等待事务数目、剩余执行时间、事务占用的资源数和经验系数,得到处理程度值。
111.步骤207,将目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值等,确定为多个死锁特征信息。
112.步骤208,按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找死锁场景决策树,得到针对目标事务的处理方式,作为死锁信息对应的第二处理方式。
113.作为一个示例,服务器检测到数据库中发生死锁后,获取数据库在死锁时间点下,其中各个事务的执行状态和各个事务占用的资源信息,事务的执行状态包括事务已执行时间和事务占用的资源等,资源信息包括资源的标识和资源的类型等。根据各个事务的执行状态和各个事务占用的资源信息,生成数据库在死锁时间点对应的事务等待图;其中,事务等待图为表示事务之间等待关系的有向图,能够表达出事务已占用的资源、等待的资源和资源的状态信息等内容;进一步地,若事务等待图中事务之间等待关系的有向图构成一个闭环则表示一个死锁场景的死锁环路。基于事务等待图、各个事务的执行状态和各个事务占用的资源信息,得到死锁信息。服务器从事务等待图中识别出死锁环路信息,将死锁环路以图片信息的形式,基于图像识别技术提取特征,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式,根据第一处理方式解决死锁问题。若匹配不到目标死锁场景及对应的第一处理方式,则根据死锁信息,得到目标事务占用的资源对应的等待事务数目(表示等待使用目标事务占用的资源的事务的数量)、已执行时间、剩余执行时间、占用资源类型、占用的资源数和预设的经验系数,其中,经验系数是根据不同场景的不同事务预先设定的。然后,根据事务占用的资源对应的等待事务数目、剩余执行时间、事务占用的资源数和经验系数,得到处理程度值,其中处理程度值表示强制释放目标事务占用的资源后对解决死锁问题的帮助程度。将目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值等,确定为多个死锁特征信息,按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找死锁场景决策树,得到针对目标事务的处理方式,作为死锁信息对应的第二处理方式;具体地,确定当前死锁特征信息,若当前死锁特征信息符合当前死锁特征信息对应的判定条件时,基于当前死锁特征信息确定第二处理方式;若当前死锁特征信息不符合当前死锁特征信息对应的判定条件时,则将重要程度低于当前死锁特征信息的下一个死锁特征信息作为新的死锁特征信息,基于新的死锁特征信息确定第二处理方式。根据得到的第二处理方式解决死锁问题。
114.本实施例中,通过数据库中发生死锁的死锁信息,在预设的场景库中匹配最合适的死锁处理方式,若场景库中匹配不到,则根据死锁信息中死锁的特征信息从决策树中匹配处理代价小的处理方式,完成对死锁的处理。达到了发生死锁时能够及时、有效,并且以更小的代价解决死锁,避免事务和资源长期处于不可用状态。
115.为了便于本领域技术人员理解本技术实施例,以下将以一个提供本技术的死锁处理方法的系统为例,结合附图的具体示例对本技术进行说明,本系统执行本技术的死锁处理方法的步骤流程如图3所示,其中包括:
116.步骤301,在检测到数据库发生死锁的问题。
117.步骤302,记录检测到的死锁场景。
118.步骤303,匹配死锁场景库。
119.步骤304,判断是否匹配到死锁场景。
120.步骤305,若匹配到死锁场景,则按匹配到的死锁场景对应的处理方式解决死锁。
121.步骤306,若匹配不到死锁场景,则匹配死锁场景决策树。
122.步骤307,按照死锁场景决策树顺序执行最终解决死锁。
123.具体实现中,服务器记录死锁场景信息包括在该时间点的进程执行状态和资源信息,并且还包括根据进程执行状态和资源信息生成的如图4所示的事务等待图,其中,事务等待图中事务占用了资源用实线表示,事务在等待资源用虚线表示,资源可以是数据库中表的行数据。进一步地,根据事务等待图,基于图像识别技术提取特征,从死锁场景库中匹配对应的目标死锁场景和第一处理方式;死锁场景库预先通过历史死锁场景统计得到各个死锁场景最佳的处理方式,同时死锁场景以事务等待图的形式存储于死锁场景库中。当在死锁场景库中匹配不到目标死锁场景时,则根据死锁场景信息中的死锁特征信息,从预先设定的死锁决策树中匹配对应的第二处理步骤,经过决策树匹配后必定可以找到一个成功解决死锁的方法。其中,死锁决策树如图5所示。具体地,
124.规则501,判断等待事务数目(即等待使用所述目标事务占用的资源的事务的数量,由事务等待图中可得),等于1则进入左侧子树;大于1则进入右侧子树。
125.规则502,进入左侧子树后判断目标事务占用资源的先后顺序,先占用则重新提交或回滚目标事务以释放资源锁;后占用则需通知系统强制释放先占用资源的事务。
126.规则503,进入右侧子树后判断是否占用核心资源(核心资源的判断根据不同场景有不同的标准),若否,则重新提交或回滚目标事务以释放资源;若是,则进入右侧子树。
127.规则504,进入右侧子树后判断是否长事务(长事务为已执行时间过长的事务,判断标准根据不同的场景会有所不同),若否,则进入左侧子树;若是,则进入右侧子树。
128.规则505,进入左侧子树后提高经验系数k后使用公式计算处理程度值得到d(r),当d(r)大于1,则通知系统强制释放先占用资源的事务;否则重新提交或回滚目标事务以释放资源锁。
129.规则506,进入右侧子树后使用公式计算处理程度值得到d(r),当d(r)大于或等于1,则通知系统强制释放先占用资源的事务;否则重新提交或回滚目标事务以释放资源。
130.其中,处理程度值可以通过公式计算得到,d(r)表示处理程度值,r表示目标事务占用的全部资源,n为资源r的等待事务数目,avg(t)-t为事务的剩余执行时间,t为所有事务从开始到结束的执行时间,t为目标事务剩余执行时间,x为r占用的表记录行数,k为经验系数。
131.本实施例中,通过数据库中发生死锁的死锁信息,在预设的场景库中匹配最合适的死锁处理方式,若场景库中匹配不到,则根据死锁信息中死锁的特征信息,按照重要程度从高到低的顺序从决策树中匹配处理代价小的处理方式,完成对死锁的处理。达到了发生死锁时能够及时、有效,并且以更小的代价解决死锁,避免事务和资源长期处于不可用状态。
132.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
133.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的死锁处理方法的死锁处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个死锁处理装置实施例中的具体限定可以参见上文中对于死锁处理方法的限定,在此不再赘述。
134.在一个实施例中,如图6所示,提供了一种死锁处理装置,包括:死锁获取模块、第一处理模块和第二处理模块,其中:
135.死锁获取模块601,用于在检测到数据库发生死锁的情况下,获取数据库的死锁信息;死锁信息包括造成死锁的多个事务及多个事务之间的等待信息;
136.第一处理模块602,用于根据死锁信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式,根据第一处理方式处理死锁信息;
137.第二处理模块603,用于在未从死锁场景库中确定出目标死锁场景的情况下,根据死锁信息,查询预先构建的死锁场景决策树,得到死锁信息对应的第二处理方式,根据第二处理方式处理死锁信息。
138.在一个实施例中,上述死锁获取模块601,还用于获取数据库在死锁时间点下,各个事务的执行状态和各个事务占用的资源信息;根据各个事务的执行状态和各个事务占用的资源信息,生成数据库在死锁时间点对应的事务等待图;基于事务等待图、各个事务的执行状态和各个事务占用的资源信息,得到死锁信息。
139.在一个实施例中,上述第一处理模块602,还用于从死锁信息包括的事务等待图中识别出死锁环路信息;死锁环路信息表示造成死锁的至少两个事务所构成的环路信息,死锁环路信息中的每个事务均在等待下一个事务占用的资源;根据死锁环路信息,从预先建立的死锁场景库中确定出目标死锁场景及目标死锁场景对应的第一处理方式。
140.在一个实施例中,上述第二处理模块603,还用于根据死锁信息,得到造成死锁的多个事务中的目标事务对应的多个死锁特征信息;目标事务表示造成死锁的多个事务中的任一个事务;按照各个死锁特征信息的重要程度由高到低的顺序,顺序查找死锁场景决策树,得到针对目标事务的处理方式,作为死锁信息对应的第二处理方式。
141.在一个实施例中,上述第二处理模块603,还用于根据死锁信息,得到目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值;等待事务数目表示等待使用目标事务占用的资源的事务的数量,处理程度值表示强制释放目标事务占用的资源后对解决死锁问题的帮助程度;将目标事务占用的资源对应的等待事务数目、已执行时间、剩余执行时间、占用资源类型和处理程度值,确定为多个死锁特征信息。
142.在一个实施例中,上述第二处理模块603,还用于根据死锁信息,获取目标事务占用的资源数和预设的经验系数;根据事务占用的资源对应的等待事务数目、剩余执行时间、事务占用的资源数和经验系数,得到处理程度值。
143.在一个实施例中,上述第二处理模块603,还用于确定当前死锁特征信息;若当前死锁特征信息符合当前死锁特征信息对应的判定条件,则基于当前死锁特征信息确定第二处理方式;若当前死锁特征信息不符合当前死锁特征信息对应的判定条件,则将重要程度低于当前死锁特征信息的下一个死锁特征信息作为新的死锁特征信息,基于新的死锁特征信息确定第二处理方式。
144.上述死锁处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
145.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储死锁场景库和死锁决策树数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种死锁处理方法。
146.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
147.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
148.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
149.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
150.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
151.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
152.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
153.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献