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

基于关键词的脚本性能校验方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:27:35


基于关键词的脚本性能校验方法、装置、设备及存储介质

技术领域

本发明涉及人工智能技术领域,尤其涉及一种基于关键词的脚本性能校验方法、装置、设备及存储介质。

背景技术

脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,脚本通常是以文本形式保存,只是在被调用时进行解释或者编译。当执行脚本时,计算机会执行一连串的操作,以实现编写者想要的某种目的或功能,例如查询语言HQL脚本(Hibernate QueryLanguage),用于实现某种数据查询或处理的脚本。

可见,脚本的性能极其重要,通常需要对脚本的性能进行校验或评估。目前,在对脚本进行性能评估时,例如在对大数据平台的HQL脚本进行性能评估时,主要依靠开发人员的经验或者运行完成后的脚本执行日志进行评估,该方案中无法在脚本运行前获得该脚本的性能情况,一旦脚本性能有问题造成资源占用过多,将对大数据平台的将资源造成浪费,甚至影响其他正常脚本的执行,因此,亟需一种新的脚本性能校验或评估方式。

发明内容

本发明提供一种基于关键词的脚本性能校验方法、装置、设备及存储介质,以解决现有技术中无法在脚本运行前获得该脚本的性能情况,一旦脚本性能有问题会导致造成资源占用过多的问题。

一种基于关键词的脚本性能校验方法,包括:

获取需要校验的脚本文件;

对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词;

根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件;

根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式;

根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息;

根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量;

输出包括所述数据量的脚本文件校验结果。

一种基于关键词的脚本性能校验装置,包括:

脚本获取模块,用于获取需要校验的脚本文件;

脚本解析模块,用于对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词;

关联条件确定模块,用于根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件;

关联方式确定模块,用于根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式;

数据信息确定模块,用于根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息;

数据量确定模块,用于根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量;

输出模块,用于输出包括所述数据量的脚本文件校验结果。

一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述脚本性能校验方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述脚本性能校验方法的步骤。

上述基于关键词的脚本性能校验方法、装置、计算机设备及存储介质所提供的一个方案中,先是获取需要校验的脚本文件;对脚本文件进行脚本关键词解析,以获取脚本文件中的脚本关键词;并基于脚本关键词获取执行该脚本文件所有的关联方式;继而根据关联数据表和关联方式确定脚本文件所用到的数据信息;根据数据信息确定执行脚本文件时所需读取的目标数据的数据量;最后输出包括数据量的脚本文件校验结果,以供用户发现脚本文件的问题。本发明中,在脚本被执行或运行前就能利用脚本文件涉及的关联方式获取到脚本文件的一些包括数据量的情况并输出,从而可以提前了解该脚本执行时的可能存在的性能情况,从解决了现有技术中,无法在脚本被执行或运行前就能获取到该脚本的性能情况,导致脚本性能有问题会导致造成资源占用过多的问题等影响脚本正常执行的情况出现,具有较高的应用场景。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例中脚本性能校验方法的一应用环境示意图;

图2是本发明一实施例中脚本性能校验方法的一流程示意图;

图3是图2步骤S20中的一个具体实施方式示意图;

图4是本发明一实施例中脚本性能校验方法的另一流程示意图;

图5是本发明实施例中确定是否存在数据发散的一具体实施方式示意图;

图6是本发明实施例中确定是否存在数据倾斜的一具体实施方式示意图;

图7是本发明一实施例中脚本性能校验方法的另一流程示意图;

图8是本发明一实施例中脚本性能校验装置的一结构示意图;

图9是本发明一实施例中计算机设备的一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明涉及人工智能技术领域,尤其涉及到脚本性能校验应用场景中,具体地,提供了一种基于关键词的脚本性能校验方法,可应用在如图1的应用环境中,其中,客户端可通过网络与服务器进行通信。该客户端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等具有显示模块的终端设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一实施例中,如图2所示,提供一种基于关键词的脚本性能校验方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:

S10:获取需要校验的脚本文件。

