本申请实施例涉及数据库技术。更具体地讲,涉及一种服务器、数据库死锁信息获取方法和存储介质。
背景技术:
1、目前的数据库源码内置死锁检测函数和死锁通知函数,在执行该死锁检测函数的过程中,若检测到该数据库产生死锁,则调用死锁通知函数,通过该死锁通知函数获取数据库的死锁信息。然而,该死锁通知函数只能获取到死锁信息中第一个事务的事务信息和最后一个事务的事务信息,以及第一个事务的等待锁的信息,最后一个事务的等待锁的信息和持有锁的信息。
2、为了获取到数据库更全面的死锁信息,以进行死锁分析,目前主要通过修改数据库内核源码的方式,获得更全面的死锁信息。具体可以通过以下两种方式修改数据库的内核源码:将数据库升级至更高的数据库版本,例如,将数据库由mysql5.6和5.7版本升级至mysql8.0版本;在数据库原有版本的基础上,直接修改数据库的内核源码。
3、然而,通过将数据库升级至更高的数据库版本,以获得更全面的死锁信息的方式,需要重新进行业务的适配、重新进行功能测试等,实施成本较高,存在较大的风险;通过在数据库原有版本的基础上,修改数据库的内核源码,以获得更全面的死锁信息的方式,需要重新对数据库源码进行编译,也会引入新的迁移风险。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种服务器、数据库死锁信息获取方法和存储介质,可以在不修改数据库源码的情况下,获取到数据库更全面的的死锁信息,以提升死锁分析的效率和准确性。
2、第一方面,本申请实施例提供了一种服务器,包括:控制器,被配置为:
3、在执行数据库源码中的死锁检测函数的过程中,若基于该死锁检测函数检测到数据库发生死锁,则通过数据库源码中的探针程序,获取死锁信息,该死锁信息包括死锁对应的多个事务的事务信息和每个事务的锁信息,每个事务的锁信息包括对应事务的等待锁的信息和持有锁的信息;
4、通过探针程序将死锁信息存储至探针程序对应的目标内存中;
5、将目标内存中的死锁信息发送给用户态程序进行存储,以便基于用户态程序存储的死锁信息进行死锁分析。
6、第二方面,本申请实施例提供了一种数据库死锁信息获取方法,该方法包括:
7、在执行数据库源码中的死锁检测函数的过程中,若基于该死锁检测函数检测到数据库发生死锁,则通过数据库源码中的探针程序,获取死锁信息,该死锁信息包括死锁对应的多个事务的事务信息和每个事务的锁信息,每个事务的锁信息包括对应事务的等待锁的信息和持有锁的信息;
8、通过探针程序将死锁信息存储至探针程序对应的目标内存中;
9、将目标内存中的死锁信息发送给用户态程序进行存储,以便基于用户态程序存储的死锁信息进行死锁分析。
10、第三方面,本申请实施例提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第二方面提供的任一种数据库死锁信息获取的步骤。
11、第四方面,本申请实施例提供了一种计算机可读存储介质,包括:计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第二方面所示的数据库死锁信息方法。
12、第五方面,本申请实施例提供了一种计算机程序产品,包括:当计算机程序产品在计算机上运行时,使得计算机实现如第二方面所示的数据库死锁信息方法。
13、本申请实施例提供的技术方案与现有技术相比具有如下优点:本申请实施例中,服务器在执行数据库源码中的死锁检测函数的过程中,若基于该死锁检测函数检测到数据库发生死锁,则通过数据库源码中的探针程序,获取死锁信息,该死锁信息包括死锁对应的多个事务的事务信息和每个事务的锁信息,每个事务的锁信息包括对应事务的等待锁的信息和持有锁的信息;通过探针程序将死锁信息存储至探针程序对应的目标内存中;将目标内存中的死锁信息发送给用户态程序进行存储,以便基于用户态程序存储的死锁信息进行死锁分析。本方案中,在数据库发生死锁的情况下,首先通过探针程序获取死锁信息,再通过探针程序将死锁信息存储至探针程序对应的目标内存中,然后,将目标内存中的死锁信息发送给用户态程序进行存储,以便基于用户态程序存储的死锁信息进行死锁分析。如此,可以在不修改数据库内核源码的情况下,通过探针程序可以获取到数据库更全面的死锁信息,在基于探针程序获取到的死锁信息进行死锁分析时,能够更全面准确地分析出数据库发生死锁的原因。
1.一种服务器,其特征在于,包括:
2.根据权利要求1所述的服务器,其特征在于,所述死锁包括所述数据库对应的n个锁等待链条,所述控制器,具体被配置为:
3.根据权利要求2所述的服务器,其特征在于,所述控制器,具体被配置为:
4.根据权利要求3所述的服务器,其特征在于,所述死锁检测函数的入口处和出口处分别包括所述探针程序;
5.根据权利要求4所述的服务器,其特征在于,所述死锁检测函数的入口处和出口处分别包括所述探针程序;
6.根据权利要求4所述的服务器,其特征在于,所述死锁通知函数的入口处包括所述探针程序;所述控制器,具体被配置为:
7.根据权利要求3所述的服务器,其特征在于,
8.根据权利要求2至7中任一项所述的服务器,其特征在于,所述控制器,还被配置为:
9.一种数据库死锁信息获取方法,其特征在于,所述方法包括:
10.一种计算机可读存储介质,其特征在于,包括:计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如权利要求9所述的数据库死锁信息获取方法。
