掌桥专利:专业的专利平台
掌桥专利
首页

数据表容量预警的方法、装置、系统和介质

文献发布时间:2023-06-19 11:29:13


数据表容量预警的方法、装置、系统和介质

技术领域

本公开可应用于金融科技运维技术领域,更具体地,涉及一种数据表容量预警的方法、装置、系统和介质。

背景技术

随着数字经济的发展,每天都有大量的数据库查询需求,对数据库中数据表的访问效率直接关系着数据库运行的效率。因此,对数据表,尤其是访问较为频繁的数据表(简称热表)进行有效的监控,可以提升数据库的稳定性,避免突发的交易集中高峰期对于数据库性能抖动甚至宕机的影响。

现有技术中对数据表的性能监控通常是事中和事后监控,缺乏较为有效的事前的预测监控手段。

发明内容

有鉴于此,本公开实施例提供了一种可以事前评估数据表性能的数据表容量预警的方法、装置、系统、及介质。

本公开实施例的一个方面提供了一种数据表容量预警的方法。该方法包括:获取数据库的性能消耗量,其中,所述数据库中包括M个第一数据表,M为大于或等于1的整数;基于所述数据库的性能消耗量和所述数据库的性能告警阀值的差异,获得所述数据库的预估性能增长空间;基于每个所述第一数据表的性能消耗量在所述数据库的性能消耗量占比以及所述数据库的预估性能增长空间,得到每个所述第一数据表的预估性能增长空间;以及基于每个所述第一数据表的数据量性能关系模型以及每个所述第一数据表的预估性能增长空间,确定每个所述第一数据表的数据量报警指标;其中,所述数据量性能关系模型用于表征对应的所述第一数据表的数据量与所述第一数据表的性能消耗量之间的映射关系。

根据本公开的实施例,所述第一数据表为所述数据库中符合热表筛选条件的数据表。

根据本公开的实施例,所述获取数据库的性能消耗量包括:获取M个所述第一数据表的信息;获取每个所述第一数据表的性能消耗量;以及基于M个所述第一数据表各自的性能消耗量的汇总,得到所述数据库的性能消耗量。其中,获取每个所述第一数据表的性能消耗量,包括:基于所述第一数据表的信息,查找与所述第一数据表关联的N个第一查询语句的信息,其中,N为大于或等于1的整数;获取每个所述第一查询语句的性能消耗量;基于N个所述第一查询语句各自的性能消耗量的汇总,得到所述第一数据表的性能消耗量。

根据本公开的实施例,所述第一查询语句为与所述第一数据表关联的符合热查询条件的查询语句。

根据本公开的实施例,所述获取数据库的性能消耗量包括:获取所述数据库在生产环境下运行时的生产性能消耗量;获取所述数据库的未来增量性能消耗量,以及基于所述数据库的生产性能消耗量和未来增量性能消耗量的汇总,得到所述数据库的性能消耗量。其中,获取所述数据库的未来增量性能消耗量包括:确定在测试环境下与所述数据库具有映射关系的测试数据库,其中,所述测试数据库和所述数据库的基础数据一致,所述基础数据包括所述测试数据库和所述数据库所包括的数据表、以及每个数据表的数据量;获取所述测试数据库的增量性能消耗量,其中,所述增量性能消耗量为所述测试数据库的性能消耗中由与所述数据库的生产性能消耗量的诱发因素不同的部分所引起的性能消耗量;以及以所述增量性能消耗量表征所述数据库的未来增量性能消耗量。

根据本公开的实施例,所述获取所述测试数据库的增量性能消耗量,包括:获取M个所述第一数据表的信息;获取每个所述第一数据表的增量性能消耗量;以及基于M个所述第一数据表各自的增量性能消耗量的汇总,得到所述测试数据库的增量性能消耗。其中,获取每个所述第一数据表的增量性能消耗量包括:获取在测试环境下与所述第一数据表关联的R个第二查询语句的信息,其中,所述第二查询语句为在测试环境下运行但尚未投入生产生产环境运营的查询语句;获取每个所述第二查询语句的性能消耗量;基于R个所述第二查询语句各自的性能消耗量的汇总,得到所述第一数据表的增量性能消耗量;以及,基于M个所述第一数据表各自的增量性能消耗量的汇总,得到所述测试数据库的增量性能消耗。