脚本文件是一种可执行文件,是指利用任意一种脚本语言所编写的一段可执行代码。脚本通常是以文本形式保存,只是在被调用时进行解释或者编译。其中,当执行脚本文件时,执行该脚本文件的计算机会执行脚本语言所编写一连串的操作,从而以实现脚本文件编写者想要的某种目的或功能。例如,目前常用的查询语言HQL脚本(Hibernate QueryLanguage),用于实现某种数据查询或处理的脚本。在编写者编写完脚本文件之后,需对脚本文件进行性能校验,服务器可以获取需要校验的脚本文件。

需要说明的是,本发明实施例中用于编写脚本文件的脚本语言可以是任意一种类型,例如,常见的JavaScript、VBScript、Perl、PHP、Python等语言,具体不做限定。

S20:对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词。

在获取到需要校验的脚本文件之后,在对该脚本文件进行校验时,需先对脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词。其中,脚本关键词是脚本代码中用于执行或实现某种目的、功能的语句关键词。

示例性的,若脚本文件中存在如下脚本代码:

“select form talbe_1、Join talbe_2、on talbe_1.colum1=talbe_2.colum2”;

则很明显,select form talbe_1、Join talbe_2、colum1=talbe_2.colum2均是该脚本文件中的脚本关键词。

其中,在一实施方式中,如图3所示,步骤S20中,也即所述对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词,具体包括如下步骤:

S21:接收用户的编程语言类型指示信息,所述编程语言类型指示信息用于指示所述脚本文件采用的编程语言类型。

为了便于快速获取脚本文件中的脚本关键词,可获取用户输入的编程语言类型指示信息,所述编程语言类型指示信息用于指示所述脚本文件采用的编程语言类型。在一个应用场景中,可提供一脚本性能校验界面,其中包括编程语言类型选项,用于提供给用户输入或选择编程语言类型,从而获取到对应的编程语言类型指示信息。例如,若脚本文件是利用Python所编写,此时用户可以输入Python编程语言类型指示信息,用于指示当前脚本文件采用的编程语言类型为Python。

S22:根据所述编程语言类型指示信息获取所述编程语言对应的关键词信息。

在获取到所述编程语言类型指示信息之后,便可根据所述编程语言类型指示信息获取所述编程语言对应的关键词信息。需要说明的是,不同的脚本编程语言,其所包含的脚本关键词各有不同,因此,为了快速获取脚本文件的脚本关键词,本实施方式中会根据所述编程语言类型指示信息获取所述编程语言对应的关键词信息。其中,可以从编程语言对应的所有关键词列表中获取到脚本文件所有的关键词信息。

S23:根据关键词信息对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词。

在获取所述编程语言对应的关键词信息之后,根据关键词信息对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词。例如,具体地,可对脚本文件的语句进行文本解析,并将解析结果与关键词信息进行匹配,从而获取所述脚本文件中的脚本关键词,也即,可直接将关键词信息中的关键词与脚本文件中的词进行匹配,从而确定出脚本文件中的脚本关键词。

S30:根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件。

S40:根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式。

可以理解,脚本文件执行时,会调用执行时所涉及的数据表,本方案中称为关联数据表。对获取所述脚本文件中的脚本关键词之后,会根据脚本文件中的所有脚本关键词确定该脚本文件中的各种语句所表达的含义,包括数据表的调用关系,从而确定出执行该脚本文件所需的所有关联数据表,以及所有关联数据表中各表之间的关联条件。需要说明的是,执行该脚本文件时,其调用的不同关联数据表中,通常存在关联条件,以及关联条件所反映的关联方式。

例如,如前述代码例子“select form talbe_1、Join talbe_2、on talbe_1.colum1=talbe_2.colum2”,可得到执行该脚本文件时所需关联数据表就包括talbe_1和talbe_2,其中,Join和on talbe_1.colum1=talbe_2.colum2构成关联条件。

需要说明的是,关联方式指的是关联数据表之间是否存在某种关联连接关系,关联方式可利用关联条件确定。设执行该脚本文件时所需的关联数据表包括关联数据表A和关联数据表B,关联数据表A和B分别如下所示:

关联数据表A

关联数据表B

以调用前述两个关联数据表为例,关联数据表之间的关联方式一般包括如下情况:

内连接-取两个关联数据表中都存在的数据;例如,设该脚本执行文件中有如下代码:select A.*,B*from A inner join B on A_ID=B_ID,其中,select、from、inner join和on构成完整的关联条件,A_ID=B_ID表示关联字段,该代码表示调用关联数据表A和关联数据表B进行内连接,也即关联数据表A和关联数据表B的关联方式为内连接,其中,内连接涉及的关联字段为on A_ID=B_ID,也即取ID相同的数据,其中该相同ID对应的数据在关联数据表A和关联数据表B都存在,最后的内连接结果如下表所示:

内连接

左连接-取左表的所有数据以及右表能关联上的数据;左连接属外连接的一种,例如,设该脚本执行文件中有如下代码:select A.*,B*from A left join B on A_ID=B_ID,其中,select、from、left join和on构成完整的关联条件,A_ID=B_ID表示关联字段,该代码表示调用关联数据表A和关联数据表B进行左连接,也即关联数据表A和关联数据表B的关联方式为左连接,其中,左连接涉及的关联字段为on A_ID=B_ID。

左连接

右连接-取右表的所有数据以及左表能关联上的数据;右连接属外连接的一种,例如,设该脚本执行文件中有如下代码:select A.*,B*from A right join B on A_ID=B_ID,其中,select、right join和on构成完整的关联条件,A_ID=B_ID表示关联字段,该代码表示调用关联数据表A和关联数据表B进行右连接,也即关联数据表A和关联数据表B的关联方式为右连接,其中,右连接的涉及的关联字段为A_ID=B_ID。

右连接

全连接-取两个表中任意一个表都存在的数据;例如,设该脚本执行文件中有如下代码:select A.*,B*from A full join B on A_ID=B_ID,其中,select、from、full join和on构成完整的关联条件,A_ID=B_ID表示关联字段,该代码表示调用关联数据表A和关联数据表B进行全连接,也即关联数据表A和关联数据表B的关联方式为全连接,其中,全连接涉及的关联字段为on A_ID=B_ID。

全连接

可以理解,依据关联数据表之间的各种关联方式,可清楚的知道执行脚本文件所用关联数据表的关联方式,从而知道执行该脚本文件所调用或所需的所有数据。

另外也可以看出,各关联数据表之间,不同的关联方式,将影响脚本执行时对数据表的调用或引用情况,故为了清晰知道执行脚本时的性能,需确定出该脚本中,各关联数据表之间的关联方式。需要说明的是,上述关联方式在此仅为示例性说明,关联数据表之间的关联方式还可以有其他方式,这里不一一举例。

S50:根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息。

明显,在得到脚本文件对应的所有关联数据表、以及所有关联数据表中各表之间的关联条件和关联方式之后,便可以根据关联数据表和关联方式确定该脚本文件用到的数据信息。例如该数据信息可以包括数据量、关联数据表的主外键、数值分布等数据信息。

S60:根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量。

S70:输出包括所述数据量的脚本文件校验结果。

对于步骤S60-S70,在确定脚本文件所用到的数据信息之后,便可根据该数据信息确定执行所述脚本文件时所需读取的目标数据的数据量,并输出至客户端进行显示,以便用户提前知道该脚本文件执行时的一些性能情况。例如,在前述代码例子中,关联数据表talbe_1中的数据量为一亿,关联数据表中talbe_1的数据量为5千万,talbe_1的主键为colum1,talbe_2的主键为colum2。

可见,本发明实施例提供了一种基于关键词的脚本性能校验方法,以在脚本被执行或运行前就能获取到脚本文件的一些执行性能情况,解决了现有技术中,无法在脚本被执行或运行前就能获取到该脚本的性能情况,从而造成资源浪费等影响脚本正常执行的情况出现,具有较高的应用场景。

在一实施例中,为了更全面的了解脚本文件执行时的性能情况,本发明还会进一步确定获取其他可用于了解脚本文件情况的信息。如图4所示,步骤S40之后,即根据所述关联条件对应确定所有所述关联数据表中各表之间的关联方式之后,具体包括如下步骤:

S80:根据所述关联方式确定执行所述脚本文件时的数据状态,所述数据状态包括数据倾斜状态和/或数据发散状态。

