一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于自定义优化规则的数据优化方法及装置与流程

2023-01-02 12:30:42 来源:中国专利 TAG:


1.本发明涉及数据优化器技术领域,尤其涉及一种基于自定义优化规则的数据优化方法及装置。


背景技术:

2.当前数据的优化器模块提供内置的优化规则(optimize rules),但这些优化规则针对的数据源或sql(结构化查询语言,structured query language)查询的形式相对固定,若优化规则不能和sql进行匹配(即当前优化器所有的优化规则都不能对此sql进行优化使其效率提高或不能针对当前的数据源进行优化),则需要用户根据自己的业务要求,自己编写优化器规则(optimize rules),提供给优化器对sql进行优化。
3.金库优化器提供可实现用户自定义规则的抽象类模板,用户可以根据抽象类模板声明的接口去实现自己的sql语句优化规则,并且通过ddl(数据库模式定义语言,data definition language)的方式,在不修改优化器核心代码且不重启数据服务的情况下,将新增的优化规则注册到优化器之中。并且可以指指定此优化规则针对的数据源schema或所有的数据源。
4.但是,目前市面没有优化规则是通过ddl方式将规则注册到优化器中。


技术实现要素:

5.本发明要解决的技术问题是目前没有优化规则是通过ddl方式将规则注册到优化器中,不能良好的实现对优化器规则的自定义开发,有鉴于此,本发明提供一种基于自定义优化规则的数据优化方法及装置。
6.本发明采用的技术方案是,所述基于自定义优化规则的数据优化方法,包括:响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则;当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则;将所述自定义优化规则注册到所述优化规则列表中;利用所述自定义优化规则,对所述sql语句进行优化。
7.在一个实施方式中,所述响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则,包括:响应于用户输入的sql语句,将所述sql语句解析生成对应的lex tree;基于所述sql语句对应的lex tree,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则。
8.在一个实施方式中,所述当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则,包括;
当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,返回无法优化结果;将配置的所述自定义优化规则编译成jar包,并放置到jupiter服务可访问的目录下,其中,所述自定义优化规则是根据所述sql语句进行配置的;通过ddl中的create语句创建所述自定义优化规则。
9.在一个实施方式中,所述将所述自定义优化规则注册到所述优化规则列表中,包括:将所述自定义优化规则解析生成对应的lex tree;基于所述自定义优化规则对应的lex tree,将所述自定义优化规则注册到所述优化规则列表中;返回将所述自定义优化规则注册到所述优化规则列表中的注册结果。
10.在一个实施方式中,所述利用所述自定义优化规则,对所述sql语句进行优化,包括:响应于用户输入的所述sql语句,查询当前所述优化规则列表中与所述sql语句匹配的优化规则;利用所述优化规则列表与所述sql语句匹配的优化规则,对所述sql语句进行优化;将所述sql语句的优化结果返回至终端。
11.本发明的另一方面还提供了一种自定义优化规则的数据优化装置,包括:查询模块,被配置为响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则;创建模块,被配置为当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则;注册模块,被配置为将所述自定义优化规则注册到所述优化规则列表中;优化模块,被配置为利用所述自定义优化规则,对所述sql语句进行优化。
12.本发明的另一方面还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上任一项所述的方法的步骤。
13.本发明的另一方面还提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的方法的步骤。
14.采用上述技术方案,本发明至少具有下列优点:1)本发明是通过ddl的方式实现了优化器自定义规则的创建以及后续注册;2)通过本发明实施例所提供的方法,优化器规则的新增和删除不需要修改优化器内核,独立于其他优化器规则,减少开发和测试成本。
附图说明
15.图1为根据本发明实施例的基于自定义优化规则的数据优化方法流程图;图2为根据本发明实施例的基于自定义优化规则的数据优化方法的一个实际应用流程示意图;
图3为根据本发明实施例的基于自定义优化规则的数据优化装置组成结构示意图;图4为根据本发明实施例的电子设备的结构示意图。
具体实施方式
16.为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
17.本发明中说明书中对方法流程的描述及本发明说明书附图中流程图的步骤并非必须按步骤标号严格执行,方法步骤是可以改变执行顺序的。而且,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
18.本发明第一实施例,一种基于自定义优化规则的数据优化方法,如图1所示,包括以下具体步骤:步骤s1,响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则;步骤s2,当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则;步骤s3,将所述自定义优化规则注册到所述优化规则列表中;步骤s4,利用所述自定义优化规则,对所述sql语句进行优化。
19.下面将分步对本实施例所提供的方法进行详细介绍。
20.步骤s1,响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则。
21.本实施例中,可参考图2,用于执行sql语句的优化匹配系统例如可包括多个处理模块,示例性地,包括:client:为sql的输入端,即用户输入sql语句的终端;parser:为sql解析器,将sql语句解析成优化器可识别的语法结构;optimizer:优化器,具体优化sql语句的地方;rules match:优化器将sql匹配到具体规则并且生成logical plan的地方;out:优化器之外的模块。
22.本实施例中,可以在client模块中输入sql语句,经由parser模块解析处理后,将sql语句解析成优化器可识别的语法结构(可以是lex tree的形式)。
23.进一步地,可以在预先配置的优化规则列表中,查询是否与终端输入的sql语句相匹配的优化规则。
24.当预先配置的优化规则列表中存在与终端输入的sql语句相匹配的优化规则,可以直接利用该优化规则对sql语句进行优化。
25.当预先配置的优化规则列表中不存在与终端输入的sql语句相匹配的优化规则,则说明此时的优化器无法进行对该sql语句的优化,并将无法优化的结果返回至终端。
26.步骤s2,当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则。
27.本实施例中,可以是将配置的自定义优化规则编译成jar包,并放置到jupiter服
务可访问的目录下,其中,自定义优化规则是根据所述sql语句进行配置的,也就是说,该自定义优化规则是可以用于该sql语句的优化。
28.具体地,可以通过ddl中的create语句创建所述自定义优化规则。
29.示例性地,ddl语句可以包括:优化规则创建语句、优化规则删除语句、优化规则列表展示语句。如下所示:优化规则创建:createselfrule《rule_name》usefordatasourceschema《schema_name》rulepluginfile《path/jarname.jar》优化规则删除:dropselfrule《rule_name》优化规则列表展示:showselfrules可以基于上述优化规则创建的语句,完成自定义优化规则的创建过程。
30.可以理解的是,也可以通过上述优化规则删除语句、优化规则列表展示语句,或者是其他可能的语句对优化规则进行相应的控制处理,本文对此将不做限定。
31.步骤s3,将所述自定义优化规则注册到所述优化规则列表中。
32.本实施例中,可以在完成对自定义优化规则的创建操作后,类似地,经由parser模块解析处理后,将自定义优化规则解析成优化器可识别的语法结构(可以是lextree的形式)。
33.进一步地,将处理后的自定义优化规则注册到优化规则列表中,当完成该注册处理后,将注册结果返回至终端。
34.步骤s4,利用所述自定义优化规则,对所述sql语句进行优化。
35.本实施例中,该步骤类似于步骤s1,可以在client模块中输入sql语句,经由parser模块解析处理后,将sql语句解析成优化器可识别的语法结构(可以是lextree的形式)。
36.进一步地,在当前配置的优化规则列表中,查询是否与终端输入的sql语句相匹配的优化规则。
37.经上述步骤s1至s3的处理后,此时的优化规则列表中,存在与该sql语句匹配的优化规则,可以直接利用该优化规则对sql语句进行优化,并将优化结果返回至终端。
38.相较于现有技术,本实施例至少具备以下优点:1)本发明是通过ddl的方式实现了优化器自定义规则的创建以及后续注册;2)通过本发明实施例所提供的方法,优化器规则的新增和删除不需要修改优化器内核,独立于其他优化器规则,减少开发和测试成本。
39.本发明第二实施例,与第一实施例对应,本实施例介绍一种基于自定义优化规则的数据优化装置,如图3所示,包括以下组成部分:查询模块,被配置为响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则;创建模块,被配置为当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则;
注册模块,被配置为将所述自定义优化规则注册到所述优化规则列表中;优化模块,被配置为利用所述自定义优化规则,对所述sql语句进行优化。
40.本发明第三实施例,一种电子设备,参考图4,可以作为实体装置来理解,包括处理器以及存储有所述处理器可执行指令的存储器,当所述指令被处理器执行时,执行如下操作:步骤s1,响应于用户输入的sql语句,查询预先配置的优化规则列表中是否存在与所述sql语句匹配的优化规则;步骤s2,当所述优化规则列表中不存在与所述sql语句匹配的优化规则时,基于所述sql语句,通过ddl方式创建与所述sql语句匹配的自定义优化规则;步骤s3,将自定义优化规则注册到所述优化规则列表中;步骤s4,利用自定义优化规则,对所述sql语句进行优化。
41.本发明第四实施例,本实施例是在上述实施例的基础上,结合附图2介绍一个本发明的应用实例。
42.本实施例根据优化器声明的接口,实现自己的优化逻辑,并且将写好的逻辑编译成jar包,放置到jupiter服务可访问的目录下。
43.通过如下方式进行对生成好的jar包进行注册,只有注册后的jar包内的规则才能被优化器利用。具体可以包括:优化规则创建:createselfrule《rule_name》usefordatasourceschema《schema_name》rulepluginfile《path/jarname.jar》优化规则删除:dropselfrule《rule_name》优化规则列表展示:showselfrules;可参考图2,在本实施例中,各处理模块可以包括:client:为sql的输入端,即用户输入sql语句的终端;parser:为sql解析器,目的sql语句解析成优化器可识别的语法结构;optimizer:优化器具体优化sql语句的地方;rulesmatch:优化器将sql匹配到具体规则并且生成logicalplan的地方;out:优化器之外的模块。
44.可再次参考图2,为了方便比较,将分别示例性地提供一个本领域常见的优化方法流程以及本实施例所提供的一个优化方法流程,本领域常见的优化方法流程具体可以包括:步骤1,客户输入sql;步骤2,parser将sql进行语法和词法解析生成lextree;步骤3,步骤优化器使用自己的rule列表对sql进行优化;步骤4,优化器最终生成逻辑计划给下一步,下一步生成结果返回给client。
45.本实施例所提供的一个优化方法流程,具体可以包括:步骤1,客户输入sql;
步骤2,parser将sql进行语法和词法解析生成lextree;步骤3,优化器使用自己的rule列表对sql进行优化;步骤4,发现没有可优化此sql的规则,那么优化器无法对此sql进行优化;步骤5,返回无任何优化的结果;步骤6,基于ddl的方法,创建新的优化器规则;步骤7,parser将sql进行语法和词法解析生成lextree;步骤8,将自定义规则处理,并且添加到规则列表中,返回添加结果;步骤9,客户输入sql;步骤10,parser将sql进行语法和词法解析生成lextree;步骤11,优化器使用新增的rule列表对sql进行优化;步骤12,优化器最终生成逻辑计划给下一步,下一步生成结果返回给client。
46.本发明第五实施例,本实施例的基于自定义优化规则的数据优化方法的流程与第一、二或三实施例相同,区别在于,在工程实现上,本实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的所述方法可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台设备(可以是基站等网络设备)执行本发明实施例所述的方法。
47.综上所述,相较于现有技术,本发明至少具备以下优点;1)本发明是通过ddl的方式实现了优化器自定义规则的创建以及后续注册;2)通过本发明实施例所提供的方法,优化器规则的新增和删除不需要修改优化器内核,独立于其他优化器规则,减少开发和测试成本。
48.通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献