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

技术领域

本申请涉及计算机技术领域,具体而言,涉及一种数据库脚本执行预测方法及装置。

背景技术

目前,金融系统经常需要针对数据的异常进行修复,需要执行对应的SQL数据库脚本,但金融行业数据库数据量很大,且时时刻刻都有大流量的请求访问,而且场景错综复杂,如果SQL执行的时间点评估不充分,及有可能对数据库性能造成影响,从而影响到外部请求流量,造成生产事故。比如场景的导致表死锁,更新的时候出现冲突等等。可见,现有方法无法对SQL脚本可执行的时机点进行预估,从而无法预知脚本执行对系统的影响,无法及时避免出现生产事故。

发明内容

本申请实施例的目的在于提供一种数据库脚本执行预测方法及装置,能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

本申请实施例第一方面提供了一种数据库脚本执行预测方法,包括:

获取待执行的目标SQL脚本;

当所述目标SQL脚本通过审核时,对所述目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;

根据所述数据量检测结果计算数据库压力比;

根据所述数据库压力比对所述目标SQL脚本进行预执行预测,得到执行时的影响性画像;

根据所述影响性画像预估所述目标SQL脚本的可执行时间点;

输出所述影响性画像和所述可执行时间点。

在上述实现过程中,该方法可以优先获取待执行的目标SQL脚本;并在目标SQL脚本通过审核时,对目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;然后,根据数据量检测结果计算数据库压力比;并根据数据库压力比对目标SQL脚本进行预执行预测,得到执行时的影响性画像;再根据影响性画像预估目标SQL脚本的可执行时间点;最后,再输出影响性画像和可执行时间点。可见,该方法能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

进一步地,所述对所述目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果,包括:

对所述目标SQL脚本进行解析,得到脚本信息;

根据所述脚本信息获取DB信息、表信息以及脚本执行时间点;

根据所述DB信息和所述表信息提取关键字;

根据所述脚本执行时间点和所述关键字进行基于执行时间点的请求数据量检测,得到数据量检测结果。

进一步地,所述根据所述数据量检测结果计算数据库压力比,包括:

根据所述数据量检测结果确定在所述脚本执行时间点处的跑批处理作业;

根据所述跑批处理作业监控数据库性能;

根据所述数据库性能计算数据库压力比。

进一步地,所述根据所述数据库压力比对所述目标SQL脚本进行预执行预测,得到执行时的影响性画像,包括:

根据所述数据库压力比预测所述目标SQL脚本的执行时间长短和影响性能波动范围;

根据所述执行时间长短和影响性能波动范围生成影响性画像。

进一步地,所述方法还包括:

根据所述影响性画像判断所述目标SQL脚本在所述脚本执行时间点时是否适合执行;

如果否,则执行所述的根据所述影响性画像预估所述目标SQL脚本的可执行时间点。

本申请实施例第二方面提供了一种数据库脚本执行预测装置,所述数据库脚本执行预测装置包括:

获取单元,用于获取待执行的目标SQL脚本;

检测单元,用于当所述目标SQL脚本通过审核时,对所述目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;

计算单元,用于根据所述数据量检测结果计算数据库压力比;

预测单元,用于根据所述数据库压力比对所述目标SQL脚本进行预执行预测,得到执行时的影响性画像;

预估单元,用于根据所述影响性画像预估所述目标SQL脚本的可执行时间点;

输出单元,用于输出所述影响性画像和所述可执行时间点。

在上述实现过程中,该装置可以通过获取单元获取待执行的目标SQL脚本;通过检测单元在目标SQL脚本通过审核时,对目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;通过计算单元来根据数据量检测结果计算数据库压力比;通过预测单元来根据数据库压力比对目标SQL脚本进行预执行预测,得到执行时的影响性画像;通过预估单元来根据所述影响性画像预估所述目标SQL脚本的可执行时间点;再通过输出单元输出所述影响性画像和所述可执行时间点。可见,该方法能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

进一步地,所述检测单元包括:

解析子单元,用于对所述目标SQL脚本进行解析,得到脚本信息;

获取子单元,用于根据所述脚本信息获取DB信息、表信息以及脚本执行时间点;

提取子单元,用于根据所述DB信息和所述表信息提取关键字;

检测子单元,用于根据所述脚本执行时间点和所述关键字进行基于执行时间点的请求数据量检测,得到数据量检测结果。

进一步地,所述计算单元包括:

确定子单元,用于根据所述数据量检测结果确定在所述脚本执行时间点处的跑批处理作业;

监控子单元,用于根据所述跑批处理作业监控数据库性能;

计算子单元,用于根据所述数据库性能计算数据库压力比。

进一步地,所述预测单元包括:

预测子单元,用于根据所述数据库压力比预测所述目标SQL脚本的执行时间长短和影响性能波动范围;

生成子单元,用于根据所述执行时间长短和影响性能波动范围生成影响性画像。

进一步地,所述数据库脚本执行预测装置还包括:

判断单元,用于根据所述影响性画像判断所述目标SQL脚本在所述脚本执行时间点时是否适合执行;

所述预估单元,具体用于在所述目标SQL脚本在所述脚本执行时间点时不适合执行时,根据所述影响性画像预估所述目标SQL脚本的可执行时间点。

本申请实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例第一方面中任一项所述的数据库脚本执行预测方法。

本申请实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例第一方面中任一项所述的数据库脚本执行预测方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种数据库脚本执行预测方法的流程示意图;

图2为本申请实施例提供的另一种数据库脚本执行预测方法的流程示意图;

图3为本申请实施例提供的一种数据库脚本执行预测装置的结构示意图;

图4为本申请实施例提供的另一种数据库脚本执行预测装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

实施例1

请参看图1,图1为本实施例提供了一种数据库脚本执行预测方法的流程示意图。其中,该数据库脚本执行预测方法包括:

S101、获取待执行的目标SQL脚本。

S102、当目标SQL脚本通过审核时,对目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果。

S103、根据数据量检测结果计算数据库压力比。

S104、根据数据库压力比对目标SQL脚本进行预执行预测,得到执行时的影响性画像。

S105、根据影响性画像预估目标SQL脚本的可执行时间点。

S106、输出影响性画像和可执行时间点。

本实施例中,该方法可以通过一个DB脚本执行前的探测检查JAR等中间件来加以实施。

在金融领域,经常需要对使用的系统进行数据检测,以便对有异常的数据进行修复。目前较为常用的修复方法,就是通过执行对应的SQL数据库脚本来进行相应修复。

但是,在实践中却得知,金融系统使用的数据库中的数据量往往都很大,且时时刻刻都有大流量的请求访问,同时该些数据的应用场景错综复杂。因此,何时在执行对应的SQL成为了一个问题。因为,如果SQL执行的时间点评估不充分,及有可能对数据库的性能造成不必要的影响,从而影响到外部请求流量,甚至会造成生产事故(如场景的导致表死锁,更新的时候出现冲突等等)。

基于上述的技术问题,该方法提出粗了一种数据库SQL脚本执行预测的方法,该方法能够对SQL脚本可执行的时机点进行预估,从而准确地判断对应的可执行时间节点,以便于开发人员更好地评估对修复过程对系统的影响,进而能够有效避免出现生产事故。

本实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。

在本实施例中,该方法的执行主体还可以为智能手机、平板电脑等智能设备,对此本实施例中不作任何限定。

可见,实施本实施例所描述的数据库脚本执行预测方法,能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

实施例2

请参看图2,图2为本实施例提供了一种数据库脚本执行预测方法的流程示意图。其中,该数据库脚本执行预测方法包括:

S201、获取待执行的目标SQL脚本。

S202、当目标SQL脚本通过审核时,对目标SQL脚本进行解析,得到脚本信息。

本实施例中,该方法需要DBA对目标SQL脚本进行审核,以判断其是否能够使用。

在本实施例中,数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。