根据本公开的实施例,所述方法还包括构建每个所述第一数据表的所述数据量性能关系模型,具体包括:获取S个时刻所述第一数据表的数据量,得到S个数据量样本数据,其中,S为大于或等于2的整数;获取所述S个时刻所述第一数据表的性能消耗量,得到S个性能消耗量样本数据;以及基于所述S个数据量样本数据和所述S个性能消耗量样本数据,拟合得到所述数据量性能关系模型。

根据本公开的实施例,所述数据量性能关系模型为线性关系模型。

本公开实施例的另一方面,提供了一种数据表容量预警的装置。所述装置包括性能获取模块、第一预估模块、第二预估模块以及报警指标确定模块。性能获取模块用于获取数据库的性能消耗量,其中,所述数据库中包括M个第一数据表,M为大于或等于1的整数。第一预估模块用于基于所述数据库的性能消耗量和所述数据库的性能告警阀值的差异,获得所述数据库的预估性能增长空间。第二预估模块用于基于每个所述第一数据表的性能消耗量在所述数据库的性能消耗量占比以及所述数据库的预估性能增长空间,得到每个所述第一数据表的预估性能增长空间。报警指标确定模块用于基于所述数据库中每个所述第一数据表的数据量性能关系模型以及所述数据库的预估性能增长空间,确定每个所述第一数据表的数据量报警指标。其中,所述数据量性能关系模型用于表征对应的所述第一数据表的数据量与所述第一数据表的性能消耗量之间的映射关系。所述数据库的预估性能增长空间是基于M个所述第一数据表各自的性能消耗量的增长空间的汇总而得到的。

根据本公开的实施例,所述装置还包括模型构建模块。所述模型构建模块用于构建每个所述第一数据表的所述数据量性能关系模型,包括获取S个时刻所述第一数据表的数据量,得到S个数据量样本数据,其中,S为大于或等于2的整数;获取所述S个时刻所述第一数据表的性能消耗量,得到S个性能消耗量样本数据;以及基于所述S个数据量样本数据和所述S个性能消耗量样本数据,拟合得到所述数据量性能关系模型。

本公开实施例的另一方面,提供了一种数据表容量预警的系统。所述系统包括一个或多个存储器、以及一个或多个处理器。所述存储器存储有可执行指令。所述处理器执行所述可执行指令以实现如上所述的方法。

本公开实施例的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

本公开实施例的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

根据本公开的实施例,可以事先得到每个热表的数据量报警指标(例如,每个数据表允许的数据量增长量、或者每个数据表的数据量上限等),从而可以对数据表性能变化情况进行预先评估,在可能出现性能故障时提前报警。进而避免数据表的数据量增长带来的性能消耗过度,引发数据库运行风险。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了根据本公开实施例的数据表容量预警的方法的流程图;

图2示意性示出了根据本公开实施例的数据库与数据表的关系示意;

图3示意性示出了根据本公开一实施例的获取数据库的性能消耗量的流程图;

图4示意性示出了根据本公开实施例的一个数据表的性能消耗量的获取过程示意;

图5示意性示出了根据本公开另一实施例的数据表容量预警的系统架构;

图6示意性示出了根据本公开另一实施例的获取数据库的性能消耗量的流程图;

图7示意性示出了根据本公开另一实施例的数据表容量预警的装置的结构框图;

图8示意性示出了图7所示的数据表容量预警的装置进行数据表容量预警的流程图;

图9示意性示出了根据本公开另一实施例的数据表容量预警的装置的框图;以及

图10示意性示出了适于实现根据本公开实施例的数据表容量预警方法的计算机系统的方框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

数据表容量可以作为评估数据表性能的重要指标。具体地,可以通过对数据库中的全部或部分数据表(例如,热表)的数据量变化进行评估,对数据表、数据表关联的SQL运行对数据库造成的影响进行比较分析,对数据库性能进行监控。

