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

查询处理方法、装置、数据库系统、电子设备及存储介质

文献发布时间:2023-06-19 11:44:10


查询处理方法、装置、数据库系统、电子设备及存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种查询处理方法、装置、数据库系统、电子设备及存储介质。

背景技术

随着互联网技术的发展,产生了海量的数据,进而对海量数据的存储产生了较高的要求。数据库系统为海量数据的存储提供了方案,但随之而来的海量数据的访问包括本地数据库访问和跨数据库访问成为对存储的海量数据进行处理的重点。

在数据库访问过程中,使用者(如用户或应用程序)经常会执行一些相似的、基于SQL语句的查询。

例如:“SELECT c1 FROM t1 WHERE c2=?”,其中,c1、c2为字段名,t1为表名,?表示条件值。

又例如:“SELECT c2 FROM t2 WHERE c3=@var”,其中,c2、c3为字段名,t2为表名,@var表示条件值。

这些查询语句在结构上存在着?和@var所在位置的参数值不一样,整体的语句结构基本一致。

此外,在一些情况下,使用者可能会重复地执行相同的查询语句,但是每次执行的运行时环境却不尽相同(如:参数配置不同)。

针对这些相似或相同的查询,查询优化器每次都会完整地对查询语句执行一遍完整的处理过程生成对应的物理执行计划,这一方面使得对结构类似的查询语句反复进行相同或相似处理,导致处理成本高且处理效率低下。

另一方面,某些应用需要实时返回查询结果,供前端页面展示,而查询优化器对查询语句进行处理生成物理执行计划的过程中势必要消耗一定时间,在查询语句的复杂度较高时,消耗的时间可能更长,导致难以满足需求。

因此,亟需一种方法能够提升查询处理性能,以更好地满足查询需求。

发明内容

有鉴于此,本发明实施例提供一种查询处理方案,以解决上述部分或全部问题。

根据本发明实施例的第一方面,提供了一种查询处理方法,其包括:对原始结构化查询语句进行参数化处理,生成对应的参数化查询语句;按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配,其中,所述各组查询模板根据所述查询执行逻辑确定;若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板,并获取待使用的查询模板对应的查询执行结果;根据所述查询执行结果,确定与所述原始结构化查询语句对应的物理执行计划。

根据本发明实施例的第二方面,提供了一种查询处理方法,包括:根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段;从多组查询模板中确定与当前处理阶段对应的当前组查询模板,其中,所述查询模板中包括用于指示原始查询语句对应的参数化查询语句的键值和对应的查询执行结果;确定所述当前组查询模板中是否存在与所述参数化查询语句匹配的查询模板;若存在,则更新当前处理阶段,并返回从多组查询模板中确定与当前处理阶段对应的当前组查询模板的操作继续执行,直至从匹配的查询模板的查询执行结果中获取对应的物理执行计划。

根据本发明实施例的第三方面,提供了一种查询处理装置,包括:参数化模块,用于对原始结构化查询语句进行参数化处理,生成对应的参数化查询语句;匹配模块,用于按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配,其中,所述多组查询模板根据所述查询执行逻辑确定;获取模块,用于若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板,并获取待使用的查询模板对应的查询执行结果;生成模块,用于根据所述查询执行结果,确定与所述原始结构化查询语句对应的物理执行计划。

根据本发明实施例的第四方面,提供了一种查询处理装置,包括:第一确定模块,用于根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段;第二确定模块,用于从多组查询模板中确定与当前处理阶段对应的当前组查询模板,其中,所述查询模板中包括用于指示原始查询语句对应的参数化查询语句的键值和对应的查询执行结果;第三确定模块,用于确定所述当前组查询模板中是否存在与所述参数化查询语句匹配的查询模板;更新循环模块,用于若存在,则更新当前处理阶段,并返回从多组查询模板中确定与当前处理阶段对应的当前组查询模板的操作继续执行,直至从匹配的查询模板的查询执行结果中获取对应的物理执行计划。

根据本发明实施例的第五方面,提供了一种数据库系统,包括数据库查询服务器和至少一个数据存储层;所述数据库查询服务器用于执行前述的查询处理方法,以获得与原始结构化查询语句对应的物理执行计划,并根据所述物理执行计划访问至少一个所述数据存储层,并获取与所述原始结构化查询语句对应的结果数据。

根据本发明实施例的第六方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面或第二方面所述的查询处理方法对应的操作。

根据本发明实施例的第七方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面或第二方面所述的查询处理方法。

根据本发明实施例提供的查询处理方案,对获取的原始结构化查询语句进行参数化处理,获得参数化查询语句,并通过将参数化查询语句与多组查询模板进行匹配,可以获取匹配的查询模板对应的查询执行结果,并根据该查询执行结果生成物理执行计划。由于查询模板有多组,且查询模板根据查询执行逻辑确定,使得可以充分复用中间组的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用查询模板的查询执行结果,从而不仅降低了查询成本和耗时,同时还提升了查询效率。

附图说明

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

图1为根据本发明实施例一的一种查询处理方法的步骤流程图;

图2为根据本发明实施例二的一种查询处理方法的步骤流程图;

图3a为根据本发明实施例三的一种查询处理方法的步骤流程图;

图3b为根据本发明使用场景中的一种查询处理方法的步骤流程图;

图4为根据本发明实施例四的一种查询处理方法的步骤流程图;

图5为根据本发明实施例五的一种查询处理装置的结构框图;

图6为根据本发明实施例六的一种查询处理装置的结构框图;

图7为根据本发明实施例七的一种数据库系统的结构框图;

图8为根据本发明实施例八的一种电子设备的结构示意图。

具体实施方式

为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。

下面结合本发明实施例附图进一步说明本发明实施例具体实现。

实施例一

参照图1,示出了根据本发明实施例一的一种查询处理方法的步骤流程图。

本实施例的查询处理方法包括以下步骤:

步骤S102:对原始结构化查询语句进行参数化处理,生成对应的参数化查询语句。

原始结构化查询语句可以是使用者(如用户或应用程序)输入的结构化查询语句(SQL)。例如,select*from t1 where c2=1。其中,t1指示需访问的目标数据表的表名,*表示目标数据表中的所有字段,c2表示目标数据表中的某一字段的名称。

SQL的参数化通常是指对SQL语句中WHERE条件进行处理,将其中的常量抽取出来,变成参数形式。参数化之后的SQL语句就像一个SQL模板,其中的参数可以赋于不同的值,从而产生不同的SQL语句。但并不限于此,也可以根据需要对SQL语句中的常量之外的部分进行参数化处理。

例如,select*from t1 where c2=1进行参数化处理之后为“select*from t1where c2=?”,其中,?为占位符,用于表示此处可以赋予不同数值。

可见,参数化查询语句可以使用参数替代原始结构化查询语句中的常量,从而将结构相同可能仅有常量不同的原始结构化查询语句转化为同一参数化查询语句,以使得在后的原始结构化查询语句能够更容易地匹配到在前的具有相同结构的原始结构化查询语句,从而复用在前的原始结构化查询语句的处理结果,而无需对每个原始结构化查询语句都进行一遍处理,从而提升性能。

在实际应用中,本领域技术人员可以根据需要采用任何适当的方式对原始结构化查询语句进行参数化处理,本实施例对此不作限制。

在对原始结构化查询语句进行参数化处理时,不仅可以获得参数化查询语句,而且能够获得对应的参数列表。例如,select c1 from t1 where c2=2;对其进行参数化处理后,参数化查询语句为select c1 from t1 where c2=?;对应的参数列表中包括(c2,2)。

步骤S104:按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配。

