一种MySQL数据库慢查询的处理方法、装置、介质和设备转让专利

申请号 : CN202210010960.0

文献号 : CN114020794B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张晓雯

申请人 : 北京快成科技有限公司

摘要 :

本发明涉及一种MySQL数据库慢查询的处理方法,包括基于慢查询所关联业务的业务核心指数,确定慢查询子集合中的慢查询的业务权重值,利用慢查询指标对业务影响分析结果,确定各慢查询指标的权重值;基于慢查询指标值、慢查询指标的权重值、业务权重值以及慢查询指标的极值,确定慢查询的风险指数值,根据风险指数值对所有慢查询子集合中的所有慢查询进行排序。本发明为慢查询建立一种风险评估方法和系统,将当前所有慢查询进行风险评估,优先解决更可能会影响业务的慢查询,再逐步解决次优先级的慢查询。避免了为影响业务系统的慢查询因为处理的不够及时而严重危害到了业务运行。本发明还涉及一种MySQL数据库慢查询的处理装置、存储介质和设备。

权利要求 :

1.一种MySQL数据库慢查询的处理方法,其特征在于,包括:获取慢查询集合;

基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的业务权重值;

根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值;

基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对所有所述慢查询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行计划并处理;

所述基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,具体包括:基于业务的核心程度,确定业务核心指数;

提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。

2.根据权利要求1所述的MySQL数据库慢查询的处理方法,其特征在于,所述根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数;

通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量;

对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。

3.根据权利要求2所述的MySQL数据库慢查询的处理方法,其特征在于,所述利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值,具体包括:分别确定所述查询执行时间、获取记录锁等待时间、需检索的数据量以及所述慢查询语句每天执行次数对业务影响进行分析,得到所述业务影响分析结果,从而得到所述慢查询指标的权重值。

4.根据权利要求1所述的MySQL数据库慢查询的处理方法,其特征在于,所述基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,具体包括:根据每一个所述慢查询指标的边界值上限值和预设评分值,确定所有所述慢查询指标的极值;

将所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值输入至公式,确定所述慢查询的风险指数值。

5.一种MySQL数据库慢查询的处理装置,其特征在于,包括:获取模块,用于获取慢查询集合;

分类模块,用于基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的业务权重值;

分析模块,用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值;

排序模块,用于基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对所有所述慢查询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行计划并处理;

所述分类模块,具体用于基于业务的核心程度,确定业务核心指数;

提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。

6.根据权利要求5所述的MySQL数据库慢查询的处理装置,其特征在于,所述分析模块,具体用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:

所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数;

通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量;

对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1‑4中任一项所述的MySQL数据库慢查询的处理方法的步骤。

8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4中任一项所述的MySQL数据库慢查询的处理方法的步骤。

说明书 :

一种MySQL数据库慢查询的处理方法、装置、介质和设备

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种MySQL数据库慢查询的处理方法、装置、介质和设备。

背景技术

[0002] 众所周知,MySQL数据库慢查询对业务的影响程度不容小觑,甚至会直接导致MySQL服务宕机而致使整个系统瘫痪。但大家普遍会有自己的慢查询收集系统,将所有超过
阈值的慢查询统一收集起来、方便分析处理。但因为往往处理一条慢查询经常同时需要DBA
和业务开发人员的配合,这样就使得慢查询处理周期较长,可能会因为处理的不够及时而
严重危害到了业务运行,这样就会带来更大的麻烦。

发明内容

