死锁风险检测方法、装置、计算机设备及可读存储介质制造方法及图纸

技术编号:37855505 阅读:8 留言:0更新日期:2023-06-14 22:48
本申请公开了一种死锁风险检测方法、装置、计算机设备及可读存储介质,方法包括:获取预设时间段内待操作数据库对应的多个开启事务;获取每个开启事务中的多个脚本的多个脚本信息,其中,多个脚本信息包括多个脚本对应的多个脚本类型、多个数据资源和多个多个脚本执行时间;根据多个脚本信息,判断多个开启事务之间是否存在死锁风险。通过上述方法,一方面,使得在数据库操作之前就能够将可能存在的死锁风险项暴露出来,提高数据库系统的稳定性;另一方面,有针对性地对多个开启事务进行检测,判断是否存在的死锁风险,轻量简单,减少数据量系统的死锁检测量,有效提高死锁风险检测效率。效率。效率。

【技术实现步骤摘要】
死锁风险检测方法、装置、计算机设备及可读存储介质


[0001]本申请涉及数据库
,特别是涉及一种死锁风险检测方法、装置、计算机设备及可读存储介质。

技术介绍

[0002]在计算机程序中,为了保证数据一致性,当一个数据库事务在修改某一数据时,数据库管理系统将对该数据进行锁定,使其他的数据库事务不能修改该数据。而当两个数据库事务中任一数据库事务当前所需的数据为另一个数据库事务当前修改的数据时,这两个数据库事务就形成了相互等待的现象,造成数据库死锁。相关技术中,为了避免发生死锁的情况,通常采用制定规范来对待执行的代码进行检查的方式提前检测死锁风险,发现问题代码即时改造。
[0003]在实现本申请的过程中,申请人发现相关技术至少存在以下问题:
[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]可选地,若存在,确定至少两个目标事务之间存在死锁风险之后,还包括:
[0037]获取每个目标事务的事务标识;
[0038]根据事务标识、多个目标脚本对应的多个目标脚本类型、多个目标数据资源和多个目标脚本执行时间,生成死锁风险提示信息;
[0039]发送死锁风险提示信息。
[0040]依据本申请第二方面,提供了一种死锁风险检测装置,该装置包括:
[0041]第一获取模块,用于获取预设时间段内待操作数据库对应的多个开启事务;
[0042]第二获取模块,用于获取每个开启事务中多个脚本的多个脚本信息,其中,多个脚本信息包括多个脚本对应的多个脚本类型、多个数据资源和多个脚本执行时间;
[0043]判断模块,用于根据多个脚本信息,判断多个开启事务之间是否存在死锁风险。
[0044]可选地,第一获取模块,具体用于:
[0045]响应于死锁风险检测请求,获取待操作数据库的数据库连接;
[0046]获取数据库连接在预设时间段内的多个事务的多个事务状态;
[0047]根据多个事务状态,确定数据库连接中的多个开启事务。
[0048]可选地,判断模块,具体用于:
[0049]判断多个开启事务的多个脚本类型中是否包括更新语句;
[0050]在多个脚本类型中未包括更新语句的情况下,确定多个开启事务之间不存在死锁风险;
[0051]在多个脚本类型中包括更新语句的情况下,在多个开启事务中,确定更新语句对应的至少一个目标事务;
[0052]在至少一个目标事务的数量为一个的情况下,确定多个开启事务之间不存在死锁风险;
[0053]在至少一个目标事务的数量为多个的情况下,获取多个目标事务中更新语句对应的多个目标脚本的多个目标脚本信息;
[0054]根据多个目标脚本信息,判断多个目标事务之间是否存在死锁风险。
[0055]可选地,该装置还包括:
[0056]第三获取模块,用于获取每个目标事务对应的目标脚本的数量。
[0057]第一确定模块,用于在多个目标事务中,确定是否存在目标脚本的数量为单个的目标事务;
[0058]第二确定模块,用于若存在,确定该目标事务与多个其他目标事务之间不存在死锁风险。
[0059]可选地,该装置还包括:
[0060]第四本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种死锁风险检测方法,其特征在于,包括:获取预设时间段内待操作数据库对应的多个开启事务;获取每个开启事务中多个脚本的多个脚本信息,其中,所述多个脚本信息包括多个脚本对应的多个脚本类型、多个数据资源和多个脚本执行时间;根据所述多个脚本信息,判断所述多个开启事务之间是否存在死锁风险。2.根据权利要求1所述的方法,其特征在于,所述获取预设时间段内待操作数据库对应的多个开启事务的步骤,具体包括:响应于死锁风险检测请求,获取所述待操作数据库的数据库连接;获取所述数据库连接在所述预设时间段内的多个事务的多个事务状态;根据所述多个事务状态,确定所述数据库连接中的所述多个开启事务。3.根据权利要求1所述的方法,其特征在于,所述根据所述多个脚本信息,判断所述多个开启事务之间是否存在死锁风险的步骤,具体包括:判断所述多个开启事务的多个脚本类型中是否包括更新语句;在所述多个脚本类型中未包括更新语句的情况下,确定所述多个开启事务之间不存在死锁风险;在所述多个脚本类型中包括更新语句的情况下,在所述多个开启事务中,确定更新语句对应的至少一个目标事务;在所述至少一个目标事务的数量为一个的情况下,确定所述多个开启事务之间不存在死锁风险;在所述至少一个目标事务的数量为多个的情况下,获取多个目标事务中更新语句对应的多个目标脚本的多个目标脚本信息;根据所述多个目标脚本信息,判断所述多个目标事务之间是否存在死锁风险。4.根据权利要求3所述的方法,其特征在于,所述根据所述多个目标脚本信息,判断所述多个目标事务之间是否存在死锁风险的步骤,具体包括:获取每个目标事务对应的目标脚本的数量;在所述多个目标事务中,确定是否存在目标脚本的数量为单个的目标事务;若存在,确定该目标事务与多个其他目标事务之间不存在死锁风险;若不存在,获取所述多个目标事务的多个目标脚本的多个数据资源;根据所述多个数据资源,判断所述多个目标事务之间是否存在死锁风险。5.根据权利要求4所述的方法,其特征在于,所述根据所述多个数据资源,判断...

【专利技术属性】
技术研发人员:徐双
申请(专利权)人:平安付科技服务有限公司
类型:发明
国别省市:

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

1