本公开实施例提供了一种可以事前评估数据表容量变化的数据表容量预警的方法和装置。该方法可以包括首先获取数据库的性能消耗量,其中,数据库中包括M个第一数据表,M为大于或等于1的整数。然后基于数据库的性能消耗量和数据库的性能告警阀值的差异,获得数据库的预估性能增长空间。接下来基于每个第一数据表的性能消耗量在数据库的性能消耗量占比以及数据库的预估性能增长空间,得到每个第一数据表的预估性能增长空间。之后可以基于每个第一数据表的数据量性能关系模型以及每个第一数据表的预估性能增长空间,确定每个第一数据表的数据量报警指标;其中,数据量性能关系模型用于表征对应的第一数据表的数据量与第一数据表的性能消耗量之间的映射关系。

根据本公开的实施例,可以事先得到每个热表的数据量报警指标(例如,每个数据表允许的数据量增长量、或者每个数据表的数据量上限等),从而可以对数据表性能变化情况进行预先评估,在可能出现性能故障时提前报警。进而避免数据表的数据量增长带来的性能消耗过度,引发数据库运行风险。

需要说明的是,本公开实施例确定的数据表容量预警的方法和装置可用于金融领域,也可用于除金融领域之外的任意领域,本公开对应用领域不做限定。

图1示意性示出了根据本公开实施例的数据表容量预警的方法100的流程图。如图1所示,方法100可以包括操作S110~操作S140。

图2示意性示出了根据本公开实施例的数据库与数据表的关系示意。以图2中的数据库20为例对方法100说明如下。

在操作S110,获取数据库20的性能消耗量,其中,数据库20中包括M个第一数据表(例如,图2所示的第一数据表1~m),M为大于或等于1的整数。数据库的性能消耗量例如可以以CPU的消耗占比、或者IO吞吐量来表示。

在一个实施例中,该第一数据表1~m为该数据库20中所有的数据表。在另一个实施例中,该该第一数据表1~m该数据库20中根据热表筛选条件筛选出来的部分数据表。具体而言,可以通过设置热表筛选条件(例如,查询频率达到预定值),将查询频繁的数据表(简称为,热表)筛选出来。由于数据库的性能通常受热表的影响较大,在一些实施例中可以仅监控数据库20中的热表。

在操作S120,基于数据库20的性能消耗量和数据库20的性能告警阀值的差异,获得数据库20的预估性能增长空间Qc。

在操作S130,基于每个第一数据表的性能消耗量在数据库的性能消耗量占比以及数据库的预估性能增长空间,得到每个第一数据表的预估性能增长空间。

在一个实施例中,每个第一数据表的性能消耗量在数据库的性能消耗量占比可以是根据长期经验积累确定的。

在另一个实施例中,在获取数据库的性能消耗量时,可以通过分别获取到M个第一数据表各自的性能消耗量,然后通过加和得到数据库的性能消耗量。在这种情况下,通过M个第一数据表各自的性能消耗量与数据库的性能消耗量的比值可以得到相应的占比。

在再一个实施例中,可以在读取到每个第一数据表的数据量后,通过第一数据表的数据量性能关系模型计算得到每个第一数据表的性能消耗量。其中,数据量性能关系模型用于表征对应的第一数据表的数据量与第一数据表的性能消耗量之间的映射关系。进而通过M个第一数据表各自的性能消耗量与数据库的性能消耗量的比值可以得到相应的占比。其中,图2中第一数据表1的数据量性能关系模型可以表示为Y1=f(x1),其中,Y1为第一数据表1的性能消耗量,x1是第一数据表1的数据量。其余第一数据表2~m的数据量性能关系模型类似。

在操作S140,基于每个第一数据表的数据量性能关系模型以及每个第一数据表的预估性能增长空间,确定每个第一数据表的数据量报警指标。具体地可以得到如下所示的一组等式:

ΔY1=f(x1’)-f(x1);

ΔY2=f(x2’)-f(x2);

ΔY3=f(x3’)-f(x3);