查询执行逻辑用于指示对结构化查询语句进行查询优化的完整逻辑。例如,查询执行逻辑包括多个处理阶段,如,语法解析阶段、初始逻辑计划生成阶段、逻辑计划优化阶段、物理计划生成阶段等,通过对结构化查询语句执行各个处理阶段的处理,可以将结构化查询语句转化为可以被查询引擎直接执行的物理执行计划,从而完成查询优化过程。

例如,在一个示例中,查询执行逻辑可以包括4个处理阶段,分别为:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段。

其中,在第一阶段中,对结构化查询语句进行语法解析,并获得查询语法树(ParseTree)。在第二阶段中,对查询语法树进行表达式变换和目标数据表的元数据关联等操作,并获得初始逻辑执行计划。在第三阶段中,对初始逻辑执行计划进行优化,并获得优化后的逻辑执行计划。在第四阶段中,对优化后的逻辑执行计划进行优化,并获得物理执行计划。

当然,在其他实施例中,查询执行逻辑可以包括其他数量的处理阶段,各处理阶段对应的处理也可以根据需要具体确定,本实施例对此不作限制。

为了能够充分复用各处理阶段执行过程中产生的查询执行结果(即执行各处理阶段获得的中间结果),所述多组查询模板根据所述查询执行逻辑确定。其中,多组查询模板包括与查询执行逻辑指示的多个处理阶段一一对应的多级查询模板。

在本实施例中,查询模板可以理解为查询优化中间结果。

例如,多级查询模板与处理阶段一一对应,多级查询模板包括4个层级。又例如,多级查询模板与部分处理阶段对应,即多级查询模板可以包括3个或2个层级等。

各层级的查询模板中可以包括用于存储参数化查询语句样本相关的信息、以及对参数化查询语句样本执行对应处理阶段的处理获得的查询执行结果。

例如,与第一阶段对应的第一层级的查询模板用于存储参数化查询语句样本、以及查询语法树。与第二阶段对应的第二层级的查询模板用于存储参数化查询语句样本及其指示访问的数据库对象(如数据表、字段)的组合、以及初始逻辑执行计划。

又例如,与第一阶段对应的查询模板中用于存储参数化查询语句样本的文本、以及对应的查询语法树;与第二阶段对应的查询模板中用于存储参数化查询语句样本的文本与其指示的访问的数据库对象(如字段、目标数据表等)的文本的组合、以及初始逻辑执行计划,等等。

再例如,与第一阶段对应的查询模板中用于存储使用键值生成算法根据参数化查询语句样本计算出的键值、以及对应的查询语法树;与第二阶段对应的查询模板中用于存储使用键值生成算法根据参数化查询语句样本与其指示的访问的数据库对象(如字段、目标数据表等)的组合计算出的键值、以及初始逻辑执行计划,等等。

在对参数化查询语句和预先存储的多级查询模板进行匹配时,可以实现为:按照结构化查询语句的查询执行逻辑对应的多个处理阶段,对所述参数化查询语句和预先存储的、与所述多个处理阶段对应的多级查询模板进行匹配。例如,进行逐级匹配,或者先对与最高的处理阶段对应层级的查询模板进行匹配,如果匹配上则终止匹配,如果未匹配上则从最低的处理阶段对应层级查询模板进行逐级匹配等。

逐级匹配具体例如,将参数化查询语句与第一层级的查询模板进行匹配,若存在参数化查询语句样本与参数化查询语句一致的查询模板,则确定第一层级中存在匹配的查询模板。

此种情况下,可以继续在第二层级的查询模板中进行匹配,即将参数查询语句及其指示访问的数据库对象的组合与第二层级的查询模板中存储的参数化查询语句样本及其指示访问的数据库对象进行匹配。若第二层级中存在匹配的查询模板,则进行下一层级的查询模板的匹配;反之,则不再进行匹配。这样可以进行逐级匹配,直至某一层级不存在匹配的查询模板,或者所有层级均匹配完成。

若匹配结果指示存在匹配的至少一级查询模板,则可以执行步骤S106;反之,表示多级查询模板中不存在匹配的查询模板,则可以根据查询执行逻辑直接对参数化查询语句进行各处理阶段对应的处理。

步骤S106:若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板,并获取待使用的查询模板对应的查询执行结果。

由于各组的查询模板是与处理阶段对应的,且后一处理阶段是在前一处理阶段的处理结果的基础上进行处理的,因此,若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中确定待使用的查询模板,由于多组查询模型是逐级设置的,因而可以将层级数最高的查询模板确定为待使用的查询模板,并获取待使用的查询模板对应的查询执行结果,从而可以省略至少一部分处理阶段的处理,直接复用获取的查询执行结果。

具体例如,针对参数化查询语句A,匹配结果指示第一层级至第四层级的查询模板中均存在匹配的查询模板,则可以将第四层级的查询模板作为待使用的查询模板,并获取其对应的查询执行结果(即物理执行计划)。

又或者,针对参数化查询语句B,匹配结果指示第一层级和第二层级的查询模板中均存在匹配的查询模板,则可以将第二层级的查询模板作为待使用的查询模板,并获取其对应的查询执行结果(即初始逻辑执行计划)。

步骤S108:根据所述查询执行结果,确定与所述原始结构化查询语句对应的物理执行计划。

在获得查询执行结果后,若查询执行结果对应的处理阶段为最高处理阶段(如第四阶段),则可以直接将查询执行结果作为物理执行计划。

或者,若查询执行结果对应的处理阶段为最高处理阶段之前的处理阶段(例如第三阶段),则可以对查询执行结果执行对应的处理阶段之后的处理阶段(即第四阶段)的处理,并根据执行结果生成物理执行计划。

通过本实施例,对获取的原始结构化查询语句进行参数化处理,获得参数化查询语句,并通过将参数化查询语句与多组查询模板进行匹配,可以获取匹配的查询模板对应的查询执行结果,并根据该查询执行结果生成物理执行计划。由于查询模板有多组,且多组查询模板逐级设置,其的层级根据查询执行逻辑确定,使得可以充分复用中间层级的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用中间层级的查询模板的查询执行结果(也就是中间处理阶段的中间结果),从而不仅降低了查询成本和耗时,同时还提升了查询效率。

本实施例的查询处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例二

参照图2,示出了根据本发明实施例二的一种查询处理方法的步骤流程图。

本实施例的查询处理方法包括前述的步骤S102~S108。

在本实施例中,查询执行逻辑包括4个处理阶段,分别为:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段。

多组查询模板包括与处理阶段一一对应的多级查询模板,且与所述多个处理阶段对应的多级查询模板中的每级查询模板均包括键值和对应的查询执行结果。

其中,所述键值根据至少一个参数化查询语句样本生成,所述查询执行结果根据对所述至少一个参数化查询语句样本按照所述查询执行逻辑进行对应的处理阶段的处理后获得。这样不仅能够通过键值存储参数化查询语句样本及其相关信息,而且可以减少存储空间占用,且使得匹配时速度更快。

例如,第一层级的查询模板中的键值根据参数化查询语句样本生成,查询执行结果为查询语法树;第二层级的查询模板中的键值根据参数化查询语句样本及其指示访问的数据库对象(如目标数据表和/或字段)的组合生成,查询执行结果为初始逻辑执行计划;第三层级的查询模板中的键值根据参数化查询语句样本及RBO配置参数(基于规则优化配置参数)的组合生成,查询执行结果为优化后的逻辑执行计划;第四层级的查询模板中的键值根据参数化查询语句样本及CBO配置参数(基于成本优化配置参数)的组合生成,查询执行结果为物理执行计划。