数据发散状态指的是执行脚本文件时,存在某些脚本语句,在调用关联数据表是会导致数据发散的情况,需要说明的是,如果脚本语句有问题,例如脚本中的SQL语句存在问题,那么在执行该脚本文件时,可能因为关联条件语句用不对,导致查询很久也不会得到结果来,其中的原因就包括存在数据发散的问题。举个简单例子,利用SQL查询通常会用到很多关联数据表,以为某两个关联数据表的关联条件是用户UID,实际上是订单ID,或者用户UID+日期or用户UID+其他条件。如果一开始关联数据表之间的关联条件不完整或者是错误的,这就会导致数据发散的现象。因此,通过关联方式可确定执行所述脚本文件时的数据发散状态。

在一实施例中,数据发散的现象存在多种情况,在实际应用中比较难提前发现,本发明实施例,提供了一种简单的确定其中的数据发散的方式,其中,如图5,所述数据发散状态通过如下方式确定:

S81:根据所述关联方式确定所有所述关联数据表中的数据表是否存在笛卡尔积关系。

在本发明的具体应用场景中,以笛卡尔积关系来判断是否会存在数据发散,具体地,可采用笛卡尔积来具体判断两个关联数据表之间是否存在笛卡尔积关系,可以理解,笛卡尔积是描述两个关联数据表是否存在交叉连接关系的量。

以前述关联数据表A和关联数据表B为例,若脚本文件中有如下代码:select A.*,B*from A cross join B,其中,select、from、cross join构成完整的关联条件,该代码表示调用关联数据表A和关联数据表B进行笛卡尔计算,以获取两个关联数据表的笛卡尔积,也即关联数据表A和关联数据表B的关联方式为交叉连接。

笛卡尔积

如上表所示,若执行脚本文件时,若两个关联数据表存在上述笛卡尔积关系。

S82:若确定所有所述关联数据表中各的数据表存在笛卡尔积关系,则确定执行所述脚本文件时存在数据发散;

S83:若确定所有所述关联数据表中各的数据表不存在笛卡尔积关系,则确定执行所述脚本文件时不存在数据发散。

对于步骤S82-S83,在根据所述关联方式确定所有所述关联数据表中的数据表是否存在笛卡尔积关系之后,若确定所有所述关联数据表中各的数据表存在笛卡尔积关系,则确定执行所述脚本文件时存在数据发散;反之,若确定所有所述关联数据表中各的数据表不存在笛卡尔积关系,则确定执行所述脚本文件时不存在数据发散。

可以理解的是,若两个关联数据表之间存在笛卡尔积关系,那么会导致执行该脚本文件时的数据调用计算量非常巨大。再举个简单例子,假设关联数据表1中的数据条数是216,与该关联数据表1关联的关联数据表2的数据条数是3509,则两个关联数据表总条数将达到216*3509=757944,若执行该脚本文件时,存在上述关联调用关系,当关联数据表1或关联数据表2的数据基数为高级别,例如十万级,那么调用总条数将是非常巨大的,此时说明执行该脚本文件时,存在数据发散情况。

需要说明的是,对于集群系统,一般缓存是分布式的,即不同节点负责一定范围的缓存数据。把缓存数据分散度不够,导致大量的缓存数据集中到了一台或者几台服务节点上,称为数据倾斜,也就是说,数据倾斜是由于负载均衡实施的效果不好引起的数据倾斜状态。其中,对于本发明实施例而言,数据倾斜具体指的是执行脚本文件时,对关联数据表中涉及的数据的分配处理存在过于集中的状态,执行该脚本文件时,在数据分配处理上存在不均的情况,导致某些数据处理任务量过大,有些数据处理任务数据量过小,此时会导致相应处理节点的工作量分配不均,导致这一个某个处理节点的作业执行时长远超于其他的作业。

在一实施例中,数据倾斜状态通过如下方式确定,包括如下步骤:

S84:根据所述关联方式确定执行所述脚本文件时,所述关联数据表中的数据任务处理量的分配是否存在不均现象,其中,所述不均现象包括以第一数据处理任务的任务量为第二数据处理任务的任务量的预设整数倍数。