……

ΔYm=f(xm’)-f(xm);

(1)

在式(1)中有m个等式,其中,ΔY1~ΔYm表示第一数据表1~m各自的预估性能增长空间,可以通过操作S130确定出。

x1~xm为第一数据表1~m各自的数据量,可以从数据库中直接读出。

映射关系f()可以是预先构建的数据量性能关系模型。

从而,求解式(1)中每一个等式,即可得到第一数据表1~m各自的数据量预估最大值x1’~xm’。

在一些实施例中,可以以该x1’~xm’为第一数据表1~m各自的数据量报警指标。在另一些实施例中,可以在该x1’~xm’计算出第一数据表1~m各自的数据量增量,以此作为第一数据表1~m各自的数据量报警指标。在另一些实施例中,可以基于该x1’~xm’,再辅以一定的安全裕量处理,得到第一数据表1~m各自的数据量报警指标。

根据本公开的实施例,在操作S140之前还可以预先构建每个第一数据表的数据量性能关系模型。具体模型构建过程可以是首先获取S个时刻第一数据表的数据量,得到S个数据量样本数据,其中,S为大于或等于2的整数;同时获取S个时刻第一数据表的性能消耗量,得到S个性能消耗量样本数据。然后基于S个数据量样本数据和S个性能消耗量样本数据,拟合得到数据量性能关系模型。

例如,可以在一段时间内按照一定的频率持续采集一个第一数据表的数据量和性能消耗量(比如两年内每一分钟采集一次)。从而获得大量的样本数据,然后对样本数据进行拟合。在一个实施例中,数据量性能关系模型为线性关系模型,例如对第一数据表1有X1*a+b=Y1。

对第一数据表的性能消耗量的采集过程,在一个实施例中可以是设置有专门处理并输出每个数据表的性能消耗量的系统,从而可以从中直接采集。在另一些实施例中,可以针对每个数据表获取关联的查询语句(或者热查询语句),然后根据这些关联的查询语句的性能消耗量来统计每个数据表的性能消耗量。

图3示意性示出了根据本公开一实施例的操作S110中获取数据库的性能消耗量的流程图。

如图3所示,根据本公开实施例操作S110可以包括操作S311~操作S313。继续结合表2的示例进行说明如下。

在操作S311,获取M个第一数据表的信息,例如数据表的表名。

在操作S312,获取每个第一数据表的性能消耗量。

图4示意性示出了根据本公开实施例的一个数据表的性能消耗量的获取过程示意。

具体地,图4中以第一数据表1为例进行示例。首先基于第一数据表1的信息,从数据库20中查找与第一数据表1关联的N个第一查询语句(图中所示的11~1n)的信息,其中,N为大于或等于1的整数。然后分别获取第一查询语句11~1n的性能消耗量T11~T1n。接下来基于N个第一查询语句各自的性能消耗量的汇总,得到第一数据表的性能消耗量,例如Y1==T11+T12+……+T1n。

在一个实施例中,该N个第一查询语句可以是与第一数据表关联的所有查询语句。在另一个实施例中,该第一查询语句可以是与第一数据表关联的符合热查询条件的查询语句,例如通过热查询条件(例如,查询频率达到阈值频率)筛选出查询频率高的查询语句。由于热查询语句使用频率高,性能消耗在数据表的性能消耗中也占据了决定性地位,因此也可以通过这些热查询语句的性能消耗量的汇总来近似计算一个数据表的性能消耗量。

第一查询语句的性能消耗量例如可以是当前或者一段时间内,该第一查询语句在单位时间内(例如,1s、或者1min)的平均CPU占比、或者IO占比。

然后在操作S313,基于M个第一数据表各自的性能消耗量的汇总,得到数据库20的性能消耗量。在一个实施例中,参考图2,数据库20的性能消耗量可以是SC=Y1+Y2+Y3+...+Ym。在另一个实施例中,如果M个第一数据表仅为热时,也可以以Y1+Y2+Y3+...+Ym来近似估算数据库20的性能消耗量。