其中,查询语法树是数据库系统对结构化查询语句进行语法解析,而转换成的数据库系统内部统一的、可理解的数据结构,由于该数据结构通常为树形结构,故称为查询语法树。

初始逻辑执行计划是查询执行计划(Execution Plan)中的一种,除初始逻辑执行计划外,查询执行计划还包括物理执行计划。查询执行计划描述了一个查询过程具体执行步骤,其由数据库系统中的优化器(Query Optimizer)来生成。

逻辑执行计划(Logical Execution Plan)简称逻辑计划,由逻辑算子组成,描述了查询过程执行的逻辑步骤。为了提升效率,针对一个结构化查询语句,优化器可能会生成许多种等价的查询执行计划,然后从中挑选出最优的一个去执行。这些等价的执行计划虽然执行过程不同,但是产生的最终查询结果是相同的。

物理执行计划(Physical Execution)简称物理计划,由物理算子组成,描述了查询过程执行的具体算法,可被数据库系统中的查询引擎直接执行。

可选地,在本实施例中,为了能够生成前述的多级查询模板,所述方法还包括:

步骤100:根据所述查询执行逻辑对应的多个处理阶段,生成与所述多个处理阶段对应的多级查询模板。

在本实施例中,通过构建多级缓存,将对结构化查询语句的查询优化过程中各处理阶段的中间结果(即查询执行结果)有效地缓存起来,以形成多级查询模板,供后续对结构化查询语句进行处理时使用,避免了重复处理的问题,从而提高查询优化的效率。

具体地,在本实施例中,采用四级缓存,每级缓存对应一级查询模板,用于存储一个处理阶段对应的查询执行结果。每一级缓存的键值(即key)记为Li-Key,每一级缓存的值(即value)记为Li-Plan,其中i的值为1~4。

可选地,由于多级查询模板存储在缓存中,每级查询模板可以对应存储于一个缓存中,这样可以提升匹配时的I/O效率,从而提升性能。

其中,所述步骤S100包括以下子步骤:

子步骤S1001:获取结构化查询语句样本,并对所述结构化查询语句样本进行参数化处理,获得参数化查询语句样本。

针对使用者的结构化查询语句样本,对其进行参数化处理,获取其对应的参数化查询语句样本和参数列表。具体的参数化处理的方法可以采用任何适当的方式。

子步骤S1002:对所述参数化查询语句样本进行所述第一阶段对应的语法解析,根据解析结果生成与所述第一阶段对应的第一层级的查询模板。

在一级缓存中存储的第一层级的查询模板中,L1-Key为使用键值生成算法,根据所述参数化查询语句样本,生成的键值,L1-Plan为查询语法树。其中,第一层级与查询执行逻辑的第一阶段对应。

键值生成算法可以是哈希算法,或其他任意适当的算法。

例如,使用哈希算法计算参数化查询语句样本的文本的哈希值,并以此哈希值作为第一层级的查询模板中的一条记录的键值(即L1-key)。

查询语法树可以通过对获取到参数化查询语句样本进行语法解析的方式获得。从而根据第一层级的查询模板中的键值和查询语法树,生成第一层级的查询模板。

子步骤S1003:对语法解析结果进行所述第二阶段对应的表达式转换和目标数据表元数据关联,获得初始逻辑执行计划,根据所述初始逻辑执行计划生成与所述第二阶段对应的第二层级的查询模板。

在二级缓存中存储的第二层级的查询模板中,L2-Key为使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成的键值,L2-Plan为初始逻辑执行计划。其中,第二层级与查询执行逻辑的第二阶段对应。

键值生成算法可以是哈希算法,或其他任意适当的算法。

例如,使用哈希算法计算参数化查询语句样本的文本及其指示访问的数据库对象(如表、字段)的组合的哈希值,并以此哈希值作为第二层级的查询模板中的一条记录的键值(即L2-key)。

在本步骤中,对语法解析结果即查询语法树执行表达式转换和目标数据表元数据关联,并获取对应的初始逻辑执行计划。将该初始逻辑执行计划作为查询执行结果存储到L2—plan中,从而获得第二层级的查询模板。

子步骤S1004:对所述逻辑执行计划进行所述第三阶段对应的规则优化,获得优化后的逻辑执行计划,根据优化后的逻辑执行计划生成与所述第三阶段对应的第三层级的查询模板。

在三级缓存中存储的第三层级的查询模板中,L3-Key为使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成的键值,L3-Plan为优化后的逻辑执行计划。其中,第三层级与查询执行逻辑的第三阶段对应。

键值生成算法可以是哈希算法,或其他任意适当的算法。

例如,在第三层级的查询模板中,可以使用哈希算法,计算参数化查询语句样本的文本和基于所述参数化查询语句样本确定的规则优化配置参数的哈希值,并以此哈希值作为查询模板中的一条记录的键值(即L3-key)。

其中,基于参数化查询语句样本确定的规则优化配置参数(即RBO配置参数)可以是用户选择的,也可以是根据使用的数据库系统的配置确定的,本实施例对此不作限制。

通过根据规则优化配置参数对逻辑执行计划进行优化,获得优化后的逻辑执行计划,并将其存储于L3-plan中,从而获得第三层级的查询模板。

子步骤S1005:对优化后的逻辑执行计划进行所述第四阶段对应的成本优化,获得物理执行计划,根据物理执行计划生成与所述第四阶段对应的第四层级的查询模板。

在四级缓存中存储的第四层级的查询模板中,L4-Key为使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成的键值,L4-Plan为优化后的物理执行计划。其中,第四层级与查询执行逻辑的第四阶段对应。

键值生成算法可以是哈希算法,或其他任意适当的算法。

例如,使用哈希算法,计算参数化查询语句样本的文本和基于所述参数化查询语句样本确定的成本优化配置参数的哈希值,并以此哈希值作为查询模板中的一条记录的键值(即L4-key)。

其中,基于参数化查询语句样本确定的成本优化配置参数(即CBO参数)可以是用户选择的,也可以是根据使用的数据库系统的配置确定的,本实施例对此不作限制。

通过根据成本优化配置参数对优化后的逻辑执行计划进行优化,获得物理执行计划,并将其存储于L4-plan中,从而获得第四层级的查询模板。

基于上述过程,即可生成与查询执行逻辑的多个处理阶段一一对应的多个层级的查询模板。基于此,即可继续执行如实施例一中所述的步骤S102~步骤S108的操作。

通过本实施例,根据查询执行逻辑的多个处理阶段生成对应的多级查询模板,该种模板生成方式能够很好地与查询执行逻辑的实际处理相兼容,并且与多个处理阶段分别对应,一方面,有效利用了现有的处理流程,提高了模板生成效率,并节约了模板生成成本;另一方面,当将该模板预先存储并在后续实际的查询操作中应用时,因模板分层级,可以最大限度地利用模板的现有资源,既提高了资源利用程度,又可以提高查询处理效率。

此外,当基于生成的查询模板进行查询处理时,先对获取的原始结构化查询语句进行参数化处理,获得参数化查询语句,并通过将参数化查询语句与多级查询模板进行匹配,可以获取匹配的查询模板对应的查询执行结果,并根据该查询执行结果生成物理执行计划。由于查询模板有多级,且查询模板的层级根据查询执行逻辑确定,使得可以充分复用中间层级的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用中间层级的查询模板的查询执行结果,从而不仅降低了查询成本和耗时,同时还提升了查询效率。

本实施例的查询处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例三

参照图3a,示出了根据本发明实施例三的一种查询处理方法的步骤流程图。

本实施例的查询处理方法包括前述的步骤S102~S108。其可以根据需要包括或不包括步骤S100。以多级查询模板为实施例二中所述的多级查询模板为例,在本实施例中,步骤S104包括以下子步骤:

