数据库死锁检测方法及装置的制造方法

文档序号:9667186阅读:360来源:国知局
数据库死锁检测方法及装置的制造方法
【技术领域】
[0001] 本公开涉及计算机领域,尤其涉及一种数据库死锁检测方法及装置。
【背景技术】
[0002] 在计算机程序中,为了保证数据一致性,当一个数据库事务在修改某一数据时,数 据库管理系统将对该数据进行锁定,使其他的数据库事务不能修改该数据。而当两个数据 库事务中任意一个数据库事务当前所需的数据为另一个数据库事务当前修改的数据时,该 两个数据库事务就形成了相互等待的现象,造成数据库死锁。比如,数据库事务A需要数据 库事务B当前修改的数据,同时数据库事务B也需要数据库事务A当前修改的数据,从而造 成数据库死锁的发生。当发生数据库死锁时,通常会导致整个计算机程序的服务瘫痪。因 此,对数据库死锁进行检测分析十分重要。
[0003]目前,在相关技术中,当出现数据库死锁的情况时,通常可以通过指定命令查看到 最后一次发生死锁时的信息,比如,指定命令可以为SHOWENGINGINNODBSTATUS命令。

【发明内容】

[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] 第二确定单元,用于基于所述多个操作命令集合,确定所述多个数据库事务的事 务ig息。
[0044] 结合第二方面,在上述第二方面的第二种可能的实现方式中,所述判断模块包 括:
[0045] 判断单元,用于基于所述第一死锁发生时间和所述至少两个第一操作命令,判断 存储的死锁信息表中是否已存储所述第一死锁的死锁信息;
[0046] 第三确定单元,用于如果所述死锁信息表中未存储所述第一死锁的死锁信息,则 确定所述第一死锁未进行死锁检测,否则,确定所述第一死锁已进行死锁检测。
[0047] 结合第二方面或者第二方面的第二种可能的实现方式,在上述第二方面的第三种 可能的实现方式中,所述装置还包括:
[0048] 第二确定模块,用于如果所述第一死锁未进行死锁检测,则基于所述第一死锁发 生时间和所述至少两个第一操作命令,确定所述第一死锁的死锁信息;
[0049] 存储模块,用于将所述第一死锁的死锁信息存储在死锁信息表中。
[0050] 结合第二方面的第二种可能的实现方式,在上述第二方面的第四种可能的实现方 式中,所述判断单元包括:
[0051] 获取子单元,用于获取所述死锁信息表中存储的多个第二死锁的第二死锁发生时 间和所述多个第二死锁分别对应的至少两个第二操作命令,所述多个第二死锁为所述指定 时间段内且位于所述第一死锁之前发生的死锁,所述至少两个第二操作命令为产生第二死 锁的至少两个数据库事务的操作命令;
[0052] 判断子单元,用于对于所述多个第二死锁中的每个第二死锁,判断所述第二死锁 的第二死锁发生时间是否与所述第一死锁发生时间相等,以及
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1