图5示意性示出了根据本公开另一实施例的数据表容量预警的系统架构500。

如图5,该系统架构500可以包括生产环境510中运行的生产数据库51、以及在测试环境中运行的测试数据库52、以及监控设备53。其中,监控设备53分别与生产数据库51和测试数据库52连接,用于对数据表容量进行监控。其中测试数据库52为在测试环境下运行的与生产数据库51具有映射关系的数据库。其中,测试数据库51和测试数据库52的基础数据一致,基础数据包括测试数据库52和生产数据库51所包括的数据表、以及每个数据表的数据量。

该生产数据库51例如可以是前述的数据库20。本实施例中,为了与测试数据库区分开来,命名为生产数据库。生产数据库51可以在生产环境下与各种终端设备(图中示例的511、512、513)连接,根据用户在终端设备511、512、513中的数据读写操作,进行数据的读写等。

测试数据库52可以与测试终端521连接。测试人员可以使用测试终端521操作测试数据库52,测试可能要投入生产的数据库版本或者各种新的查询语句。

根据该实施例,在操作S110中获取数据库的性能消耗量时,不仅考虑生产数据库51在生产环境510下的性能消耗量(可以称之为生产性能消耗量SC),还可以根据测试环境520下测试数据库52来计算该生产数据库51在未来会增加的性能消耗量(例如,未来增量性能消耗量CC)。之所以可以用测试数据库52来计算该生产数据库51未来会增加的性能消耗量,是由于任何一个查询语句在正式投产运行之前会必须在测试环境520下先试运行。因此测试环境520中在测试数据库52中运行的与生产环境510中不同的查询语句所带来的性能消耗,实质上构成了该生产数据库51未来会增加的性能消耗量。

图6示意性示出了根据本公开另一实施例的S110中获取数据库的性能消耗量的流程图。

如图6所示,结合图5,根据本公开实施例操作S110可以包括操作S611~操作S613。以下结合图5对图6所示意的流程进行示例性说明。

在操作S611,获取数据库(例如,生产数据库51)在生产环境510下运行时的生产性能消耗量SC,具体过程可以参考图3中描述的数据库20的性能消耗量的获取。

在操作S612,获取生产数据库51的未来增量性能消耗量CC。具体地,首先确定在测试环境520下与生产数据库51具有映射关系的测试数据库52。然后获取测试数据库52的增量性能消耗量,其中,增量性能消耗量为测试数据库的性能消耗中由与数据库的生产性能消耗量的诱发因素不同的部分所引起的性能消耗量。以增量性能消耗量表征生产数据库51的未来增量性能消耗量CC。

具体地,操作S612中可以首先获取M个第一数据表Y1~Ym的信息,例如将生产环境下生产数据库51中的M个第一数据表的信息直接获取到。然后获取在测试环境下与第一数据表关联的R个第二查询语句的信息,其中,第二查询语句为在测试环境下运行但尚未投入生产生产环境运营的查询语句。接下来,获取每个第二查询语句的性能消耗量。最后,基于R个第二查询语句各自的性能消耗量的汇总,得到第一数据表的增量性能消耗量。

接下来在操作S613,基于数据库的生产性能消耗量SC和未来增量性能消耗量CC的汇总,得到数据库的性能消耗量。例如Q=SC+CC。以此方式,本公开实施例通过生产运营数据库来评估存量性能损耗,通过测试数据库来评估增量损耗,结合测试数据和生产数据建立计算模型,在评估过程中充分考虑测试数据(即新的版本下的数据库运行状态)可能对数据库造成的影响,做到更为提前地对数据表容量进行预警。

图7示意性示出了根据本公开一实施例的数据表容量预警的装置700的结构框图。

如图7所示,根据本公开实施例该装置700可以包括生产数据监控模块001、热表获取模块002、测试数据监控模块003、生产SQL集合获取模块004、测试SQL集合获取模块005、存量性能损耗计算模块006、增量性能损耗计算模块007、数据量性能关系模型计算模块008、以及热表容量展示模块009。