在本实施例中,该方法在DBA审核完要执行的SQL脚本后,可以根据脚本信息解析计算采集所需要探测的DB信息、表信息、需要执行的时间点等,从而便于后续步骤的展开。

S203、根据脚本信息获取DB信息、表信息以及脚本执行时间点。

S204、根据DB信息和表信息提取关键字。

本实施例中,该方法能够识别出insert、update等关键字,并根据关键字和表,基于该时间点能检测DB数据库的访问请求,采集该时间点是否有大量的请求,区别更新还是查询,更新时提取对应的表名与现有的脚本SQL表名对比,是否会涉及同张表的操作来评估影响面。

在本实施例中,该方法可以基于以上步骤进行请求数据量的智能计算,并进行DB访问的均值大小判断处理,再结合系统扫描来决定是否有对应的跑批处理作业。

举例来说,当每秒访问DB的量超过一千以上,且都涉及insert或者update操作时,该方法可以基于以上数据自行判断系统正处于跑批作业处理的过程中,从而确定这个时间点不适合执行SQL脚本(原因是冲突的可能性大)。而如果访问量大多是query查询操作时,该方法则可以确定出其影响性是比较小的。

S205、根据脚本执行时间点和关键字进行基于执行时间点的请求数据量检测,得到数据量检测结果。

S206、根据数据量检测结果确定在脚本执行时间点处的跑批处理作业。

本实施例中,该方法能够基于时间点来针对DB影响性,进行智能判断和计算。

S207、根据跑批处理作业监控数据库性能。

S208、根据数据库性能计算数据库压力比。

S209、根据数据库压力比预测目标SQL脚本的执行时间长短和影响性能波动范围。

本实施例中,该方法可以使用性能监控命令(如SHOW命令)来查看链接数max_connections、用户数max_used_connections以及正在运行的线程PROCESSLIST等。从而以此来监控DB的性能占用耗损比率。可见,该方法可以对数据库性能进行监控,并实时地、智能地判断其影响比率大小。

本实施例中,该方法还可以对数据库的bin_log日志情况进行跟踪。

举例来说:该方法可以基于DB磁盘空间,识别当前点的写库操作进行智能计算压力比,并在该压力比远小于预设比例时,认为其写压力并不是很大,因此可以自行判断该时间点适合可执行脚本。具体的,该方法可以基于压力比、DB条数,自动进行可执行时间的预估计算。

S210、根据执行时间长短和影响性能波动范围生成影响性画像。

S211、根据影响性画像判断目标SQL脚本在脚本执行时间点时是否适合执行,若是,则结束本流程;若否,则执行步骤S212~S213。

S212、根据影响性画像预估目标SQL脚本的可执行时间点。

本实施例中,该方法可以基于脚本的SQL去探测预访问DB。同时,结合现有的表数据统计,数据库虚机资源等进行综合评估。

举例来说,该方法可以评估SQL执行需要多久、影响性能波动范围是多大、影响条数是多少、会不会中间出现回退或者异常以及该执行的时间点是否合适等。

S213、输出影响性画像和可执行时间点。

本实施例中,该方法可以结合以上步骤评估的影响能产生对应的画像或者弹窗提示给对应的相关人员。

举例来说,在某天6点时执行了更新脚本,但此时恰好有笔请求进入,从而导致锁表冲突,知道后续整个停数据库恢复时,生产已经被影响了近半个小时了。而在使用该方法之后,该方法能够提前结合生产实际的流量来预判定该脚本的执行点是否此时不适合,需要往后延多久等内容,并假设如果执行,预计会出现什么样的状况等。

由此可见,通过实施该方法,能够让DBA和开发人员了解个大概,并方便其预判该脚本是否适合执行。

实施这种实施方式,该方法能够对SQL脚本可执行的时机点进行预估,从而准确的判断对应的可执行时间节点,以使开发人员能够更好的评估对系统的影响,避免出现生产事故,提升系统可靠性。

本实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。