子步骤S1041:按照结构化查询语句的查询执行逻辑,确定对所述参数化查询语句进行处理的处理阶段。

在一种可行方式中,所述子步骤S1041包括:按照结构化查询语句的查询执行逻辑对应的多个处理阶段,确定对所述参数化查询语句进行处理的处理阶段。

例如,在首次匹配时,按照查询执行逻辑,确定的处理阶段为第一阶段等。若首次匹配命中,二次匹配时,按照查询执行逻辑,确定处理阶段为第二阶段,以此类推。

子步骤S1042:确定多级查询模板中与确定的处理阶段对应层级的查询模板。

例如,确定的处理阶段为第一阶段,则对应层级的查询模板为第一层级,即包含参数化查询语句样本和对应的查询语法树的层级。

又例如,确定的处理阶段为第二阶段,则对应层级的查询模板为第二层级,即包含参数化查询语句样本与其指示的访问数据库对象的组合,以及对应的初始逻辑执行计划的层级。

子步骤S1043:将所述参数化查询语句与所述对应层级的查询模板进行匹配。

在一种可行方式中,当查询模板中包括键值和查询执行结果时,由于与确定的处理阶段对应层级的查询模板中包含键值,因此,子步骤S1043在此情况下可以实现为:将所述参数化查询语句对应的键值与对应层级的查询模板中的键值进行匹配。

在确定参数化查询语句对应的键值时,使用与根据参数化查询语句样本生成键值时相同的键值生成算法。例如,设确定的层级为第一层级,键值生成算法为哈希算法,则使用键值生成算法,根据参数化查询语句生成对应的键值,并将该键值与第一层级的查询模板中的键值进行匹配,若存在相同的键值,则表示第一层级中存在匹配的查询模板;反之,则表示第一层级中不存在匹配的查询模板。

可选地,所述方法还包括步骤S104a和步骤S104b至少之一。若根据匹配结果确定对应层级(针对某一个处理阶段,相对应地,所述对应层级也即当前处理阶段对应的当前层级)的查询模板与所述参数化查询语句匹配时,在子步骤S1043之后,执行步骤S104a;或者,若根据匹配结果确定对应层级的查询模板与所述参数化查询语句不匹配,则在子步骤S1043之后,执行步骤S104b。

其中,步骤S104a:若根据匹配结果确定对应层级的查询模板与所述参数化查询语句匹配,则更新所述参数化查询语句对应的处理阶段,并返回确定多级查询模板中与确定的处理阶段对应层级的查询模板的步骤。

例如,设当前层级为第一层级,根据第一层级的匹配结果确定第一层级的查询模板与所述参数化查询语句匹配,则可以进行第二层级匹配,故而更新参数化查询语句对应的处理阶段(例如更新为第二阶段)并返回确定多级查询模板中与确定的处理阶段对应层级的查询模板的步骤,使用第二层级查询模板与参数化查询语句进行匹配。

进而后续可以使用键值生成算法,根据参数化查询语句和其指示访问的数据库对象生成键值,并将该键值与第二层级查询模板中的键值匹配,以确定第二层级查询模板中是否存在匹配的查询模板。依此类推,直至所有层级的查询模板全部匹配完毕,或者,直至某一层级的查询模板与参数化查询语句不匹配。

步骤S104b:若根据匹配结果确定对应层级的查询模板与所述参数化查询语句不匹配,则确定是否存在已成功匹配的查询模板,若存在,则执行所述若匹配结果指示存在匹配的至少一级查询模板,则从匹配的至少一级查询模板中,确定待使用的查询模板的步骤(即步骤S106)。

在匹配结果指示当前层级的查询模板与所述参数化查询语句不匹配时,则无需进行后续层级的匹配,故而可以执行步骤S106或执行步骤S110。执行步骤S106的过程已经在前述实施例中进行了详述故不再赘述。在执行步骤S110时:

可选地,步骤S110:若不存在已成功匹配的查询模板,则对所述参数化查询语句按照查询执行逻辑进行各处理阶段对应的处理。

在匹配结果指示不存在匹配的查询模板的情况下,即表示第一层级至第四层级的查询模板均不匹配,故而需要对参数化查询语句执行查询执行逻辑指示的各处理阶段对应的处理。例如,对参数化查询语句执行第一阶段到第四阶段的处理,并获得最终的查询执行结果。

可选地,在步骤S110之后,还可以执行步骤S112。

步骤S112:将所述参数化查询语句的各处理阶段的处理结果作为查询执行结果,添加到与各处理阶段对应层级的查询模板中。

例如,对参数化查询语句执行了第一阶段的处理之后,则在第一层级查询模板中增加一个新的记录,该记录的键值为使用键值生成算法,根据参数化查询语句生成的键值。并将执行第一阶段获取的查询执行结果(即查询语法树)添加到键值对应的plan(即查询执行结果)中。

在对查询语法树执行了第二阶段的处理之后,则在第二层级查询模板中增加一个新的记录,该记录的键值为使用键值生成算法,根据参数化查询语句及其指示访问的数据库对象生成的键值。并将执行第二阶段获取的查询执行结果(即初始逻辑执行计划)添加到键值对应的plan(即查询执行结果)中。

执行第三阶段和第四阶段之后,添加根据对所述参数化查询语句执行所述处理阶段的处理获得的查询执行结果,添加到与所述处理阶段对应层级的查询模板的查询执行结果中的过程与第一阶段和第二阶段的过程类似,故不再赘述。

通过上述过程,可以将查询模板中没有的参数化查询语句及其对应的查询执行结果添加到查询模板中,以便后续使用查询执行结果,提升后续的处理效率。

此外,针对存在匹配的查询模板的情况,则如前所述,可以充分复用中间层级的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用中间层级的查询模板的查询执行结果,从而不仅降低了查询成本和耗时,同时还提升了查询效率。

以下,以一个具体使用场景为示例,对上述过程进行说明。

如图3b所示,在本使用场景中,包括四级缓存,每级缓存中存储有一个层级的查询模板,以从低到高分别为:一级缓存中存储的第一层级查询模板、二级缓存中存储的第二层级查询模板、三级缓存中存储的第三层级查询模板、四级缓存中存储的第四层级查询模板为示例。基于此,本使用场景的查询处理过程如下:

步骤A1:对于获得的参数化查询语句,使用哈希算法生成对应的键值,并根据该键值查找一级缓存中的第一层级查询模板。

本使用场景中,设定已对原始结构化查询语句进行过参数化处理,以针对参数化处理后获得的参数化查询语句为处理起点。

如果键值匹配,则一级缓存命中,可以继续进行二级缓存查找(执行步骤B1)。

如果没有键值匹配,则一级缓存未命中,则需对参数化查询语句做完整的优化处理,即执行步骤A2~D2,依次为:进行语法解析,获得查询语法树;对语法解析结果进行所述第二阶段对应的表达式转换和目标数据表元数据关联,获得初始逻辑执行计划;对所述逻辑执行计划进行所述第三阶段对应的规则优化,获得优化后的逻辑执行计划;对优化后的逻辑执行计划进行所述第四阶段对应的成本优化;然后产生最终的优化后的物理执行计划。此过程中,每个阶段产生的中间结果(即查询语法树、初始逻辑执行计划、优化后的逻辑执行计划和物理执行计划)都会缓存在相应层级的缓存中。

步骤B1:若一级缓存命中,则使用二级缓存继续进行匹配。

匹配过程为:根据参数化查询语句及其指示访问的数据库对象生成键值,然后查找二级缓存中的第二层级的查询模板。