其中,生产数据监控模块001、生产SQL集合获取模块004、以及存量性能损耗计算模块006用于生产运行数据获取分析。测试数据监控模块003、测试SQL集合获取模块005、以及增量性能损耗计算模块007用于测试数据获取分析。热表获取模块002和数据量性能关系模型计算模块008用于热表分析和运算。热表容量展示模块009用于热表数据量展示预警。

具体地,生产数据监控模块001用于在生产运营数据库服务器上捕获热表信息。

热表获取模块002用于从001获取热表数据,同时将热表数据提供给003模块。

测试数据监控模块003用于在测试数据库服务器上捕获热表信息(热表信息来源是002->001)。

生产SQL集合获取模块004,获取来源是从001模块中抓取到的热表清单,再通过热表的清单去获取每张热表对应的热SQL(即频繁执行的SQL)。

测试SQL集合获取模块005,此处只提取测试上新增的SQL信息,而存量的SQL信息以模块004的生产运行SQL信息为准。

存量性能损耗计算模块006,用于计算存量的生产运行SQL性能消耗,即每张热表的每条SQL消耗的性能损耗占比。计算公式是,从004模块获取的生产存量SQL集合,假设热表1包括n条关联SQL语句,每条SQL的性能消耗量为T11到T1n,热表1的存量性能消耗量为Y1,则:Y1=T11+T12+……+T1n。共有M张热表,则数据库的总性能损耗SC=Y1+Y2+……+Ym。(此处可以暂时忽略热表之外的其他SQL对性能的消耗,因为后续008模块计算公式的相减会直接抵消此部分性能消耗,只计算性能消耗的变化)

增量性能损耗计算模块007用于计算测试数据库SQL性能消耗,即每张002模块获取的热表在测试数据库的新增性能消耗。计算公式是:从005模块获取的测试新增SQL集合,假设热表Tc1包括p条关联SQL语句,每条SQL的性能消耗量为Tc11到Tc1p,热表Tc1的增量性能消耗量为Z1,则:Z1=Tc11+Tc12+……+Tc1p。共有M张热表,则数据库的总增量性能消耗CC=Z1+Z2+……+Zm。(此处可以暂时忽略热表之外的其他SQL对性能的消耗,因为后续008模块计算公式的相减会直接抵消此部分性能消耗,只计算性能消耗的变化)

数据量性能关系模型计算模块008用于根据001获取的每张热表的数据量与006模块计算出的性能消耗量,在积累一定时间的数据样本后,形成线性模型,假设T1表的数据量为X1,性能消耗量为Y1,通过下面的公式来标示X1和Y1的线性关系:X1*a+b=Y1,通过数据样本的线性拟合运算,可以计算出a和b的值。对于m张热表,可以计算出每一张热表的a,b值(注意此处的a,b值对于每张热表是不同的。)此模型是我们进行数据量预估的基础。在此基础上,我们假设数据库达到性能阀值,所需要增加的性能消耗为QC,QC可以通过性能告警阈值TC减去系统性能损耗来计算。

计算公式为:

SC(006模块所求结果)+CC(007模块所求结果)+BC(基础非热表性能消耗)=当前性能消耗; (2)

SC+CC+BC+XC(预估性能增长量)=性能告警阀值 (3)

由于当前性能消耗和性能告警阀值都是已知数,因此式(2)和式(3)相减,可求得Qc(预估性能增长量)

该增长量与SC具有比例关系,按照Y1……Ym在SC中所占的比例,可以相应计算出响应的Q1……Qm,再将Q1……Qm代入线性公式(4):

Xq1*a+b=Q1

……

Xqm*a+b=Qm

(4)

可以计算出每张热表的数据量增长Xq1……Xqm。对于整个数据库来说,X1+Xq1……Xm+Xqm,即是数据库总体的表数据容量增长空间。

热表容量展示模块009,用于展示和预警模型分析计算所得的容量信息。

图8示意性示出了图7所示的数据表容量预警的装置进行数据表容量预警的流程图。

如图8所示,该流程可以包括步骤S801~步骤S812。

步骤S801,生产数据监控模块001监控开始,从生产运行数据库获取运行信息。

