1.本技术涉及互联网技术领域,具体涉及一种数据库慢查询的处理方法、装置、存储介质及电子设备。
背景技术:
2.数据库慢查询对数据库业务影响很大,严重时,甚至会导致数据库宕机,进而让整个系统瘫痪。比如,一些没有独立的慢查询日志存放文件、存放慢查询日志的表是固定大小的数据库,其慢查询的分析时间较长,难以掌握数据库当前运行的健康状况。
技术实现要素:
3.为了解决上述技术问题,提出了本技术。本技术实施例提供了一种数据库慢查询的处理方法、装置、存储介质及电子设备。
4.第一方面,本技术一实施例提供了一种数据库慢查询的处理方法,该方法包括:获取第一数据库中的m个慢查询语句,其中,m为正整数;基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库,其中,第二数据库的查询速度快于第一数据库的查询速度。
5.结合第一方面,在第一方面的某些实现方式中,基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库,包括:
6.若确定第二数据库中的慢查询信息与m个慢查询语句无关,将m个慢查询语句作为慢查询数据,存储至第二数据库;若确定第二数据库中的慢查询信息与m个慢查询语句相关,对m个慢查询语句进行统计分析,得到分析数据,将分析数据作为慢查询数据,存储至第二数据库。
7.结合第一方面,在第一方面的某些实现方式中,第二数据库中的慢查询信息包括慢查询语句的最后入库时间戳,对m个慢查询语句进行统计分析,得到分析数据,包括:基于最后入库时间戳以及m个慢查询语句各自对应的生成时间戳,确定m个慢查询语句中未被第二数据库存储的n个增量慢查询语句;对n个增量慢查询语句进行统计分析,得到所述分析数据。
8.结合第一方面,在第一方面的某些实现方式中,对n个增量慢查询语句进行统计分析,得到分析数据,包括:确定n个增量慢查询语句对应的p个慢查询指纹,其中,p个慢查询指纹互不相同,p为小于或等于n的正整数;分别利用p个慢查询指纹,对n个增量慢查询语句进行统计分析,得到分析数据。
9.结合第一方面,在第一方面的某些实现方式中,确定n个增量慢查询语句对应的p个慢查询指纹,包括:基于正则表达式,替换n个增量慢查询语句各自的参数变量,得到n个增量慢查询语句各自对应的慢查询指纹;
10.对n个增量慢查询语句各自对应的慢查询指纹进行去重操作,得到p个慢查询指纹。
11.结合第一方面,在第一方面的某些实现方式中,分别利用p个慢查询指纹,对n个增量慢查询语句进行统计分析,得到分析数据,包括:针对p个慢查询指纹中的每个慢查询指纹,若第二数据库中未存储慢查询指纹,将慢查询指纹、慢查询指纹对应的指纹标识、以及慢查询指纹对应的所有增量慢查询语句中的至少一种作为慢查询指纹的分析数据;若第二数据库中存储有慢查询指纹,统计慢查询指纹对应的指纹标识下的增量慢查询语句的数量、所有增量慢查询语句的总执行时长、最后生成的增量慢查询语句的生成时间戳中的至少一种,得到慢查询指纹的分析数据。
12.结合第一方面,在第一方面的某些实现方式中,在获取第一数据库中的m个慢查询语句之后,还包括:对m个慢查询语句进行响应分析,得到响应分析结果;若响应分析结果符合预设告警条件,发出告警信息。
13.结合第一方面,在第一方面的某些实现方式中,获取第一数据库中的m个慢查询语句,包括:基于预设时间间隔以及第二数据库中存储的关于第一数据库的元数据,驱动第二数据库访问第一数据库以及第一数据库对应的实例,获取m个慢查询语句。
14.结合第一方面,在第一方面的某些实现方式中,第二数据库中配置有关于第一数据库的慢查询记录表,慢查询记录表包括指纹标识、指纹标识对应的慢查询指纹、慢查询指纹对应的慢查询语句的数量、慢查询指纹对应的所有慢查询语句的总执行时长、慢查询指纹对应的慢查询语句的最后生成时间戳以及慢查询指纹对应的慢查询语句样例。
15.第二方面,本技术一实施例提供了一种数据库慢查询的处理装置,包括:获取模块,用于获取第一数据库中的m个慢查询语句,其中,m为正整数;存储模块,用于基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库,其中,第二数据库的查询速度快于第一数据库的查询速度。
16.结合第二方面,在第二方面的某些实现方式中,数据库慢查询的处理装置还包括超文本标记语言页面模块,用于接收筛查请求,并基于筛查请求对慢查询信息进行多维度的筛查。
17.第三方面,本技术一实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序用于执行第一方面所述的数据库慢查询的处理方法。
18.第四方面,本技术一实施例提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;该处理器用于执行第一方面所述的数据库慢查询的处理方法。
19.通过本技术实施例提供的数据库慢查询的处理方法,将第一数据库中的慢查询语句存储至查询速度较快的第二数据库,以便更高效地从第二数据库中查询关于第一数据库的慢查询信息,进一步方便技术人员实时分析关于第一数据库的高消耗语句,以对第一数据库和相关系统进行相应功能的优化。
附图说明
20.通过结合附图对本技术实施例进行更详细的描述,本技术的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本技术实施例的进一步理解,并且构成说明书的一部分,与本技术实施例一起用于解释本技术,并不构成对本技术的限制。在附图中,
相同的参考标号通常代表相同部件或步骤。
21.图1所示为本技术实施例所适用的一场景示意图。
22.图2所示为本技术一示例性实施例提供的数据库慢查询的处理方法的流程示意图。
23.图3所示为本技术一示例性实施例提供的将m个慢查询语句对应的慢查询数据存储至第二数据库的流程示意图。
24.图4所示为本技术一示例性实施例提供的对m个慢查询语句进行统计分析,得到分析数据的流程示意图。
25.图5所示为本技术一示例性实施例提供的对n个增量慢查询语句进行统计分析,得到分析数据的流程示意图。
26.图6所示为本技术一示例性实施例提供的确定n个增量慢查询语句对应的p个慢查询指纹的流程示意图。
27.图7所示为本技术另一示例性实施例提供的对n个增量慢查询语句进行统计分析,得到分析数据的流程示意图。
28.图8所示为本技术另一示例性实施例提供的数据库慢查询的处理方法的流程示意图。
29.图9所示为本技术一示例性实施例提供的数据库慢查询的处理装置的结构示意图。
30.图10所示为本技术另一示例性实施例提供的数据库慢查询的处理装置的结构示意图。
31.图11所示为本技术一实施例提供的电子设备的结构示意图。
具体实施方式
32.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
33.数据库慢查询对数据库业务的影响很大,严重时甚至会导致数据库死机。尤其对于一些没有独立存放慢查询日志文件、或者存放慢查询的表是固定大小的数据库,慢查询的存储、统计分析及查询使用都极为繁琐,进一步导致对数据库当前健康状况的分析困难。例如,对于mongo数据库,其没有独立的慢查询日志文件、存放慢查询语句的表也是固定大小,从而导致对mongo数据库的慢查询的分析时间较长,不便分析mongo数据库系统当前的健康状况。此外,现有的mongo数据库的慢查询,一般都需要登陆mongo数据库查询system.profile集合、或者通过mtools工具分析mongo数据库日志的方式分析现网的慢查询,这两种查询方法均无法灵活地选择慢查询时间段进行分析,进而无法提供慢查询的告警信息。同时,mongo数据库在存储多个慢查询后,会自动覆盖时间期限较早的记录,使用户无法查询历史的慢查询信息。对此,需要将mongo数据库中的慢查询信息进行相应地处理,以便技术人员能够及时查询到相关的慢查询信息、并根据慢查询信息对相应的数据库进行优化。
34.图1所示为本技术实施例所适用的一场景示意图。该场景包括第一数据库110、第二数据库120和服务器130,第一数据库110和第二数据库120之间、以及第二数据库120和服务器130之间存在通信连接关系。
35.具体地,第一数据库可以是关系型数据库、或者非关系型数据库,本技术对第一数据库的类型不做具体限定。
36.服务器130用于驱动第二数据库获取关于第一数据库的m个慢查询语句,并基于第二数据库中存储的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库。其中,第二数据库的查询速度快于第一数据库的查询速度,第二数据库可以是关系型数据库、或者非关系型数据库,本技术对此不做限定。
37.图2所示为本技术一示例性实施例提供的数据库慢查询的处理方法的流程示意图。如图2所示,本技术实施例提供的数据库慢查询的处理方法包括如下步骤。
38.步骤10,获取第一数据库中的m个慢查询语句。其中,m为正整数。
39.具体地,第一数据库可以为任意数据库,本技术实施例对第一数据库的类型不做具体限定。
40.进一步地,慢查询语句是查询耗时超过规定时间的语句,本领域技术人员可以根据需要设置查询超时的时间。例如,将查询超时的时间设置为8秒,则第一数据库中的慢查询日志会将超过8秒的语句记录下来,该语句即为慢查询语句。
41.步骤20,基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库。
42.需要说明的是,第二数据库可以为任意数据库,只需第二数据库的查询速度快于第一数据库即可,以方便技术人员能迅速地从第二数据库中查询和分析关于第一数据库的慢查询信息。本技术实施例对第二数据库的类型不作具体限定。
43.第二数据库中的慢查询信息可能是关于第一数据库的慢查询信息、或者是关于第二数据库的慢查询信息、亦或者是除却第一数据库和第二数据库之外的其他数据库的慢查询信息。
44.慢查询信息指第二数据库中已存储的慢查询语句、或关于慢查询语句的统计分析数据。
45.慢查询数据包括待存储的m个慢查询语句、以及待存储的m个慢查询语句对应的统计分析数据中的至少一种。
46.通过本技术实施例中的技术方案,可以更方便、快捷地查询到关于第一数据库的慢查询信息,从而方便技术人员对第一数据库进行优化,也能进一步解决相关系统的性能问题。此外,区别于将m个慢查询语句直接存储在第二数据库,本技术实施例中的技术方案是将m个慢查询语句对应的慢查询数据存储在第二数据库,即可以根据第二数据库中存储的慢查询信息,将对应的m个慢查询语句直接存储在第二数据库、或者将m个慢查询语句对应的统计分析数据存储在第二数据库,一方面可以减少第二数据库的数据存储量,另一方面可以方便技术人员直接根据第二数据库中存储的关于第一数据库的慢查询数据,对第一数据库和相关系统进行优化,而无需每次都根据初始的m个慢查询语句进行相关地统计分析,以判断数据库产生的问题所在。
47.图3为本技术一示例性实施例提供的将m个慢查询语句对应的慢查询数据存储至
第二数据库的流程示意图。在图2所示实施例的基础上延伸出图3所示实施例,下面着重叙述图3所示实施例与图2所示实施例的不同之处,相同之处不再赘述。
48.如图3所示,基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库,包括如下步骤。
49.步骤21,判断第二数据库中的慢查询信息是否与m个慢查询语句相关。
50.具体地,m个慢查询语句是关于第一数据库的慢查询语句。判断第二数据库中的慢查询信息是否与m个慢查询语句相关,即判断第二数据库中是否有关于第一数据库的慢查询信息。
51.进一步地,可以通过预先指定的第一数据库的慢查询信息在第二数据库中的存储路径,判断第二数据库中是否有关于第一数据库的慢查询信息。存储路径包括第二数据库中的慢查询日志文件、第二数据库中配置的第一数据库的慢查询记录表等等。例如,可以在第二数据库中查询关于第一数据库的慢查询记录表,若慢查询记录表中记载了第一数据库的慢查询信息,则第二数据库中存在关于第一数据库的慢查询信息,若慢查询记录表中未记载第一数据库的慢查询,则第二数据库中不存在关于第一数据库的慢查询信息。需要说明的是,本领域技术人员也可以在第二数据库中选择其他的存储路径存储第一数据库的慢查询信息,本技术实施例对此不作具体限定。
52.示例性地,在实际应用过程中,若步骤21的判断结果为否,即第二数据库中的慢查询信息与m个慢查询语句无关,则执行步骤22,若步骤21的判断结果为是,即第二数据库中的慢查询信息与m个慢查询语句相关,则执行步骤23。
53.步骤22,将m个慢查询语句作为慢查询数据,存储至第二数据库。
54.具体地,将第一数据库的m个慢查询语句作为慢查询数据,全量存储于第二数据库。
55.步骤23,对m个慢查询语句进行统计分析,得到分析数据,将分析数据作为慢查询数据,存储至第二数据库。
56.分析数据是对m个慢查询语句进行整理、归类、以及计算得到的更直观的慢查询数据。
57.通过本技术实施例中的技术方案,一方面可以减少第二数据库的数据存储量,另一方面可以方便技术人员直接从第二数据库中调取关于第一数据库的慢查询的分析数据,进而对第一数据库进行优化。
58.图4所示为本技术一示例性实施例提供的对m个慢查询语句进行统计分析,得到分析数据的流程示意图。在图3所示实施例的基础上延伸出图4所示实施例,下面着重叙述图4所示实施例与图3所示实施例的不同之处,相同之处不再赘述。
59.如图4所示,第二数据库中的慢查询信息包括慢查询语句的最后入库时间戳,对m个慢查询语句进行统计分析,得到分析数据,包括如下步骤。
60.步骤231,基于最后入库时间戳以及m个慢查询语句各自对应的生成时间戳,确定m个慢查询语句中未被第二数据库存储的n个增量慢查询语句。
61.具体地,基于m个慢查询语句各自对应的生成时间戳,在m个慢查询语句中选择在最后入库时间戳之后生成的慢查询语句作为未被第二数据库存储的n个增量慢查询语句。
62.例如,m=5,最后入库时间戳为2022年5月1日8:00,5个慢查询语句各自对应的生
成时间为2022年4月28日7:00、2022年5月1日6:00、2022年5月5日9:00、2022年5月5日9:05、2022年5月5日12:00,则2022年5月5日9:00、2022年5月5日9:05、2022年5月5日12:00生成的3个慢查询语句作为未被第二数据库存储的3个增量慢查询语句。
63.步骤232,对n个增量慢查询语句进行统计分析,得到所述分析数据。
64.需要说明的是,若根据最后入库时间戳以及m个慢查询语句各自对应的生成时间戳,判断m个慢查询语句均为在最后入库时间戳之前生成的慢查询语句,则m个慢查询语句中未被第二数据库存储的增量慢查询语句的个数等于零。若增量慢查询语句的个数等于零,则不对第一数据库的m个慢查询语句做统计分析处理和存储处理。
65.通过本实施例中的方案,可以得到相较于第二数据库中已经存储的关于第一数据库的n个增量慢查询语句,以减少第二数据库所需存储的第一数据库的慢查询语句,方便人们快速调取与第一数据库相关的慢查询语句。
66.图5为本技术一示例性实施例提供的对n个增量慢查询语句进行统计分析,得到分析数据的流程示意图。在图4所示实施例的基础上延伸出图5所示实施例,下面着重叙述图5所示实施例与图4所示实施例的不同之处,相同之处不再赘述。
67.如图5所示,对n个增量慢查询语句进行统计分析,得到分析数据,包括如下步骤。
68.步骤2321,确定n个增量慢查询语句对应的p个慢查询指纹。
69.示例性地,p个慢查询指纹互不相同,p为小于或等于n的正整数。其中,慢查询指纹为同一类慢查询sql结构的语句,用于表示慢查询语句的结构信息。
70.步骤2322,分别利用p个慢查询指纹,对n个增量慢查询语句进行统计分析,得到分析数据。
71.在本技术实施例中,以慢查询指纹为单位,对n个增量慢查询语句进行汇总分析,以便技术人员可以更直观、清晰地查询到每个慢查询指纹下的执行情况,并对第一数据库进行相应优化。
72.图6为本技术一示例性实施例提供的确定n个增量慢查询语句对应的p个慢查询指纹的流程示意图。在图5所示实施例的基础上延伸出图6所示实施例,下面着重叙述图6所示实施例与图5所示实施例的不同之处,相同之处不再赘述。
73.如图6所示,确定n个增量慢查询语句对应的p个慢查询指纹,包括如下步骤。
74.步骤23211,基于正则表达式,替换n个增量慢查询语句各自的参数变量,得到n个增量慢查询语句各自对应的慢查询指纹。
75.例如,对于慢查询语句db.find({'conversationid':1,'payload':binary(
″
,0),'saslcontinue':1}),替换慢查询语句中的参数变量,得到的慢查询指纹为db.find({'conversationid':'?','payload':'?','saslcontinue':'?'})。
76.对于慢查询语句db.find({'conversationid':2,'payload':binary(
″
,1),'saslcontinue':3}),替换慢查询指纹中的参数变量,得到的慢查询指纹为db.find({'conversationid':'?','payload':'?','saslcontinue':'?'})。
77.步骤23212,对n个增量慢查询语句各自对应的慢查询指纹进行去重操作,得到p个慢查询指纹。
78.沿用步骤23211中的示例,慢查询语句db.find({'conversationid':1,'payload':binary(
″
,0),'saslcontinue':1})和db.find({'conversationid':2,'
payload':binary(
″
,1),'saslcontinue':3})的慢查询指纹相同,故对慢查询指纹进行去重操作,保留此两个慢查询语句对应的相同的一个慢查询指纹。
79.通过本技术实施例中的技术方案,可以得到慢查询语句对应的慢查询指纹,以及对n个增量慢查询语句对应的相同的慢查询指纹进行去重,以去除冗余的增量慢查询语句对应的分析数据,精简第二数据库所需存储的慢查询数据。
80.图7所示为本技术另一示例性实施例提供的对n个增量慢查询语句进行统计分析,得到分析数据的流程示意图。在图5所示实施例的基础上延伸出图7所示实施例,下面着重叙述图7所示实施例与图5所示实施例的不同之处,相同之处不再赘述。
81.如图7所示,分别利用p个慢查询指纹,对n个增量慢查询语句进行统计分析,得到分析数据,包括如下步骤。
82.步骤23221,针对p个慢查询指纹中的每个慢查询指纹,判断第二数据库中是否存储慢查询指纹。
83.示例性地,若步骤23221的执行结果为否,即第二数据库中未存储慢查询指纹,则执行步骤23222,若步骤23221的执行结果为是,即第二数据库中存储有慢查询指纹,则执行步骤23223。
84.步骤23222,将慢查询指纹、慢查询指纹对应的指纹标识、以及慢查询指纹对应的所有增量慢查询语句中的至少一种作为慢查询指纹的分析数据。
85.指纹标识用于表示慢查询指纹的身份信息,故通过指纹标识可以快速、准确地确定其对应的慢查询指纹。具体地,可以通过对慢查询指纹和库表名一起做消息摘要算法第五版(message digest algorithm 5,md5)检验,生成字符串类型的慢查询指纹的指纹标识。每一个慢查询指纹都有其唯一确定的指纹标识。
86.步骤23223,统计慢查询指纹对应的指纹标识下的增量慢查询语句的数量、所有增量慢查询语句的总执行时长、最后生成的增量慢查询语句的生成时间戳中的至少一种,得到慢查询指纹的分析数据。
87.慢查询指纹对应的指纹标识下的增量慢查询语句的数量即为慢查询指纹的执行次数,所有增量慢查询语句的总执行时长即为慢查询指纹的总执行时长,最后生成的增量慢查询语句的生成时间戳即为慢查询指纹的最后执行时间。
88.在本技术实施例中,可以根据第二数据库中是否存储对应的慢查询指纹,进一步根据慢查询指纹对增量慢查询语句进行统计分析,使第二数据库存储的关于第一数据库的慢查询信息的结果更清晰、直观。
89.图8所示为本技术另一示例性实施例提供的数据库慢查询的处理方法的流程示意图。在图2所示实施例的基础上延伸出图8所示实施例,下面着重叙述图8所示实施例与图2所示实施例的不同之处,相同之处不再赘述。
90.如图8所示,在将m个慢查询语句对应的慢查询数据存储至第二数据库之后,还包括如下步骤。
91.步骤30,对m个慢查询语句对应的慢查询数据进行响应分析,得到响应分析结果。
92.步骤40,判断响应分析结果是否符合预设告警条件。
93.具体地,可根据预设告警条件对m个慢查询语句对应的慢查询数据进行相应的响应分析。例如,预设告警条件为查询超时的时间大于20秒、或者慢查询指纹在预设时间段内
的执行次数大于10次、或者第一数据库在预设时间段内生成的慢查询语句的个数大于100等等。在确定示例中的告警条件之后,即可根据前述示例的告警条件对慢查询数据进行相应的响应分析。
94.示例性地,若步骤40的执行结果为否,即响应分析结果不符合预设告警条件,则执行步骤50,若步骤40的执行结果为是,即响应分析结果符合预设告警条件,则执行步骤60。
95.步骤50,结束。
96.步骤60,发出告警信息。
97.区别于技术人员在发现第一数据库异常后再去主动查询、分析关于第一数据库的慢查询信息,发现问题并解决问题,本技术是被动接收关于第一数据库的告警信息,该方案可在第一数据库出现异常的当下,接收到相应的告警信息,并对第一数据库进行相应的维护和优化。
98.在本技术一示例性实施例中,获取第一数据库中的m个慢查询语句,包括:基于预设时间间隔以及第二数据库中存储的关于第一数据库的元数据,驱动第二数据库访问第一数据库以及第一数据库对应的实例,获取m个慢查询语句。
99.具体地,第一数据库的元数据包括第一数据库集群名称、节点互联网协议(internet protocol,ip)地址、节点端口、慢查询的查询超时阈值、第一数据库用户登录信息等等。
100.进一步地,预设时间间隔可根据实际情况进行具体地设定。例如,预设时间间隔为10分钟,则服务器每10分钟驱动第二数据库访问一次第一数据库以及第一数据库的实例,以获取第一数据库的慢查询语句。
101.通过本技术实施例中的技术方案,可以更方便地定时获取第一数据库的慢查询语句,以免第一数据库中慢查询语句长时间累积而覆盖之间较早的慢查询记录,使用户不方便查找。
102.在本技术一示例性实施例中,第二数据库中配置有关于第一数据库的慢查询记录表,慢查询记录表包括指纹标识、指纹标识对应的慢查询指纹、慢查询指纹对应的慢查询语句的数量、慢查询指纹对应的所有慢查询语句的总执行时长、慢查询指纹对应的慢查询语句的最后生成时间戳以及慢查询指纹对应的慢查询语句样例。
103.此外,慢查询记录表还包括主机ip地址、第一数据库端口、慢查询集合名称、慢查询用户来源、应用端ip地址、慢查询语句的采集时间。
104.通过本实施例中的技术方案,在第二数据库中,可以按照慢查询记录表对获取的第一数据库的慢查询数据进行分类记录,以更直观、清晰地展示第一数据库的慢查询信息。
105.下面,以第一数据库为mongo数据库集群下的mongo库、第二数据库为mysql数据库为例,对本技术实施例中的方案进行详细阐释。
106.首先在mysql数据库中配置mongo数据库集群下的所有mongo库的慢查询记录表和配置登录信息。配置登录表记录了mysql数据库需要巡检的mongo数据库集群下的每个mongo库以及每个mongo库的登录方法等相关元数据,例如mongo数据库集群名称、节点ip、节点端口、慢查询的查询超时阈值、以及mongo数据库集群的用户登录信息。慢查询记录表的字段包括指纹标识、指纹标识对应的慢查询指纹、慢查询指纹对应的查询语句样例、慢查询指纹的总执行时长、慢查询指纹的执行次数、慢查询指纹的最后执行时间、主机ip地址、
mongo库端口、慢查询集合名称、慢查询用户来源、应用端ip地址、慢查询集合采集时间。
107.然后,通过服务器驱动第二数据库轮询所有的mongo库和mongo库对应的实例,以获取对应的mongo库的慢查询集合中的m个慢查询语句。例如,m=5,以进一步地对mongo库的慢查询的处理进行说明。
108.对于获取的某一mongo库的5个慢查询语句,首先判断mysql数据库中是否存储有关于该mongo库的慢查询信息,若无,则将获取的该mongo库的5个慢查询语句全量存储于mysql数据库,若有,则根据上次存储到mysql数据库的该mongo库的慢查询语句的入库时间戳、以及5个慢查询语句的生成时间戳,从5个慢查询语句中确定增量慢查询语句。示例性地,若确定的增量慢查询语句的个数为0,则不对获取的该mongo库的5个慢查询语句进行存储处理。若确定的增量慢查询语句的个数为3,则提取此3个增量慢查询语句的慢查询指纹,并判断mysql数据库中是否存储有对应的此3个增量慢查询语句的慢查询指纹,若无,则将未存储的慢查询指纹、慢查询指纹对应的指纹标识、慢查询指纹对应的增量慢查询语句全量存储于mysql数据库,若有,则统计已存储的该慢查询指纹对应的指纹标识、该指纹标识下的增量慢查询语句的数量、该慢查询指纹的总执行时长、该慢查询指纹的最后生成时间戳,并将统计结果存储在mysql数据库。
109.至此,关于获取的mongo数据库集群下的某一mongo库的m个慢查询语句的处理结束。
110.进一步地,可根据预设的时间间隔,例如5分钟,轮询一次mongo数据库集群下的mongo库的慢查询记录,并对获取的关于mongo库的慢查询语句执行本技术实施例提及的数据库慢查询的处理方法,将mongo库的慢查询语句对应慢查询数据存储在mysql数据库。
111.可以理解,本技术仅以mongo数据库和mysql数据库为例,进行了本技术实施例的数据库慢查询的处理方法的阐释,本领域技术人员可根据实际应用情况任意选择第一数据库和第二数据库对应的具体数据库类型,本技术对此不做限定。
112.上文结合图2至图8,详细描述了本技术的数据库慢查询的处理方法实施例,下面结合图9至图10,详细描述本技术的数据库慢查询的处理装置实施例。应理解,数据库慢查询的处理方法实施例的描述与数据库慢查询的处理装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
113.图9所示为本技术一示例性实施例提供的数据库慢查询的处理装置的结构示意图。如图9所示,本技术实施例提供的数据库慢查询的处理装置包括:
114.获取模块910,用于获取第一数据库中的m个慢查询语句,其中,m为正整数;
115.存储模块920,用于基于第二数据库中的慢查询信息,将m个慢查询语句对应的慢查询数据存储至第二数据库,其中,第二数据库的查询速度快于第一数据库的查询速度。
116.在本技术一实施例中,存储模块920还用于若确定第二数据库中的慢查询信息与m个慢查询语句无关,将m个慢查询语句作为慢查询数据,存储至第二数据库;若确定第二数据库中的慢查询信息与m个慢查询语句相关,对m个慢查询语句进行统计分析,得到分析数据,将分析数据作为慢查询数据,存储至第二数据库。
117.在本技术一实施例中,存储模块920还用于基于最后入库时间戳以及m个慢查询语句各自对应的生成时间戳,确定m个慢查询语句中未被第二数据库存储的n个增量慢查询语句;对n个增量慢查询语句进行统计分析,得到所述分析数据。
118.在本技术一实施例中,存储模块920还用于确定n个增量慢查询语句对应的p个慢查询指纹,其中,p个慢查询指纹互不相同,p为小于或等于n的正整数;分别利用p个慢查询指纹,对n个增量慢查询语句进行统计分析,得到分析数据。
119.在本技术一实施例中,存储模块920还用于基于正则表达式,替换n个增量慢查询语句各自的参数变量,得到n个增量慢查询语句各自对应的慢查询指纹;对n个增量慢查询语句各自对应的慢查询指纹进行去重操作,得到p个慢查询指纹。
120.在本技术一实施例中,存储模块920还用于针对p个慢查询指纹中的每个慢查询指纹,若第二数据库中未存储慢查询指纹,将慢查询指纹、慢查询指纹对应的指纹标识、以及慢查询指纹对应的所有增量慢查询语句中的至少一种作为慢查询指纹的分析数据;若第二数据库中存储有慢查询指纹,统计慢查询指纹对应的指纹标识下的增量慢查询语句的数量、所有增量慢查询语句的总执行时长、最后生成的增量慢查询语句的生成时间戳中的至少一种,得到慢查询指纹的分析数据。
121.在本技术一实施例中,获取模块910还用于基于预设时间间隔以及第二数据库中存储的关于第一数据库的元数据,驱动第二数据库访问第一数据库以及第一数据库对应的实例,获取m个慢查询语句。
122.在本技术一实施例中,第二数据库中配置有关于第一数据库的慢查询记录表,慢查询记录表包括指纹标识、指纹标识对应的慢查询指纹、慢查询指纹对应的慢查询语句的数量、慢查询指纹对应的所有慢查询语句的总执行时长、慢查询指纹对应的慢查询语句的最后生成时间戳以及慢查询指纹对应的慢查询语句样例。
123.图10所示为本技术另一示例性实施例提供的数据库慢查询的处理装置的结构示意图。在图9所示实施例的基础上延伸出图10所示实施例,下面着重叙述图10所示实施例与图9所示实施例的不同之处,相同之处不再赘述。
124.如图10所示,数据库慢查询的处理装置还包括超文本标记语言页面模块930,用于接收筛查请求,并基于筛查请求对慢查询信息进行多维度的筛查。
125.示例性地,多维度的筛查包括查询时间段、第一数据库的ip地址、第一数据库的端口、慢查询指纹的执行次数、慢查询指纹的执行时长等。
126.可以理解,本领域技术人员可根据实际应用情况,选择具体的针对慢查询信息的筛查。
127.通过本技术实施例中的技术方案,技术人员和数据库管理程序可以更加方便地实时观测到第一数据库的慢查询信息,以及时掌握第一数据的运行健康状况。
128.下面,参考图11来描述根据本技术实施例的电子设备。图11所示为本技术一示例性实施例提供的电子设备的结构示意图。
129.如图11所示,电子设备1100包括一个或多个处理器1101和存储器1102。
130.处理器1101可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备110中的其他组件以执行期望的功能。
131.存储器1102可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以
存储一个或多个计算机程序指令,处理器1101可以运行所述程序指令,以实现上文所述的本技术的各个实施例的数据库慢查询的处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如包括第一数据库的m个慢查询语句、第二数据库中的慢查询信息、m个慢查询语句对应的慢查询数据等各种内容。
132.在一个示例中,电子设备110还可以包括:输入装置1103和输出装置1104,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
133.该输入装置1103可以包括例如键盘、鼠标等等。
134.该输出装置1104可以向外部输出各种信息,包括第一数据库的m个慢查询语句、第二数据库中的慢查询信息、m个慢查询语句对应的慢查询数据等。该输出装置1104可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
135.当然,为了简化,图11中仅示出了该电子设备110中与本技术有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备110还可以包括任何其他适当的组件。
136.除了上述方法和设备以外,本技术的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述描述的根据本技术各种实施例的数据库慢查询的处理方法中的步骤。
137.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
138.此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述描述的根据本技术各种实施例的数据库慢查询的处理方法中的步骤。
139.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
140.以上结合具体实施例描述了本技术的基本原理,但是,需要指出的是,在本技术中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
141.本技术中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
142.还需要指出的是,在本技术的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本技术的等效方案。
143.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本技术。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
144.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。