如果二级缓存中有匹配的键值,则二级缓存命中,可以继续进行三级缓存查找(执行步骤C1)。

如果二级缓存没命中,例如,在元数据(字段名/类型)发生变化时,二级缓存未命中。又例如,@var变量的值发生变化,二级缓存未命中。

此时,则可复用一级缓存(查询语法树),剩余3个优化处理阶段需要执行。即从一级缓存中获取命中的查询执行结果(即查询语法树)并对其做第二阶段及剩余的第三阶段和第四阶段的优化处理,执行步骤B2~D2,过程不再赘述。同样地,每个阶段产生的中间结果都会缓存在相应层级的缓存中。

步骤C1:若二级缓存命中,则使用三级缓存继续进行匹配。

匹配过程为:根据参数化查询语句及RBO参数生成键值,然后查找三级缓存中的第三层级的查询模板。

如果三级缓存中有匹配的键值,则三级缓存命中,可以继续进行四级缓存查找(执行步骤D1)。

如果三级缓存没命中,例如,PreparedStatement语句(例如,PREPARE ps_nameFROM SELECT c1 FROM t1 WHERE c2=?)中参数对应的值发生变化,三级缓存未命中,则从二级缓存中获取命中的初始逻辑执行计划,并对其做第三阶段及剩余的第四阶段的优化处理,执行步骤C2~D2,过程不再赘述。同样地,每个阶段产生的中间结果都会缓存在相应层级的缓存中。

步骤D1:若三级缓存命中,则使用四级缓存继续进行匹配。

匹配过程为:根据参数化查询语句及CBO参数生成键值,然后查找四级缓存中的第四层级的查询模板。

如果四级缓存中有匹配的键值,则四级缓存命中,可以获取四级缓存中L4-plan的物理执行计划。在生成物理执行计划后,可以执行该物理执行计划,以获得返回的查询结果。

如果四级缓存没命中,例如,数据库系统中的查询引擎中CBO参数配置发生变化,如在spark引擎中,spark.sql.autoBroadcastJoinThreshold参数变化,四级缓存未命中,则从三级缓存中获取命中的优化后逻辑执行计划,并对其做第四阶段的优化处理,执行步骤D2,过程不再赘述。同样地,每个阶段产生的中间结果都会缓存在相应层级的缓存中。

通过设置多级查询模板的缓存,将查询优化过程中各处理阶段产生的中间结果进行缓存,每一级缓存中的查询模板具有不同的key,使得在复用的过程中,按照从低级到高级的顺序进行缓存查找,直至找到最高级别命中的缓存,复用该缓存中存储的查询模板中的查询执行结果,然后执行剩余的优化任务。这样当原始结构化查询语句中的数据或数据库系统的使用环境发生变化时,只有受影响的部分级别的缓存中的查询模板会被移除,剩余的缓存中的查询模板仍然可以被利用,从而提高查询优化的效率。

实施例四

参照图4,示出了根据本发明实施例四的一种查询处理方法的步骤流程示意图。

在本实施例中,查询处理方法包括以下步骤:

步骤S402:根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段。

查询执行逻辑用于指示对结构化查询语句进行查询优化的完整逻辑。例如,查询执行逻辑包括多个处理阶段,如,语法解析阶段、初始逻辑计划生成阶段、逻辑计划优化阶段、物理计划生成阶段等。

基于获得的原始查询语句获得对应的参数化查询语句后,首次匹配时,可以确定查询执行逻辑指示的第一个处理阶段为当前处理阶段,如语法解析阶段。

步骤S404:从多组查询模板中确定与当前处理阶段对应的当前组查询模板。

如前述实施例所述,每个处理阶段与一组查询模板对应。所述查询模板中包括用于指示原始查询语句对应的参数化查询语句的键值和对应的查询执行结果。这样可以通过查询模板存储对参数化查询语句执行各个处理阶段对应的操作获得的查询优化中间结果,以保证后续获得相同或相似的参数化查询语句时可以充分利用已存储的查询优化中间结果,从而省略一些处理阶段的操作,以提升查询速度。

在确定当前处理阶段后,根据对应关系就可以确定对应的当前组查询模板。如,当前处理阶段为语法解析阶段,则对应的当前组查询模板为第一组的查询模板等。

步骤S406:确定所述当前组查询模板中是否存在与所述参数化查询语句匹配的查询模板。

在一具体实现中,针对不同的当前组查询模板,根据参数化查询语句采用对应的方式生成键值(记作键值1),例如,若当前组查询模板与语法解析阶段对应,则使用哈希算法计算参数化查询语句的哈希值(即为键值1)。又例如,若当前组查询模板与初始逻辑计划生成阶段对应,则使用哈希算法计算参数化查询语句及其指示的访问数据库对象组合的哈希值(即为键值1)。

使用键值1与当前组查询模板中的键值(例如为键值A~M)进行比较,确定键值A~M中是否存在与键值1相同的键值。若存在,则表示存在与所述参数化查询语句匹配的查询模板,执行步骤S408;或者,若不存在,则表示未存在与所述参数化查询语句匹配的查询模板,执行步骤S410。

步骤S408:若存在,则更新当前处理阶段,并返回从多组查询模板中确定与当前处理阶段对应的当前组查询模板的操作继续执行,直至从匹配的查询模板的查询执行结果中获取对应的物理执行计划。

如果存在匹配的查询模板,则表示可以继续进行匹配,此时更新当前处理阶段,如将语法解析阶段更新为初始逻辑计划生成阶段,之后再返回步骤S404,以确定新的当前组查询模板,继续进行匹配。直至当前组查询模板中不存在匹配的查询模板,或者获得物理执行计划。

如此执行的原因如下:

设多组查询模板中保存了对原始查询语句A进行语法解析阶段的操作的中间结果(记作查询语法树A)、初始逻辑计划生成阶段的操作的中间结果(记作初始逻辑计划A)、逻辑计划优化阶段的操作的中间结果(记作优化后逻辑执行计划A)、物理计划生成阶段的操作的中间结果(记作物理执行计划A)。

一种情况中,接收到的原始查询语句B与原始查询语句A一致,则对其进行参数化处理获得的参数化查询语句相同而且其指示的访问数据库对象、规则优化配置参数和成本优化配置参数也相同。这样在进行多组查询模板的逐级匹配时,各组查询模板均可以匹配上,这样可以直接从最后一组查询模板中获取匹配的查询模板中的查询执行结果(也就是物理执行计划A)作为原始查询语句B的物理执行计划,从而省略所有处理过程,直接复用该物理执行计划A。

另一种情况中,接收的原始查询语句C与原始查询语句A的相似(如结构相同,但访问数据库对象不同),则对其进行参数化处理获得的参数化查询语句相同,但其指示的访问数据库对象、规则优化配置参数和成本优化配置参数不同。这样在进行多组查询模板的逐级匹配时,语法解析阶段对应的该组查询模板中包括匹配的查询模板,后续的查询模板无法匹配,此时可以复用匹配的查询模板中的查询执行结果(即查询语法树A),并对查询语法树A和参数化查询语句进行后续的处理(即初始逻辑计划生成阶段的操作、逻辑计划优化阶段的操作和物理计划生成阶段的操作),从而获得对应的物理执行计划。这样可以复用部分中间结果,从而提升查询速度。

可选地,步骤S410:若所述当前组查询模板中未存在匹配的查询模板,则确定是否存在已成功匹配的查询模板。

在当前组查询模板中未存在匹配的查询模板时,表示后续的查询模板也不会匹配,因此可以不再进行匹配,因此,需要确定是否存在已成功匹配的查询模板。