步骤S802,热表获取模块002根据生产运行数据库获取的信息,生成生产热表清单

步骤S803,测试数据监控模块003将热表清单在测试数据库中匹配,获取测试数据库中热表相关的SQL。

步骤S804,生产SQL集合获取模块004根据热表清单,在生产运行库中匹配SQL

步骤S805,测试SQL集合获取模块005根据热表清单,在测试数据库中匹配SQL,根据第4步运行的结果,区分存量SQL(生产运行库中已有的)和增量SQL(生产运行库中没有的)

步骤S806,存量性能损耗计算模块006计算存量SQL的性能消耗

步骤S807,增量性能损耗计算模块007计算增量SQL的性能消耗

步骤S808,数据量性能关系模型计算模块008根据数据量与存量SQL性能消耗的数据样本,得到每张热表的数据量增长线性模型。

步骤S809,数据量性能关系模型计算模块008根据性能告警阈值和当前性能消耗量,计算热表性能容量差值。

步骤S810,数据量性能关系模型计算模块008根据热表性能容量差值,以及线性模型,计算热表数据容量差值。

步骤S811,数据量性能关系模型计算模块008根据热表数据性能容量差值,和热表数据性能容量基础值(从生产库运行信息中可以得到),计算热表的数据量的容量,以满足性能阈值要求。

步骤S812,热表容量展示模块009展示热表数据量容量及预警信息。

以下结合金融场景中的某个电子银行数据库,详细阐述本公开实施例的结合测试数据和生产数据建立计算模型的实施流程进行示例性说明。

首先获取生产环境下数据库中数据量和性能消耗量的样本信息。

然后根据该样本中提取的热表清单,分别在生产环境下的数据库(简称生产数据库)和测试数据库匹配SQL。例如,假设有1张热表,生产数据库中匹配到10条热表相关SQL,作为存量集合。测试数据库中匹配到3条热表相关SQL,作为增量集合。

然后,分别计算生产数据库和测试数据库的热表性能消耗量。例如10条SQL的CPU使用率占比分别为{2%,3%,2%,1%,5%,15%,4%,3%,5%,10%},则SC值为50%。

接下来,3条测试SQL的使用率占比分别为{3%,1%,1%},则CC值为5%。

接下来,根据表数据量变化曲线与性能消耗曲线得到的线性模型,此处假设a为0.000002,b为0.3,则公式为:0.000002*表数据量+0.3=性能消耗。此时当前表数量100000条,性能消耗为50%。

假设此时当前性能消耗总量为60%,则基础消耗占比为60%-50%=10%.假设阈值告警值为75%,则容量差值空间为(75-10-50-5)%=10%10%+50%即为热表可容忍的性能消耗量。代入上述线性公式,计算表增长量区间为150000条。因此当表数据量增长超过150000条时,超过数据表的报警指标,系统将会预警。

本实施例对数据表性能变化的根源:SQL语句进行逐条的性能容量评估,再通过比例运算形成一个总体的数据表损耗计算公式,通过生产运营数据库来评估存量性能损耗,通过测试数据库来评估增量损耗,最终通过性能损耗的阀值,来倒推计算数据表的容量阀值的方法和手段。从而解决事前预测数据表容量的技术问题。

图9示意性示出了根据本公开另一实施例的数据表容量预警的装置900的框图。

如图9所示,根据本公开实施例的数据表容量预警的装置900可以包括性能获取模块910、第一预估模块920、第二预估模块930以及报警指标确定模块940。根据本公开另一实施例,该装置900还可以包括模型构建模块950。该装置900可以用于执行本公开各个实施例所描述的数据表容量预警的方法。

性能获取模块910用于获取数据库的性能消耗量,其中,数据库中包括M个第一数据表,M为大于或等于1的整数。

第一预估模块920用于基于数据库的性能消耗量和数据库的性能告警阀值的差异,获得数据库的预估性能增长空间。

第二预估模块930用于基于每个第一数据表的性能消耗量在数据库的性能消耗量占比以及数据库的预估性能增长空间,得到每个第一数据表的预估性能增长空间。

