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

文档序号:9667186阅读:来源:国知局
判断所述第二死锁对应的至 少两个第二操作命令是否与所述至少两个第一操作命令相同;
[0053] 确定子单元,用于如果所述第二死锁的第二死锁发生时间与所述第一死锁发生时 间相等且所述第二死锁对应的至少两个第二操作命令与所述至少两个第一操作命令相同, 则确定所述死锁信息表中已存储所述第一死锁的死锁信息,否则,确定所述死锁信息表中 未存储所述第一死锁的死锁信息。
[0054] 结合第二方面,在上述第二方面的第五种可能的实现方式中,所述第一获取模块 包括:
[0055] 第四确定单元,用于确定所述至少两个第一操作命令所属的线程标识;
[0056] 第二获取单元,用于从所述多个数据库事务的事务信息中,获取所述多个数据库 事务对应的线程标识,以及从所述多个数据库事务的事务信息中,获取所述多个数据库事 务的操作时间段;
[0057] 第三获取单元,用于基于所述第一死锁发生时间、所述至少两个第一操作命令所 属的线程标识、所述多个数据库事务对应的线程标识和所述多个数据库事务的操作时间 段,从所述多个数据库事务的事务信息中,获取产生所述第一死锁的数据库事务的事务信 息。
[0058] 结合第二方面,在上述第二方面的第六种可能的实现方式中,所述装置还包括:
[0059] 发送模块,用于将所述指定时间段内发生的所有死锁的死锁信息和产生所有死锁 的数据库事务的事务信息发送给指定终端。
[0060] 结合第二方面,在上述第二方面的第七种可能的实现方式中,所述装置还包括:
[0061] 第二获取模块,用于当接收到死锁信息查看指令时,基于所述死锁信息查看指令 携带的查看时间段,获取所述查看时间段内发生死锁的死锁信息和产生所述死锁的数据库 事务的事务息;
[0062] 显示模块,用于显示获取的死锁信息和数据库事务的事务信息。
[0063] 根据本公开实施例的第三方面,提供一种数据库死锁检测装置,所述装置包括:
[0064] 处理器;
[0065] 用于存储处理器可执行指令的存储器;
[0066] 其中,所述处理器被配置为:
[0067] 确定指定时间段内对数据库进行操作的多个数据库事务的事务信息;
[0068] 在所述指定时间段内,每隔指定时长,查询第一死锁发生时间和至少两个第一操 作命令,第一死锁为离当前时间最近一次发生的死锁,所述至少两个第一操作命令为产生 所述第一死锁的至少两个数据库事务的操作命令;
[0069] 基于所述第一死锁发生时间和所述至少两个第一操作命令,判断所述第一死锁是 否已进行死锁检测;
[0070] 如果所述第一死锁未进行死锁检测,则基于所述第一死锁发生时间和所述至少两 个第一操作命令,从所述多个数据库事务的事务信息中,获取产生所述第一死锁的数据库 事务的事务信息,以完成所述数据库的死锁检测。
[0071] 本公开的实施例提供的技术方案可以包括以下有益效果:在本公开实施例中,通 过实时记录数据库事务的事务信息,并在检测到发生第一死锁的死锁信息时,根据该第一 死锁的死锁信息和产生该第一死锁的至少两个第一操作命令,查找到产生该第一死锁的数 据库事务的事务信息,从而有效提升了发现应用程序问题和解决应用程序问题的效率,降 低数据库死锁的出现频率,大大提高了整个应用程序的健壮性或者鲁棒性。
[0072] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不 能限制本公开。
【附图说明】
[0073] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施 例,并与说明书一起用于解释本发明的原理。
[0074] 图1是根据一示例性实施例示出的一种数据库死锁检测方法的流程图。
[0075] 图2是根据一示例性实施例示出的另一种数据库死锁检测方法的流程图。
[0076] 图3是根据一示例性实施例示出的第一种数据库死锁检测装置的框图。
[0077] 图4是根据一示例性实施例示出的一种第一确定模块的框图。
[0078]图5是根据一示例性实施例示出的一种判断模块的框图。
[0079] 图6是根据一示例性实施例示出的第二种数据库死锁检测装置的框图。
[0080] 图7是根据一示例性实施例示出的一种判断单元的框图。
[0081] 图8是根据一示例性实施例示出的一种第一获取模块的框图。
[0082] 图9是根据一示例性实施例示出的第三种数据库死锁检测装置的框图。
[0083] 图10是根据一示例性实施例示出的第四种数据库死锁检测装置的框图。
[0084] 图11是根据一示例性实施例示出的第五种数据库死锁检测装置的框图。
【具体实施方式】
[0085] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及 附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例 中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附 权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0086] 在对本公开实施例进行详细地解释说明之前,先对本公开实施例涉及到的基本概 念进行介绍。本公开实施例中涉及到的基本概念包括会话、进程、线程和数据库事务四者之 间的关系、数据库事务、数据库锁和数据库死锁。其中,一个会话对应一个进程,一个进程中 可以包含多个数据库事务,且一个进程包括的多个数据库事务可以串行地执行,一个数据 库事务可以由一个线程完成也可以由多个线程完成。数据库事务是指作为单个逻辑工作单 元执行的一系列操作,该一系列操作要么完全地执行,要么完全地不执行。数据库锁是指如 果某个数据库事务需要"修改"一条数据,首先需要在该条数据上加锁,以保证在同一时间 只有一个数据库事务能进行修改操作。数据库死锁是指当多个进程访问同一数据时,其中 每个进程拥有的数据库锁都是其他进程所需的,由此造成每个进程都无法继续下去。
[0087] 图1是根据一示例性实施例示出的一种数据库死锁检测方法的流程图,如图1所 示,该方法用于网络设备中,包括以下步骤。
[0088] 在步骤101中,确定指定时间段内对数据库进行操作的多个数据库事务的事务信 息。
[0089] 在步骤102中,在该指定时间段内,每隔指定时长,查询第一死锁发生时间和至少 两个第一操作命令,第一死锁为离当前时间最近一次发生的死锁,该至少两个第一操作命 令为产生该第一死锁的至少两个数据库事务的操作命令。
[0090] 在步骤103中,基于该第一死锁发生时间和该至少两个第一操作命令,判断该第 一死锁是否已进行死锁检测。
[0091] 在步骤104中,如果该第一死锁未进行死锁检测,则基于该第一死锁发生时间和 该至少两个第一操作命令,从该多个数据库事务的事务信息中,获取产生该第一死锁的数 据库事务的事务信息,以完成该数据库的死锁检测。
[0092] 在本公开实施例中,通过实时记录数据库事务的事务信息,并在检测到发生第一 死锁的死锁信息时,根据该第一死锁的死锁信息和产生该第一死锁的至少两个第一操作命 令,查找到产生该第一死锁的数据库事务的事务信息,从而有效提升了发现应用程序问题 和解决应用程序问题的效率,降低数据库死锁的出现频率,大大提高了整个应用程序的健 壮性或者鲁棒性。
[0093] 在本公开的另一实施例中,确定指定时间段内对数据库进行操作的多个数据库事 务的事务信息,包括:
[0094] 确定指定时间段内对数据库进行操作的多个数据库事务的操作命令,得到多个操 作命令;
[0095] 获取该多个操作命令所属的线程标识,以及获取该多个数据库事务对应的线程标 识;
[0096] 基于该多个操作命令所属的线程标识和该多个数据库事务对应的线程标识,将该 多个操作命令进行划分,得到多个操作命令集合,每个操作命令集合包括的操作命令属于 同一数据库事务;
[0097] 基于该多个操作命令集合,确定该多个数据库事务的事务信息。
[0098] 在本公开的另一实施例中,基于该第一死锁发生时间和该至少两个第一操作命 令,判断该第一死锁是否已进行死锁检测,包括:
[0099] 基于该第一死锁发生时间和该至少两个第一操作命令,判断存储的死锁信息表中 是否已存储该第一死锁的死锁信息;
[0100] 如果该死锁信息表中未存储该第一死锁的死锁信息,则确定该第一死锁未进行死 锁检测,否则,确定该第一死锁已进行死锁检测。
[0101] 在本公开的另一实施例中,基于该第一死锁发生时间和该至少两个第一操作命 令,判断该第一死锁是否已进行死锁检测之后,还包括:
[0102] 如果该第一死锁未进行死锁检测,则基于该第一死锁发生时间和该至少两个第一 操作命令,确定该第一死锁的死锁信息;
[0103] 将该第一死锁的死锁信息存储在死锁信息表中。
[0104] 在本公开的另一实施例中,基于该第一死锁发生时间和该至少两个第一操作命 令,判断存储的死锁信息表中是否已存储该第一死锁的死锁信息,包括:
[0105] 获取该死锁信息表中存储的多个第二死锁的第二死锁发生时间和该多个第二死 锁分别对应的至少两个第二操作命令,该多个第二死锁为该指定时间段内且位于该第一死 锁之前发生的死锁,该至少两个第二操作命令为产生第二死锁的至少两个数据库事务的操 作命令;
[0106] 对于该多个第二死锁中的每个第二死锁,判断该第二死锁的第二死锁发生时间是 否与该第一死锁发生时间相等,以及判断该第二死锁对应的至少两个第二操作命令是否与 该至少两个第一操作命令相同;
[0107] 如果该第二死锁的第二死锁发生时间与该第一死锁发生时间相等且该第二死锁 对应的至少两个第二操作命令与该至少两个第一操作命令相同,则确定该死锁信息表中已 存储该第一死锁的死锁信息,否则,确定该死锁信息表中未存储该第一死锁的死锁信息。
[0108] 在本公开的另
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1