在获取到脚本文件涉及的关联数据表的关联方式之后,可根据所述关联方式确定执行所述脚本文件时,所述关联数据表中的数据任务处理量的分配是否存在不均现象,其中,所述不均现象包括以第一数据处理任务的任务量为第二数据处理任务的任务量的预设整数倍数。第一数据处理任务和第二数据处理任务为脚本文件对于关联数据表中的数据进行处理时所分配的两个不同的任务,其中,若发现第一数据处理任务的任务量为第二数据处理任务的任务量的预设整数倍数,其中,预设整数倍可设为大于10倍,例如15倍、20倍等,说明此时数据处理过于集中,则确定执行所述脚本文件时,所述关联数据表中的数据任务处理量的分配是否存在不均现象。

S85:若确定所述关联数据表中的数据任务处理量的分配存在不均现象,则确定存在数据倾斜。

S86:若确定所述关联数据表中的数据任务处理量的分配未不存在不均现象,则确定不存在数据倾斜。

对于步骤S85-S86,根据所述关联方式确定执行所述脚本文件时,所关联数据表中的数据任务处理量的分配是否存在不均现象之后,若确定所述关联数据表中的数据任务处理量的分配存在不均现象,则确定存在数据倾斜;若确定所述关联数据表中的数据任务处理量的分配未不存在不均现象,则确定不存在数据倾斜

可见,在该实施例中,还会进一步判断是否存在数据倾斜并且提供了具体地判断方式,可见,通过本方案会进一步确定数据的倾斜、发散等状态,全面的了解了脚本的性能情况,对脚本做了较为完整的校验。

S90:输出包括所述数据量和所述数据状态的脚本文件校验结果。

在根据所述关联方式确定执行所述脚本文件时的数据状态,输出包括所述数据量和所述数据状态的脚本文件校验结果,可以使得用户更加全面地了解该脚本文件被执行后的性能表现,以便提前对脚本文件进行改善。

如图7所示,在步骤S30之后,也即根据脚本关键词确定脚本文件所用到的所有关联数据表之后,所述方法还包括如下步骤:

S100:从脚本执行日志库中获取历史脚本执行日记信息。

S110:根据所述历史脚本执行日记信息确定其他脚本文件执行时调用所述关联数据表的时长。

对于步骤S100-S110,本发明实施例会从脚本执行日志库中获取历史脚本执行日记信息,其中,该脚本执行日志库存有以往的脚本执行的执行日志,本发明实施例会从脚本执行日志库中获取历史脚本执行日记信息,并根据所述历史脚本执行日记信息确定其他脚本文件执行时调用所述关联数据表的时长。例如,若执行历史脚本1执行时调用过关联数据表A,其日志包含有调用该关联数据表的时长,则可以根据该历史脚本的脚本执行日志信息中确定出该历史脚本1执行时调用关联数据表A的时长,对于其他关联数据表,也同样可以确定。也即:本发明实施例中会根据历史脚本执行日记信息确定其他脚本文件执行时调用所有所述关联数据表的时长。例如前七天用到某张关联数据表A的脚本,用的资源是50核时,则这里对于脚本文件执行时调用关联数据表A的预估就是50核时。

S120:统计所有所述关联数据表中,每个所述关联数据表被调用的时长,以获取总时长。

在根据历史脚本执行日记信息确定其他脚本文件执行时调用所有所述关联数据表的时长,便可统计所有所述关联数据表中,每个所述关联数据表被调用的时长,以获取总时长,从而可以获取到脚本文件中,每个涉及的关联数据表被调用的时长,从而得到总时长。

S130:将所述总时长确定执行所述脚本文件的执行时长。

S140:输出包括所述数据量、所述数据状态和所述执行时长的脚本文件校验结果。

将所述总时长确定执行所述脚本文件的执行时长,并输出包括所述数据量、所述数据状态和所述执行时长的脚本文件校验结果。可见,本发明实施例中,最后输出的脚本校验结果可以如下所示:该脚本共读取一亿五千万数据,最终输出数据量小于等于五千万,不会发散、不会倾斜、执行时间预估50核时等信息。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在一实施例中,提供一种基于关键词的脚本性能校验装置,该脚本性能校验装置与上述实施例中脚本性能校验方法一一对应。如图8所示,该脚本性能校验装置包括脚本获取模块101、脚本解析模块102、关联条件确定模块103、关联方式确定模块104、数据信息确定模块105、数据量确定模块106和输出模块107。各功能模块详细说明如下:

脚本获取模块101,用于获取需要校验的脚本文件;

脚本解析模块102,用于对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词;

关联条件确定模块103,用于根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件;

关联方式确定模块104,用于根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式;

数据信息确定模块105,用于根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息;

数据量确定模块106,用于根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量;

输出模块107,用于输出包括所述数据量的脚本文件校验结果。

在一实施方式中,所述装置还包括数据状态确定模块;

所述数据状态确定模块,用于根据所述关联方式确定执行所述脚本文件时的数据状态,所述数据状态包括数据倾斜状态和/或数据发散状态;

所述输出模块,用于输出包括所述数据量和所述数据状态的脚本文件校验结果。

在一实施方式中,数据状态确定模块具体用于:

根据所述关联方式确定所有所述关联数据表中的数据表是否存在笛卡尔积关系;

若确定所有所述关联数据表中各的数据表存在笛卡尔积关系,则确定执行所述脚本文件时存在数据发散;

若确定所有所述关联数据表中各的数据表不存在笛卡尔积关系,则确定执行所述脚本文件时不存在数据发散。

在一实施方式中,数据状态确定模块具体用于:

根据所述关联方式确定执行所述脚本文件时,所述关联数据表中的数据任务处理量的分配是否存在不均现象,其中,所述不均现象包括以第一数据处理任务的任务量为第二数据处理任务的任务量的预设整数倍数;

若确定所述关联数据表中的数据任务处理量的分配存在不均现象,则确定执行所述脚本文件时存在数据倾斜;

若确定所述关联数据表中的数据任务处理量的分配未不存在不均现象,则确定执行所述脚本文件时不存在数据倾斜。

在一实施方式中,所述装置还包括日志信息获取模块、调用时长确定模块、执行时长确定模块:

日志信息获取模块,用于从脚本执行日志库中获取历史脚本执行日记信息;

调用时长确定模块,用于根据所述历史脚本执行日记信息确定其他脚本文件执行时调用所述关联数据表的时长;统计所有所述关联数据表中,每个所述关联数据表被调用的时长,以获取总时长;

执行时长确定模块,将所述总时长确定执行所述脚本文件的执行时长;

所述输出模块,用于输出包括所述数据量、所述数据状态和所述执行时长的脚本文件校验结果。

在一实施方式中,脚本解析模块具体用于:

接收用户的编程语言类型指示信息,所述编程语言类型指示信息用于指示所述脚本文件采用的编程语言类型;

根据所述编程语言类型指示信息获取所述编程语言对应的关键词信息;

根据关键词信息对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词。

可见,本发明实施例提供了一种基于关键词的脚本性能校验装置,以在脚本被执行或运行前就能获取到脚本文件的一些执行性能情况,解决了现有技术中,无法在脚本被执行或运行前就能获取到该脚本的性能情况,从而造成资源浪费等影响脚本正常执行的情况出现,具有较高的应用场景。

关于脚本性能校验装置的具体限定可以参见上文中对于脚本性能校验方法的限定,在此不再赘述。上述脚本性能校验装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存储器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种脚本性能校验方法。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

获取需要校验的脚本文件;

对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词;

根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件;

根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式;

根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息;

根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量;

输出包括所述数据量的脚本文件校验结果。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取需要校验的脚本文件;

对所述脚本文件进行脚本关键词解析,以获取所述脚本文件中的脚本关键词;

根据所述脚本关键词确定所述脚本文件所用到的所有关联数据表,并确定所有所述关联数据表中各表之间的关联条件;

根据所述关联条件对应确定所有所述关联数据表中各数据表之间的关联方式;

根据所述关联数据表和关联方式确定所述脚本文件所用到的数据信息;

根据所述数据信息确定执行所述脚本文件时所需读取的目标数据的数据量;

输出包括所述数据量的脚本文件校验结果。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

相关技术
  • 基于关键词的脚本性能校验方法、装置、设备及存储介质
  • 脚本文件校验方法、装置、服务器及存储介质
技术分类

06120112169261