如果存在已成功匹配的查询模板,则执行步骤S412和步骤S414,从而获取需要的查询执行结果,并对其执行剩余的处理阶段对应的操作,以获得物理执行计划。

或者,如果未存在已成功匹配的查询模板,则执行步骤S416。

可选地,步骤S412:若存在,则确定已成功匹配、且对应的处理阶段最高的已匹配查询模板,并获取所述已匹配查询模板中的已匹配查询执行结果。

已匹配查询模板为所有已成功匹配的查询模板中对应的处理阶段最高(也即执行顺序靠后)的查询模板。例如,一种情况中,与语法解析阶段对应的查询模板和与初始逻辑计划生成阶段对应的查询模板匹配,则已成功匹配的查询模板为与初始逻辑计划生成阶段对应的查询模板。

其中的已匹配查询执行结果即为执行对应的处理阶段的操作获得的中间结果。如已成功匹配的查询模板为与初始逻辑计划生成阶段对应的查询模板,则已匹配查询执行结果为初始逻辑执行计划。

步骤S414:对所述已匹配查询执行结果执行所述当前组查询模板对应的当前处理阶段以及所述当前处理阶段之后的处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

在一具体实现中,若语法解析阶段、初始逻辑计划生成阶段、逻辑计划优化阶段、物理计划生成阶段中,与逻辑计划优化阶段对应的该组查询模板未匹配,则获取初始逻辑计划生成阶段对应的查询模板中的查询执行结果,并对其执行逻辑计划优化阶段和物理计划生成阶段对应的操作,获得物理执行计划。

可选地,步骤S416:若不存在已成功匹配的查询模板,则对所述参数化查询语句执行所述查询执行逻辑指示的各处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

在不存在已成功匹配的查询模板时表示无可用的中间结果,则需要对参数化查询语句执行所有处理阶段对应的操作,以获得物理执行计划。

为了提升可复用性,对其执行每个处理阶段时,将获得的中间结果存储到对应的查询模板中。

可选地,在本实施例中,所述方法还包括步骤S400,以生成多组查询模板。需要说明的是,本步骤为可选步骤,在一次查询过程中其可以执行,也可以不执行。

步骤S400:对参数化查询语句样本执行所述查询执行逻辑指示的各处理阶段,并根据所述参数化查询语句样本和各处理阶段的执行结果,生成与各处理阶段对应的各组查询模板。

其中,所述查询模板的键值根据所述参数化查询语句样本生成,所述查询执行结果根据对应的处理阶段的执行结果生成。

例如,所述处理阶段包括:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段,所述多组查询模板包括与所述多个处理阶段一一对应的多级查询模板。

此种情况下,针对每个处理阶段,生成的对应的查询模板的过程为:

针对第一阶段,生成第一层级的查询模板可以实现为:

使用键值生成算法,根据所述参数化查询语句样本,生成与第一阶段对应的第一层级的查询模板中的键值,并对所述参数化查询语句样本执行所述第一阶段对应的操作,根据第一阶段的执行结果生成所述第一层级的查询模板中的查询执行结果。

此过程可以与前述实施例中的过程相同,故不再赘述。

和/或,

针对第二阶段,生成第二层级的查询模板可以实现为:

使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成与所述第二阶段对应的第二层级的查询模板中的键值,并对所述第一阶段的执行结果执行所述第二阶段对应的操作,根据第二阶段的执行结果生成所述第二层级的查询模板中的查询执行结果。

此过程可以与前述实施例中的过程相同,故不再赘述。

和/或,

针对第三阶段,生成第三层级的查询模板可以实现为:

使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成与所述第三阶段对应的第三层级的查询模板中的键值,并对所述第二阶段的执行结果执行所述第三阶段对应的操作,根据所述第三阶段的执行结果生成所述第三层级的查询模板中的查询执行结果。

此过程可以与前述实施例中的过程相同,故不再赘述。

和/或,

针对第四阶段,生成第四层级的查询模板可以实现为:

使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成与所述第四阶段对应的第四层级的查询模板中的键值,并对所述第三阶段的执行结果执行所述第四阶段对应的操作,根据所述第四阶段的执行结果生成所述第四层级的查询模板中的查询执行结果。

通过本实施例,对获取的原始结构化查询语句进行参数化处理,获得参数化查询语句,并通过将参数化查询语句与多组查询模板进行匹配,可以获取匹配的查询模板对应的查询执行结果,并根据该查询执行结果生成物理执行计划。由于查询模板有多组,且查询模板根据查询执行逻辑确定,使得可以充分复用中间组的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用中间的查询模板的查询执行结果(也就是中间处理阶段的中间结果),从而不仅降低了查询成本和耗时,同时还提升了查询效率。

本实施例的查询处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例五

参照图5,示出了根据本发明实施例五的一种查询处理装置的结构框图。

本实施例的查询处理装置包括:参数化模块502,用于对原始结构化查询语句进行参数化处理,生成对应的参数化查询语句;匹配模块504,用于按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配,其中,所述多组查询模板根据所述查询执行逻辑确定;获取模块506,用于若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板,并获取待使用的查询模板对应的查询执行结果;生成模块508,用于根据所述查询执行结果,确定与所述原始结构化查询语句对应的物理执行计划。

可选地,所述多组查询模板包括与查询执行逻辑指示的多个处理阶段一一对应的多级查询模板,所述匹配模块504包括:阶段确定模块5041,用于按照结构化查询语句的查询执行逻辑,确定对所述参数化查询语句进行处理的处理阶段;模板确定模块5042,用于确定多级查询模板中与确定的所述处理阶段对应的查询模板;模板匹配模块5043,用于将所述参数化查询语句与所述对应层级的查询模板进行匹配。

可选地,所述装置还包括更新模块510,用于在所述将所述参数化查询语句与所述对应层级的查询模板进行匹配之后,若根据匹配结果确定当前层级的查询模板与所述参数化查询语句匹配,则更新所述参数化查询语句对应的处理阶段,并使模板确定模块5042执行确定多级查询模板中与确定的所述处理阶段对应层级的查询模板的动作;或者,所述装置还包括:匹配确定模块512,用于若根据匹配结果确定当前层级的查询模板与所述参数化查询语句不匹配,则确定是否存在已成功匹配的查询模板,若存在,则使获取模块506执行所述若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板的动作。

可选地,所述装置还包括:处理模块514,用于若不存在已成功匹配的查询模板,则对所述参数化查询语句按照所述查询执行逻辑进行各处理阶段对应的处理。

可选地,所述装置还包括:添加模块518,用于将所述参数化查询语句的各处理阶段的处理结果作为查询执行结果,添加到与各处理阶段对应层级的查询模板中。

可选地,所述多组查询模板包括与查询执行逻辑指示的多个处理阶段一一对应的多级查询模板,所述匹配模块504用于按照结构化查询语句的查询执行逻辑对应的多个处理阶段,对所述参数化查询语句和预先存储的、与所述多个处理阶段对应的多级查询模板进行匹配;其中,所述多个处理阶段包括:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段。

可选地,与所述多个处理阶段对应的多级查询模板中的每级查询模板均包括键值和对应的查询执行结果,其中,所述键值根据至少一个参数化查询语句样本生成,所述查询执行结果根据对所述至少一个参数化查询语句样本按照所述查询执行逻辑进行对应的处理阶段的处理后获得。

可选地,所述模板匹配模块5043用于将所述参数化查询语句对应的键值与对应层级的查询模板中的键值进行匹配。

可选地,所述装置还包括:模板创建模块500,用于根据所述查询执行逻辑对应的多个处理阶段,生成与所述多个处理阶段对应的多级查询模板。