[0003] 本发明所要解决的技术问题是针对现有技术的不足,提供一种MySQL数据库慢查询的处理方法、装置、介质和设备。
[0004] 本发明解决上述技术问题的技术方案如下:
[0005] 一种MySQL数据库慢查询的处理方法,包括:
[0006] 获取慢查询集合;
[0007] 基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的业
务权重值;
[0008] 根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值;
[0009] 基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对所有所述慢查
询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行计划并处理。
[0010] 进一步地,所述基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,具体包括:
[0011] 基于业务的核心程度,确定业务核心指数;
[0012] 提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。
[0013] 进一步地,所述根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:
[0014] 所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数;
[0015] 通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量;
[0016] 对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。
[0017] 进一步地,所述利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值,具体包括:
[0018] 分别确定所述查询执行时间、获取记录锁等待时间、需检索的数据量以及所述慢查询语句每天执行次数对业务影响进行分析,得到所述业务影响分析结果,从而得到所述
慢查询指标的权重值。
[0019] 进一步地,所述基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,具体包括:
[0020] 根据每一个所述慢查询指标的边界值上限值和预设评分值,确定所有所述慢查询指标的极值;
[0021] 将所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值输入至公式,确定所述慢查询的风险指数值。
[0022] 本方法发明的有益效果是:提出了一种MySQL数据库慢查询的处理方法,包括获取慢查询集合;基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分
类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的
业务权重值;根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指
标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值;基于所述
慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确
定所述慢查询的风险指数值,并根据所述风险指数值对所有所述慢查询子集合中的所有慢
查询进行排序,显示排序后的所述慢查询子集合的执行计划并处理。本申请为慢查询建立
一种风险评估方法和系统,将当前所有慢查询进行风险评估,进而生成处理优先级,然后根
据优先级,优先解决更可能会影响业务的慢查询,再逐步解决次优先级的慢查询。避免了为
影响业务系统的慢查询因为处理的不够及时而严重危害到了业务运行。
[0023] 本发明解决上述技术问题的另一技术方案如下:
[0024] 一种MySQL数据库慢查询的处理装置,包括:
[0025] 获取模块,用于获取慢查询集合;
[0026] 分类模块,用于基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中
的慢查询的业务权重值;
[0027] 分析模块,用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重
值;
[0028] 排序模块,用于基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对
所有所述慢查询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行
计划并处理。
[0029] 进一步地,所述分类模块包括分集单元和统计单元;
[0030] 所述分类模块,具体用于基于业务的核心程度,确定业务核心指数;
[0031] 提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。
[0032] 进一步地,所述分析模块,具体用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:
[0033] 所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数;
[0034] 通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量;
[0035] 对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。
[0036] 此外,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述技术方案中任一项所述的MySQL数据库慢查询的处理方法的步骤。
[0037] 本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述技术方案中任一项所述的
MySQL数据库慢查询的处理方法的步骤。
[0038] 本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

[0039] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的
一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这
些附图获得其他的附图。
[0040] 图1为本发明实施例所示的一种MySQL数据库慢查询的处理方法的流程示意图;
[0041] 图2为本发明另一实施例所示的一种MySQL数据库慢查询的处理装置的模块示意图。

具体实施方式