在本实施例中,该方法的执行主体还可以为智能手机、平板电脑等智能设备,对此本实施例中不作任何限定。

可见,实施本实施例所描述的数据库脚本执行预测方法,能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

实施例3

请参看图3,图3为本实施例提供的一种数据库脚本执行预测装置的结构示意图。如图3所示,该数据库脚本执行预测装置包括:

获取单元310,用于获取待执行的目标SQL脚本;

检测单元320,用于当目标SQL脚本通过审核时,对目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;

计算单元330,用于根据数据量检测结果计算数据库压力比;

预测单元340,用于根据数据库压力比对目标SQL脚本进行预执行预测,得到执行时的影响性画像;

预估单元350,用于根据影响性画像预估目标SQL脚本的可执行时间点;

输出单元360,用于输出影响性画像和可执行时间点。

本实施例中,对于数据库脚本执行预测装置的解释说明可以参照实施例1或实施例2中的描述,对此本实施例中不再多加赘述。

可见,实施本实施例所描述的数据库脚本执行预测装置,能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

实施例4

请参看图4,图4为本实施例提供的一种数据库脚本执行预测装置的结构示意图。如图4所示,该数据库脚本执行预测装置包括:

获取单元310,用于获取待执行的目标SQL脚本;

检测单元320,用于当目标SQL脚本通过审核时,对目标SQL脚本进行基于执行时间点的数据量检测,得到数据量检测结果;

计算单元330,用于根据数据量检测结果计算数据库压力比;

预测单元340,用于根据数据库压力比对目标SQL脚本进行预执行预测,得到执行时的影响性画像;

预估单元350,用于根据影响性画像预估目标SQL脚本的可执行时间点;

输出单元360,用于输出影响性画像和可执行时间点。

作为一种可选的实施方式,检测单元320包括:

解析子单元321,用于对目标SQL脚本进行解析,得到脚本信息;

获取子单元322,用于根据脚本信息获取DB信息、表信息以及脚本执行时间点;

提取子单元323,用于根据DB信息和表信息提取关键字;

检测子单元324,用于根据脚本执行时间点和关键字进行基于执行时间点的请求数据量检测,得到数据量检测结果。

作为一种可选的实施方式,计算单元330包括:

确定子单元331,用于根据数据量检测结果确定在脚本执行时间点处的跑批处理作业;

监控子单元332,用于根据跑批处理作业监控数据库性能;

计算子单元333,用于根据数据库性能计算数据库压力比。

作为一种可选的实施方式,预测单元340包括:

预测子单元341,用于根据数据库压力比预测目标SQL脚本的执行时间长短和影响性能波动范围;

生成子单元342,用于根据执行时间长短和影响性能波动范围生成影响性画像。

作为一种可选的实施方式,数据库脚本执行预测装置还包括:

判断单元370,用于根据影响性画像判断目标SQL脚本在脚本执行时间点时是否适合执行;

预估单元350,具体用于在目标SQL脚本在脚本执行时间点时不适合执行时,根据影响性画像预估目标SQL脚本的可执行时间点。

本实施例中,对于数据库脚本执行预测装置的解释说明可以参照实施例1或实施例2中的描述,对此本实施例中不再多加赘述。

可见,实施本实施例所描述的数据库脚本执行预测装置,能够对SQL脚本可执行的时机点进行预估,从而能够预知脚本执行对系统的影响,进而及时避免出现生产事故,提升系统可靠性。

本申请实施例提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例1或实施例2中的数据库脚本执行预测方法。

本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例1或实施例2中的数据库脚本执行预测方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种脚本执行过程中图像匹配的方法及装置
  • 一种脚本执行方法及装置
  • 一种测试脚本的生成和执行方法及装置
  • 一种控制批量执行脚本的方法及装置
  • 一种脚本加密方法、脚本解密运行方法和相关装置
  • 一种数据库脚本执行处理方法及装置
  • 数据库脚本执行方法、装置、存储介质及电子设备
技术分类

06120116459495