可选地,各层级的查询模板中的键值通过以下方式生成:针对与所述第一阶段对应的第一层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本,生成所述第一层级的查询模板中的键值;和/或,针对与所述第二阶段对应的第二层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成所述第二层级的查询模板中的键值;和/或,针对与所述第三阶段对应的第三层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成所述第三层级的查询模板中的键值;和/或,针对于所述第四阶段对应的第四层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成所述第四层级的查询模板中的键值。

可选地,所述键值生成算法包括哈希算法。

可选地,所述模板创建模块520包括:样本获取模块,用于获取结构化查询语句样本,并对所述结构化查询语句样本进行参数化处理,获得参数化查询语句样本;语法解析模块,用于对所述参数化查询语句样本进行所述第一阶段对应的语法解析,根据解析结果生成与所述第一阶段对应的第一层级的查询模板;逻辑计划生成模块,用于对语法解析结果进行所述第二阶段对应的表达式转换和目标数据表元数据关联,获得初始逻辑执行计划,根据所述初始逻辑执行计划生成与所述第二阶段对应的第二层级的查询模板;逻辑计划优化模块,用于对所述逻辑执行计划进行所述第三阶段对应的规则优化,获得优化后的逻辑执行计划,根据优化后的逻辑执行计划生成与所述第三阶段对应的第三层级的查询模板;物理计划生成模块,用于对优化后的逻辑执行计划进行所述第四阶段对应的成本优化,获得物理执行计划,根据物理执行计划生成与所述第四阶段对应的第四层级的查询模板。

获取模块506用于若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中确定层级数最高的查询模板为待使用的查询模板,并获取待使用的查询模板对应的查询执行结果。

本实施例的查询处理装置用于实现前述多个方法实施例中相应的查询处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的查询处理装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。

实施例六

参照图6,示出了本发明的实施例六的一种查询处理装置的结构示意图。

在本实施例中,查询处理装置,包括:第一确定模块602,用于根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段;第二确定模块604,用于从多组查询模板中确定与当前处理阶段对应的当前组查询模板,其中,所述查询模板中包括用于指示原始查询语句对应的参数化查询语句的键值和对应的查询执行结果;第三确定模块606,用于确定所述当前组查询模板中是否存在与所述参数化查询语句匹配的查询模板;更新循环模块608,用于若存在,则更新当前处理阶段,并返回从多组查询模板中确定与当前处理阶段对应的当前组查询模板的操作继续执行,直至从匹配的查询模板的查询执行结果中获取对应的物理执行计划。

可选地,所述装置还包括:第四确定模块610,用于若所述当前组查询模板中未存在匹配的查询模板,则确定是否存在已成功匹配的查询模板;第五确定模块612,用于若存在,则确定已成功匹配、且对应的处理阶段最高的已匹配查询模板,并获取所述已匹配查询模板中的已匹配查询执行结果;物理计划获取模块614,用于对所述已匹配查询执行结果执行所述当前组查询模板对应的当前处理阶段以及所述当前处理阶段之后的处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

可选地,所述装置还包括:顺序处理模块616,用于若不存在已成功匹配的查询模板,则对所述参数化查询语句执行所述查询执行逻辑指示的各处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

可选地,所述装置还包括:多模板生成模块600,用于在根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段之前,对参数化查询语句样本执行所述查询执行逻辑指示的各处理阶段,并根据所述参数化查询语句样本和各处理阶段的执行结果,生成与各处理阶段对应的各组查询模板,其中,所述查询模板的键值根据所述参数化查询语句样本生成,所述查询执行结果根据对应的处理阶段的执行结果生成。

可选地,所述处理阶段包括:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段;所述多模板生成模块600用于使用键值生成算法,根据所述参数化查询语句样本,生成与第一阶段对应的第一组的查询模板中的键值,并对所述参数化查询语句样本执行所述第一阶段对应的操作,根据第一阶段的执行结果生成所述第一组的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成与所述第二阶段对应的第二组的查询模板中的键值,并对所述第一阶段的执行结果执行所述第二阶段对应的操作,根据第二阶段的执行结果生成所述第二组的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成与所述第三阶段对应的第三组的查询模板中的键值,并对所述第二阶段的执行结果执行所述第三阶段对应的操作,根据所述第三阶段的执行结果生成所述第三组的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成与所述第四阶段对应的第四组的查询模板中的键值,并对所述第三阶段的执行结果执行所述第四阶段对应的操作,根据所述第四阶段的执行结果生成所述第四组的查询模板中的查询执行结果。

实施例七

参照图7,示出了根据本发明的实施例七的一种数据库系统的结构示意图。

如图7所示,数据库系统包括数据库查询服务器和至少一个数据存储层;所述数据库查询服务器用于执行前述实施例一至三中任一的查询处理方法,以获得与原始结构化查询语句对应的物理执行计划,并根据所述物理执行计划访问至少一个所述数据存储层,并获取与所述原始结构化查询语句对应的结果数据,或者,执行实施例四所述的查询处理方法,以获得与原始结构化查询语句对应的物理执行计划,并根据所述物理执行计划访问至少一个所述数据存储层,并获取与所述原始结构化查询语句对应的结果数据。

实施例八

参照图8,示出了根据本发明实施例八的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图8所示,该电子设备可以包括:处理器(processor)802、通信接口(Communications Interface)804、存储器(memory)806、以及通信总线808。

其中:

处理器802、通信接口804、以及存储器806通过通信总线808完成相互间的通信。

通信接口804,用于与其它电子设备如终端设备或服务器进行通信。

处理器802,用于执行程序810,具体可以执行上述查询处理方法实施例中的相关步骤。

具体地,程序810可以包括程序代码,该程序代码包括计算机操作指令。

处理器802可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器806,用于存放程序810。存储器806可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序810具体可以用于使得处理器802执行以下操作:对原始结构化查询语句进行参数化处理,生成对应的参数化查询语句;按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配,其中,所述各组查询模板根据所述查询执行逻辑确定;若匹配结果指示存在匹配的至少一组查询模板,则从匹配的至少一组查询模板中,确定待使用的查询模板,并获取待使用的查询模板对应的查询执行结果;根据所述查询执行结果,确定与所述原始结构化查询语句对应的物理执行计划。

在一种可选的实施方式中,多组查询模板包括与查询执行逻辑指示的多个处理阶段一一对应的多级查询模板,程序810还用于使得处理器802在按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配时,按照结构化查询语句的查询执行逻辑,确定对所述参数化查询语句进行处理的处理阶段;确定多级查询模板中与确定的所述处理阶段对应层级的查询模板;将所述参数化查询语句与所述对应层级的查询模板进行匹配。

在一种可选的实施方式中,程序810还用于使得处理器802在所述将所述参数化查询语句与所述对应层级的查询模板进行匹配之后,若根据匹配结果确定当前层级的查询模板与所述参数化查询语句匹配,则更新所述参数化查询语句对应的处理阶段,并返回确定多级查询模板中与确定的所述处理阶段对应层级的查询模板的步骤;或者,若根据匹配结果确定当前层级的查询模板与所述参数化查询语句不匹配,则确定是否存在已成功匹配的查询模板,若存在,则执行所述若匹配结果指示存在匹配的至少一级查询模板,则从匹配的至少一级查询模板中,确定待使用的查询模板的步骤。

在一种可选的实施方式中,程序810还用于使得处理器802若不存在已成功匹配的查询模板,则对所述参数化查询语句按照所述查询执行逻辑进行各处理阶段对应的处理。

在一种可选的实施方式中,程序810还用于使得处理器802将所述参数化查询语句的各处理阶段的处理结果作为查询执行结果,添加到与各处理阶段对应层级的查询模板中。