[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发
明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实
施例,都应属于本发明保护的范围。
[0043] 如图1所示,本发明实施例所述的一种MySQL数据库慢查询的处理方法,包括:
[0044] 110、获取慢查询集合。
[0045] 120、基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的
业务权重值。
[0046] 130、根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值。
[0047] 140、基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对所有所述
慢查询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行计划,然
后依据优先级进行处理。
[0048] 进一步地,步骤120中基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,具体包括:
[0049] 基于业务的核心程度,确定业务核心指数。
[0050] 提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。
[0051] 进一步地,步骤130中根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:
[0052] 所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数。
[0053] 通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量。
[0054] 对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。
[0055] 进一步地,步骤130中利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值,具体包括:
[0056] 分别确定所述查询执行时间、获取记录锁等待时间、需检索的数据量以及所述慢查询语句每天执行次数对业务影响进行分析,得到所述业务影响分析结果,从而得到所述
慢查询指标的权重值。
[0057] 进一步地,步骤140中具体包括:
[0058] 根据每一个所述慢查询指标的边界值上限值和预设评分值,确定所有所述慢查询指标的极值。
[0059] 将所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值输入至公式,确定所述慢查询的风险指数值。
[0060] 应理解,首先应确保MySQL数据库的慢查询收集功能是开启状态,并根据自己的实际需求设置收集慢查询的阈值如超过1s或2s。为了对收集到的慢查询进行更准确的风险评
估,计算出有效的风险指数,本实施例从两个方面入手。第一方面为宏观方面,首先我们要
对业务核心程度进行分类:一级业务为最核心业务,比如货运司机抢单、支付、转账相关业
务;二级业务为辅助形业务,比如货运物流下的加油加气等业务;三级业务为普通型业务,
比如开发人员为支持业务进行的查询统计、数据导出等操作。越核心业务产生的慢查询优
先级越高,一级业务权重为3,二级业务权重为2,三级业务权重为1。可以根据慢查询记录中
[User@Host]值区分不同业务,这样将不同业务进行核心等级分类,权重越高的业务风险指
数会相应更高。
[0061] 第二方面为微观方面,具体是怎么实现对慢查询的风险评估。通过对收集到的慢查询记录文件进行分析,得到慢查询指标中Query_time、Lock_time、Rows_examined这三个
重要指标,还可根据MySQL自带的mysqldumpslow工具对慢查询文件进行统计分析,得到
count指标,下面是对这四个指标的解释说明:Query_time记录的是此条SQL的查询执行时
间,查询时间越长对业务的影响越大;Lock_time是当前查询获取数据时获取记录锁而等待
的时间,等待时间越长,越可能造成慢查询;Rows_examined 是MySQL查询时检索的数据,检
索的数据越多,需要的IO和cpu资源也就越多,越可能造成慢查询;count值是每条SQL当天
执行的总次数 。接下来生成风险指数就是根据这四个指标,但是每个指标的权重是不一样
的,因为查询时间和扫描行数对业务的影响更大,所以这两个指标所对应的权重更高一些,
四个指标的具体权重比为:Query_time:Rows_examined:Lock_time:count =3:3:2:2。根据
权重值对收集到的慢查询进行风险指数计算,根据风险指数评分对慢查询进行处理优先级
排序,排位越靠前,越是会更影响业务的慢查询,所以这时候就优先解决。得到风险指数的
具体算法为:计算出每个慢查询指标中的最高边界,但是极值往往会影响数据的真实性,因
此以95分位的值作为每个评分项的最高边界,以Rows_examined指标为例,95%的慢查询
Rows_examined值为100w行,那么100w就作为这项指标的极值,以此类推,最终得到各个指
标的极值。慢查询的风险指数。
[0062] 采用web形式展示上述由风险指数由大到小重新排序的慢查询,同时额外功能还可以加上显示对应慢查询的执行计划,慢查询的执行计划可通过在具体SQL前加上explain
关键字得到。通过页面展示的优先级,便可清楚的以数字化的形式来界定慢查询对业务的
影响程度,这样就可以用更豁然开朗的视角来管理慢查询平台,不会在面对巨量慢查询的
时候,不知道该从哪着手解决而浪费了时间,拖慢了解决高风险指数慢查询的进度,给业务
造成本可以避免的影响。
[0063] 基于上述实施例所提出的一种MySQL数据库慢查询的处理方法,包括获取慢查询集合;基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到
多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中的慢查询的业务权
重值;根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并
利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重值;基于所述慢查询
指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述
慢查询的风险指数值,并根据所述风险指数值对所有所述慢查询子集合中的所有慢查询进
行排序,显示排序后的所述慢查询子集合的执行计划,然后依据优先级进行处理。本申请为
慢查询建立一种风险评估方法和系统,将当前所有慢查询进行风险评估,进而生成处理优
先级,然后根据优先级,优先解决更可能会影响业务的慢查询,再逐步解决次优先级的慢查
询。避免了为影响业务系统的慢查询因为处理的不够及时而严重危害到了业务运行。
[0064] 如图2所示,一种MySQL数据库慢查询的处理装置,包括:
[0065] 获取模块,用于获取慢查询集合。
[0066] 分类模块,用于基于慢查询所关联业务的业务核心指数,对所述慢查询集合中各元素进行分类,得到多个慢查询子集合,利用所述业务核心指数,确定所述慢查询子集合中
的慢查询的业务权重值。
[0067] 分析模块,用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,并利用慢查询指标对业务影响分析结果,确定各所述慢查询指标的权重
值。
[0068] 排序模块,用于基于所述慢查询指标值、所述慢查询指标的权重值、所述业务权重值以及所述慢查询指标的极值,确定所述慢查询的风险指数值,并根据所述风险指数值对
所有所述慢查询子集合中的所有慢查询进行排序,显示排序后的所述慢查询子集合的执行
计划,然后依据优先级进行处理。
[0069] 进一步地,所述分类模块,具体用于基于业务的核心程度,确定业务核心指数。
[0070] 提取所述慢查询记录中的业务描述字段,根据所述业务描述字段的业务核心指数,确定所述慢查询所在的所述慢查询子集合。
[0071] 进一步地,所述分析模块,具体用于根据所述慢查询子集合中各慢查询的记录文件,得到所述慢查询的慢查询指标值,具体包括:
[0072] 所述慢查询指标包括记录文件中的查询执行时间、获取记录锁等待时间、需检索的数据量和慢查询语句每天执行次数。
[0073] 通过所述慢查询的记录文件获取所述查询执行时间、所述获取记录锁等待时间以及所述需检索的数据量。
[0074] 对所述慢查询的记录文件进行统计,得到所述慢查询语句每天执行次数。
[0075] 此外,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述技术方案中任一项所述的MySQL数据库慢查询的处理方法的步骤。
[0076] 本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述技术方案中任一项所述的
MySQL数据库慢查询的处理方法的步骤。
[0077] 以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,
这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要
求的保护范围为准。