报警指标确定模块940用于基于数据库中每个第一数据表的数据量性能关系模型以及数据库的预估性能增长空间,确定每个数据表的数据量报警指标。其中,数据量性能关系模型用于表征对应的第一数据表的数据量与第一数据表的性能消耗量之间的映射关系。数据库的预估性能增长空间是基于M个第一数据表各自的性能消耗量的增长空间的汇总而得到的。

模型构建模块950用于构建每个第一数据表的数据量性能关系模型,包括获取S个时刻第一数据表的数据量,得到S个数据量样本数据,其中,S为大于或等于2的整数;获取S个时刻第一数据表的性能消耗量,得到S个性能消耗量样本数据;以及基于S个数据量样本数据和S个性能消耗量样本数据,拟合得到数据量性能关系模型。

根据本公开的一些实施例,性能获取模块910具体用于获取M个所述第一数据表的信息,获取每个所述第一数据表的性能消耗量,以及基于M个所述第一数据表各自的性能消耗量的汇总,得到所述数据库的性能消耗量。其中,获取每个所述第一数据表的性能消耗量包括:基于所述第一数据表的信息,查找与所述第一数据表关联的N个第一查询语句的信息,其中,N为大于或等于1的整数;获取每个所述第一查询语句的性能消耗量;以及基于N个所述第一查询语句各自的性能消耗量的汇总,得到所述第一数据表的性能消耗量。

根据本公开的另一些实施例,性能获取模块910具体用于获取所述数据库在生产环境下运行时的生产性能消耗量;获取所述数据库的未来增量性能消耗量;以及基于所述数据库的生产性能消耗量和未来增量性能消耗量的汇总,得到所述数据库的性能消耗量。其中,获取所述数据库的未来增量性能消耗量,包括确定在测试环境下与所述数据库具有映射关系的测试数据库,其中,所述测试数据库和所述数据库的基础数据一致,所述基础数据包括所述测试数据库和所述数据库所包括的数据表、以及每个数据表的数据量;获取所述测试数据库的增量性能消耗量,其中,所述增量性能消耗量为所述测试数据库的性能消耗中由与所述数据库的生产性能消耗量的诱发因素不同的部分所引起的性能消耗量;以及以所述增量性能消耗量表征所述数据库的未来增量性能消耗量。

根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,生产数据监控模块001、热表获取模块002、测试数据监控模块003、生产SQL集合获取模块004、测试SQL集合获取模块005、存量性能损耗计算模块006、增量性能损耗计算模块007、数据量性能关系模型计算模块008、热表容量展示模块009、性能获取模块910、第一预估模块920、第二预估模块930、报警指标确定模块940、以及模型构建模块950中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,生产数据监控模块001、热表获取模块002、测试数据监控模块003、生产SQL集合获取模块004、测试SQL集合获取模块005、存量性能损耗计算模块006、增量性能损耗计算模块007、数据量性能关系模型计算模块008、热表容量展示模块009、性能获取模块910、第一预估模块920、第二预估模块930、报警指标确定模块940、以及模型构建模块950中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,生产数据监控模块001、热表获取模块002、测试数据监控模块003、生产SQL集合获取模块004、测试SQL集合获取模块005、存量性能损耗计算模块006、增量性能损耗计算模块007、数据量性能关系模型计算模块008、热表容量展示模块009、性能获取模块910、第一预估模块920、第二预估模块930、报警指标确定模块940、以及模型构建模块950中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图10示意性示出了适于实现根据本公开实施例的数据表容量预警方法的计算机系统的方框图。图10示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图10所示,根据本公开实施例的计算机系统1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在RAM 1003中,存储有计算机系统1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。

根据本公开的实施例,计算机系统1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。计算机系统1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。

根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。

本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的图像识别方法。

在该计算机程序被处理器1001执行时,执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。

在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。

根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

相关技术
  • 数据表容量预警的方法、装置、系统和介质
  • 生成数据表关系图的方法和装置、计算机系统和存储介质
技术分类

06120112941806