在一种可选的实施方式中,所述多组查询模板包括与查询执行逻辑指示的多个处理阶段一一对应的多级查询模板,程序810还用于使得处理器802在所述按照结构化查询语句的查询执行逻辑,对所述参数化查询语句和预先存储的多组查询模板进行匹配时,按照结构化查询语句的查询执行逻辑对应的多个处理阶段,对所述参数化查询语句和预先存储的、与所述多个处理阶段对应的多级查询模板进行匹配;其中,所述多个处理阶段包括:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段。

在一种可选的实施方式中,与所述多个处理阶段对应的多级查询模板中的每级查询模板均包括键值和对应的查询执行结果,其中,所述键值根据至少一个参数化查询语句样本生成,所述查询执行结果根据对所述至少一个参数化查询语句样本按照所述查询执行逻辑进行对应的处理阶段的处理后获得。

在一种可选的实施方式中,程序810还用于使得处理器802在所述将所述参数化查询语句与所述对应层级的查询模板进行匹配时,将所述参数化查询语句对应的键值与对应层级的查询模板中的键值进行匹配。

在一种可选的实施方式中,程序810还用于使得处理器802根据所述查询执行逻辑对应的多个处理阶段,生成与所述多个处理阶段对应的多级查询模板。

在一种可选的实施方式中,各层级的查询模板中的键值通过以下方式生成:针对与所述第一阶段对应的第一层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本,生成所述第一层级的查询模板中的键值;和/或,针对与所述第二阶段对应的第二层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成所述第二层级的查询模板中的键值;和/或,针对与所述第三阶段对应的第三层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成所述第三层级的查询模板中的键值;和/或,针对于所述第四阶段对应的第四层级的查询模板,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成所述第四层级的查询模板中的键值。

在一种可选的实施方式中,所述键值生成算法包括哈希算法。

在一种可选的实施方式中,程序810还用于使得处理器802在根据所述查询执行逻辑对应的多个处理阶段,生成与所述多个处理阶段对应的多级查询模板时,获取结构化查询语句样本,并对所述结构化查询语句样本进行参数化处理,获得参数化查询语句样本;对所述参数化查询语句样本进行所述第一阶段对应的语法解析,根据解析结果生成与所述第一阶段对应的第一层级的查询模板;对语法解析结果进行所述第二阶段对应的表达式转换和目标数据表元数据关联,获得初始逻辑执行计划,根据所述初始逻辑执行计划生成与所述第二阶段对应的第二层级的查询模板;对所述逻辑执行计划进行所述第三阶段对应的规则优化,获得优化后的逻辑执行计划,根据优化后的逻辑执行计划生成与所述第三阶段对应的第三层级的查询模板;对优化后的逻辑执行计划进行所述第四阶段对应的成本优化,获得物理执行计划,根据物理执行计划生成与所述第四阶段对应的第四层级的查询模板。

在一种可选的实施方式中,程序810还用于使得处理器802在若匹配结果指示存在匹配的至少一级查询模板,则从匹配的至少一级查询模板中确定待使用的查询模板时,若匹配结果指示存在匹配的至少一级查询模板,则从逐级匹配获得的匹配的至少一级查询模板中确定层级数最高的查询模板为待使用的查询模板。

或者,

程序810具体可以用于使得处理器802执行以下操作:根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段;从多组查询模板中确定与当前处理阶段对应的当前组查询模板,其中,所述查询模板中包括用于指示原始查询语句对应的参数化查询语句的键值和对应的查询执行结果;确定所述当前组查询模板中是否存在与所述参数化查询语句匹配的查询模板;若存在,则更新当前处理阶段,并返回从多组查询模板中确定与当前处理阶段对应的当前组查询模板的操作继续执行,直至从匹配的查询模板的查询执行结果中获取对应的物理执行计划。

在一种可选的实施方式中,程序810还用于使得处理器802若所述当前组查询模板中未存在匹配的查询模板,则确定是否存在已成功匹配的查询模板;若存在,则确定已成功匹配、且对应的处理阶段最高的已匹配查询模板,并获取所述已匹配查询模板中的已匹配查询执行结果;对所述已匹配查询执行结果执行所述当前组查询模板对应的当前处理阶段以及所述当前处理阶段之后的处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

在一种可选的实施方式中,程序810还用于使得处理器802在若不存在已成功匹配的查询模板,则对所述参数化查询语句执行所述查询执行逻辑指示的各处理阶段对应的操作,以获得与所述原始结构化查询语句对应的物理执行计划。

在一种可选的实施方式中,程序810还用于使得处理器802在根据结构化查询语句的查询执行逻辑指示的处理阶段,确定当前处理阶段之前,对参数化查询语句样本执行所述查询执行逻辑指示的各处理阶段,并根据所述参数化查询语句样本和各处理阶段的执行结果,生成与各处理阶段对应的各组查询模板,其中,所述查询模板的键值根据所述参数化查询语句样本生成,所述查询执行结果根据对应的处理阶段的执行结果生成。

在一种可选的实施方式中,所述处理阶段包括:用于指示对结构化查询语句进行语法解析的第一阶段、用于指示根据结构化查询语句生成初始逻辑执行计划的第二阶段、用于指示对所述初始逻辑执行计划进行优化的第三阶段、和用于根据优化后的逻辑执行计划生成物理计划的第四阶段,所述多组查询模板包括与所述多个处理阶段一一对应的多级查询模板;程序810还用于使得处理器802在对参数化查询语句样本执行所述查询执行逻辑指示的各处理阶段,并根据所述参数化查询语句样本和各处理阶段的执行结果,生成与各处理阶段对应的各组查询模板时,使用键值生成算法,根据所述参数化查询语句样本,生成与第一阶段对应的第一层级的查询模板中的键值,并对所述参数化查询语句样本执行所述第一阶段对应的操作,根据第一阶段的执行结果生成所述第一层级的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和所述参数化查询语句样本中指示的访问数据库对象,生成与所述第二阶段对应的第二层级的查询模板中的键值,并对所述第一阶段的执行结果执行所述第二阶段对应的操作,根据第二阶段的执行结果生成所述第二层级的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的规则优化配置参数,生成与所述第三阶段对应的第三层级的查询模板中的键值,并对所述第二阶段的执行结果执行所述第三阶段对应的操作,根据所述第三阶段的执行结果生成所述第三层级的查询模板中的查询执行结果;和/或,使用键值生成算法,根据所述参数化查询语句样本和基于所述参数化查询语句样本确定的成本优化配置参数,生成与所述第四阶段对应的第四层级的查询模板中的键值,并对所述第三阶段的执行结果执行所述第四阶段对应的操作,根据所述第四阶段的执行结果生成所述第四层级的查询模板中的查询执行结果。

程序810中各步骤的具体实现可以参见上述查询处理方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。

通过本实施例的电子设备,对获取的原始结构化查询语句进行参数化处理,获得参数化查询语句,并通过将参数化查询语句与多组查询模板进行匹配,可以获取匹配的查询模板对应的查询执行结果,并根据该查询执行结果生成物理执行计划。由于查询模板有多组,且查询模板的组根据查询执行逻辑确定,使得可以充分复用中间组的查询模板对应的查询执行结果。这样在原始结构化查询语句中的某些值产生变化时,也可以复用中间组的查询模板的查询执行结果,从而不仅降低了查询成本和耗时,同时还提升了查询效率。

需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。

上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的查询处理方法。此外,当通用计算机访问用于实现在此示出的查询处理方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的查询处理方法的专用计算机。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

相关技术
  • 查询处理方法、装置、数据库系统、电子设备及存储介质
  • 数据处理方法、装置、数据库系统、电子设备及存储介质
技术分类

06120113034415