执行计划的查找方法、存储方法及装置与流程

文档序号:12733837阅读:267来源:国知局
执行计划的查找方法、存储方法及装置与流程

本申请涉及数据库技术领域,特别涉及一种执行计划的查找方法、存储方法及装置。



背景技术:

通常,数据库的访问可以通过SQL(Structured Query Language,结构化查询语言)来实现。一般地,数据库系统需要根据与访问任务对应的SQL语句,制定如何达到所述访问任务的目的的执行过程,这个过程被称为“执行计划”(execution plan),“执行计划”是一个可以用来被执行以返回用户所希望的结果的程序实例。

现有技术中,生成与SQL语句对应的执行计划的过程大致包括:首先,对SQL语句进行词法/语法的解析,然后,对SQL语句进行语义的解析,并基于优化规则,确定最优执行计划,最终,生成与上述最优执行计划的代码。由于上述生成执行计划的过程会耗用一定的时间,这在一定程度上影响到数据库的性能。有鉴于此,现有技术中的一种解决方案是“计划缓存”(plan cache)。其中,将预先生成的若干执行计划进行存储,以形成“计划缓存”。基于“计划缓存”,数据库系统在接收到每一SQL语句之后,便可以从上述“计划缓存”中查询与当前的SQL语句对应的执行计划,若查询到,则根据查询到的执行计划来执行数据库的访问任务;若没有查询到,则按照上述生成执行计划的过程来生成计划。由于相较于生成与SQL语句对应的执行计划的过程,从“计划缓存”中查询执行计划的过程所耗用的时间更短,可以提升数据库的性能。

在上述现有技术中,通常在查找与SQL语句对应的执行计划的过程中,包括对SQL语句进行语义的解析的步骤。然而,对SQL语句进行语义的解析的步骤一般需消耗一定的时间,这会造成数据库系统的性能不佳。



技术实现要素:

本申请实施例的目的是提供一种执行计划的查找方法、存储方法及装置,以解决现有技术中存在的问题。

为解决上述技术问题,本申请实施例提供的执行计划的查找方法、存储方法及装置是这样实现的:

一种执行计划的查找方法,包括:

接收SQL语句;

根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句;所述参数化SQL语句包含与所述SQL语句的字面量对应的参数;

查找预先存储的与所述参数化SQL语句对应的执行计划和约束条件;

若查找到,判断所述参数化SQL语句中的与所述约束条件对应的参数是否满足所述约束条件;若满足,将查询到的所述执行计划确定为待执行的执行计划。

一种执行计划的存储方法,包括:

接收SQL语句;

生成与所述SQL语句对应的执行计划;

根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句和约束条件;

将所述执行计划与所述参数化SQL语句进行映射以及将所述执行计划与所述约束条件进行映射并存储。

一种执行计划的查找装置,包括:

接收单元,接收SQL语句;

生成单元,根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句;所述参数化SQL语句包含与所述SQL语句的字面量对应的参数;

查找单元,查找预先存储的与所述参数化SQL语句对应的执行计划和约束条件;

判断单元,在查找到与所述参数化SQL语句对应的执行计划和约束条件时,判断所述参数化SQL语句中的与所述约束条件对应的参数是否满足所述约束条件;若满足,将查询到的所述执行计划确定为待执行的执行计划。

一种执行计划的存储装置,包括:

接收单元,接收SQL语句;

第一生成单元,生成与所述SQL语句对应的执行计划;

第二生成单元,根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句和约束条件;

存储单元,将所述执行计划与所述参数化SQL语句进行映射以及将所述执行计划与所述约束条件进行映射并存储。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

在预先将执行计划进行存储的过程中,通过将执行计划和参数化SQL语句、约束条件进行映射并存储。在接收SQL语句之后,通过生成与所述SQL语句对应的参数化SQL语句,便可查找预先存储的是否存在与所述参数化SQL语句对应的执行计划和约束条件;并在查找到执行计划和约束条件之后,依据所述约束条件来判断查询到执行计划是否可用(即是否为待执行的执行计划)。在上述过程中,查询执行计划的依据是参数化SQL语句,判断查询到的执行计划是否可用的依据是与执行计划对应的约束条件,可见,无论是查询执行计划的过程,还是判断查询到的执行计划是否可用的过程均无需通过对SQL语句进行语义的解析的方式来实现,也就是说,本申请实施例避免了在查找执行计划的过程中包括对SQL语句进行语义的解析的步骤,从而降低上述执行计划的查找过程所带来的时延,进而提升数据库系统的性能。

附图说明

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

图1为本申请的一种示例性的系统框图;

图2为本申请一实施例提供的执行计划的存储方法的流程图;

图3为本申请一实施例提供的执行计划的查找方法的流程图;

图4为本申请一示例性的应用场景图;

图5为本申请一实施例提供的执行计划的查找装置的框图;

图6为本申请一实施例提供的执行计划的存储装置的框图。

具体实施方式

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

众所周知,对数据库的访问操作可以包括:对数据的增加、删除、读取和更改等,一般可以通过SQL语句来实现上述访问操作。由于SQL语句是一种描述性的语言,用以指明用户所要做的事情而不用指明如何做所述事情,数据库系统需要根据用户的SQL语句,制定出与SQL语句对应的“执行计划”。一个执行计划一般由多个执行算子及其相互的调用关系组成。对于一个SQL语句所需实现的数据库访问任务,一般可以通过多种不同的执行计划来实现。为了尽可能的高效地完成用户的数据库访问任务,数据库系统一般通过某种手段(如:基于代价或规则),从多种执行计划中,选择一个执行效率最高的执行计划来执行,这个过程一般被称为“执行计划优化”。被选择的执行计划需要被实例化,即分配相应的物理节点并设置相应的节点信息及节点间的调用关系,这一个过程被称为“代码生成”。本文述及的数据库可以为关系型数据库等。

一般地,将执行计划的生成过程称为“硬解析”,而衡量数据库性能优劣的指标包括:执行计划的执行过程所需耗用的时间及生成执行计划的“硬解析”过程所需耗用的时间。在一些对时延要求较为苛刻的系统(如:“On-Line Transaction Processing(联机事务处理过程,OLTP)”)中,本身上述执行计划的执行过程所需耗用的时间会较短,则生成执行计划的过程所需耗用的时间越发不可忽略。

一种常用的提升数据库性能的方案称为“计划缓存”。正如前文所述,鉴于现有技术存在的下述问题:在查找执行计划的过程中,由于需要对SQL语句进行词法/语法的解析以及语义的解析,这一过程会带来较大的时延,造成数据库系统的性能不佳。本文提出一种对SQL进行参数化的执行计划的查找方法及存储方法,以解决上述问题。

图1为本申请的一种示例性的系统框图。如图1所示,该系统可以包括用户终端10,数据库服务器20,及用以实现用户终端10和数据库服务器20之间的通信的网络30,所述数据库服务器20与一数据库40连接。上述服务器20可以包括但不限于:一个或多个处理器或处理单元21、I/O接口22、内存23、总线及网络适配器24。上述服务器20可以与一个或多个外部设备25(如:键盘、鼠标)及显示器26进行通信。所述网络可以例如是局域网(LAN)、广域网(WAN)、和/或公共网络等。其中,在上述内存23中可以开辟一块存储空间,作为用以存储执行计划的计划缓存230。上述系统中,用户终端10向数据库服务器20发送携带SQL语句的请求,数据库服务器20根据所述SQL语句,从计划缓存230查找与所述SQL语句对应的执行计划或生成执行计划,并按照执行计划执行对数据库40的访问。其中,一般是将执行计划存储于缓存中,并可以按照执行计划的使用频率,将使用频率低的执行计划从缓存中清除。也就是说,一般常用的执行计划可以一直被存放于缓存中,不常用的计划在内存不够的情况下就会被清除。当然,上述执行计划也可以存储于其他类型的存储介质(如非易失性存储器)中。

图2为本申请一实施例提供的执行计划的存储方法的流程,该方法的执行主体可以是数据库服务器,在该方法流程中,将介绍如何将生成的执行计划存放于“计划缓存”中,该执行计划的存储方法可以包括如下步骤:

S101:接收SQL语句。

S102:生成与所述SQL语句对应的执行计划。

本申请实施例中,基于预先形成的计划缓存,数据库服务器在接收到用以对数据库进行访问的SQL语句之后,会先查找上述计划缓存中是否存在与当前SQL语句对应的执行计划(关于具体的查询过程将在下文予以介绍)。若查找到相匹配的并且可用的执行计划,则执行查到的执行计划来实现对数据库的访问。若没有查找到相匹配的并且可用的执行计划,则数据库服务器需要根据当前的SQL语句,生成相应的执行计划。当然,在某些情况下(如:计划缓存中还没有任何执行计划,需要在后续数据库的访问过程中不断补充),也可以直接跳过查找执行计划的步骤,直接根据接收到SQL语句生成相应的执行计划。

关于如何生成执行计划的过程(即“硬解析”过程),大致包括如下几个步骤:

1)对SQL语句进行词法/语法的解析,如:用以对sql语句中的关键字的正确性进行检查。当然,对SQL语句进行词法/语法的解析的步骤的作用还包括:识别一条SQL语句中每个词的属性,如,该词是关键字、字面量、变量等。

2)对SQL语句进行语义的解析,语义解析主要用以判断SQL语句中是否引用了不存在的对象或者是否违反了相关的约束条件等。

3)通过优化器创建一个最优的执行计划。优化器可以包括逻辑优化和物理优化,逻辑优化是指:应用各种不同的算法和策略对SQL语句进行转换,生成很多等价的SQL语句。物理优化是指:根据逻辑优化得到的各SQL语句,分别生成各自的执行计划,然后,通过为每个执行计划计算出一个代价(Cost),最终,选择最小代价(Cost)的执行计划作为最优的执行计划。

4)根据选择得到的最优的执行计划,生成与之对应的代码。

关于上述“硬解析”过程,是本领域技术人员所熟知的技术,本文不再予以详细介绍。总之,对于每一个SQL语句,如果从计划缓存(plan cache)中查找不到与之对应的执行计划,便可以通过上述“硬解析”过程生成一个与该SQL语句对应的执行计划。

S103:根据SQL语句,生成与SQL语句对应的参数化SQL语句和约束条件。

本申请实施例中,生成与SQL语句对应的参数化SQL语句的过程可以具体包括:

a)对所述SQL词法/语法的进行词法解析,确定所述SQL语句中包含的字面量。在计算机科学中,字面量(literal)是用于表达代码中的固定值的表示法(notation)。所述字面量可以包括:整数、浮点数以及字符串等。

举例而言,假设一条SQL语句是:

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

通过词法解析,可以确定上述SQL语句中每个词的词性(如:变量、关键字、字面量等),上述SQL语句中所包含的字面量为(带下划线的字符):

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20

b)将上述SQL语句中包含的字面量替换为参数,得到与所述SQL语句对应的参数化SQL语句;其中,所述参数包含与所述字面量对应的序号。

继续沿用上述例子,得到的参数化SQL语句是:

select c1,c2,c3from t1where c1=@1and c2like@2order by@3limit@4,@5;

其中,上述参数@1、@2、@3、@4、@5均替代了对应的字面量,并且上述每个参数均携带一个与字面量对应的序号,该序号可以代表着与参数对应的字面量在所述SQL语句中出现的先后次序。如:与@1对应的字面量是:“c1=”之后的字面量“1”,该字面量“1”在上述SQL语句中是第一个出现的字面量。

在实际使用的过程中,与同一个参数化SQL语句对应的SQL语句可以包括多种。例如:对于参数化SQL语句:

select c1,c2,c3from t1where c1=@1and c2like@2order by@3limit@4,@5;

与其对应的SQL语句可以包括:

①select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

②select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 2limit 1,20;

其中,上述SQL语句①和②的区别在于:位于“order by”之后的字面量不同。

对于上述SQL语句①和②,虽然它们对应于同样一个参数化SQL语句,但是它们并不能共用一个执行计划。有鉴于此,为了实现依据参数SQL语句来查询与SQL语句对应的执行计划的方案,需要在确定参数化SQL语句的同时,生成与该参数化SQL语句对应的约束条件。

本申请实施例中,生成上述约束条件的过程可以具体包括:

c)对SQL语句进行语义解析,确定SQL语句中包含的与约束条件相关的字面量。

其中,该步骤c可以具体包括但不限于如下步骤之一:

步骤一:对所述SQL语句进行语义解析,将所述SQL语句中包含的位于特定字符串之后的字面量确定为与约束条件相关的字面量;所述特定字符串包括:“order by”或“group by”等。

举例而言,对于SQL语句:

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

可以通过语义的解析,确定位于特定字符串“order by”之后的字面量“3”为与约束条件相关的字面量,并且可以确定该约束条件相关的字面量:“3”是对应于上述SQL语句中的第3个参数。

步骤二:对所述SQL语句进行语义解析,将所述SQL语句中包含的属于精度数字的字面量确定为与约束条件相关的字面量。

举例而言,对于如下两个SQL语句:“select 1.000001”和“select 1.000002”是不同共用同一个执行计划的,则上述“1.000001”和“1.000002”属于精度数字的字面量,可以将其确定为与约束条件相关的字面量。

步骤三:对所述SQL语句进行语义解析,将所述SQL语句中的恒真/恒假条件包含的字面量确定为与约束条件相关的字面量。

举例而言,假如一条SQL语句为:

select*from t1where 1=0and c1=2;

其中,“1=0”便是恒假条件,则可以确定该恒假条件中包含的字面量“1”和“0”为与约束条件相关的字面量。

又例如,如果上述SQL语句为:

select*from t1where 1=1and c1=2;

其中,“1=1”便是恒真条件,则可以确定该恒真条件中包含的字面量“1”和“1”为与约束条件相关的字面量。

d)根据确定的与约束条件相关的字面量,生成与所述参数化SQL语句对应的约束条件。

继续沿用上升例子,对于SQL语句:

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

生成的约束条件是:“与参数化SQL语句中的第3个参数对应的字面量等于3”。

又例如,对于SQL语句:

select*from t1where 1=0and c1=2;

生成的约束条件是:“与参数化SQL语句中的第1个参数对应的字面量不等于与第2个参数对应的字面量”。

需要说明的是,上述SQL语句中包含的与约束条件对应的字面量可以是一个也可以是多个。同样地,对于一个SQL语句,可以生成一个或多个约束条件,本申请不作限制。此外,本申请提及的约束条件并不限于以上列举的几种情况,对于本方案而言,任何可能导致具有相同参数化SQL语句的SQL语句不能共用同一执行计划的因数,均可以作为约束条件的一种,本文不再予以穷举。

S104:将执行计划与参数化SQL语句进行映射以及将执行计划与约束条件进行映射并存储。

本申请实施例中,计划缓存(plan cache)中所存储的执行计划的形式可以例如下表1所示:

表1:

至此,可以形成包含参数化SQL语句、执行计划、约束条件三者的映射关系的计划缓存。

图3为本申请一实施例提供的执行计划的查找方法的流程图,图4为本申请一示例性的应用场景图,配合参数图3和图4所示,该执行计划的查找方法可以包括如下步骤:

S201:接收SQL语句。

S202:根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句;其中,所述参数化SQL语句包含与所述SQL语句的字面量对应的参数。

本申请实施例中,上述步骤S202可以具体包括:对所述SQL语句进行词法解析,确定所述SQL语句中包含的字面量;将所述SQL语句中包含的字面量替换为参数,得到与所述SQL语句对应的参数化SQL语句;其中,所述参数包含与所述字面量对应的序号。

如图4所示,举例来说,假设一条SQL语句是:

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

生成的与其对应的参数化SQL语句是:

select c1,c2,c3from t1where c1=@1and c2like@2order by@3limit@4,@5;

本申请实施例中,在生成与所述SQL语句对应的参数化SQL语句之后,所述方法还包括如下步骤:

生成包含与所述参数化SQL语句中的参数对应的字面量的参数数组。

举例而言,对于SQL语句:

select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;

生成的参数数组是:

{1,‘senior%’,3,1,20}。

S203:查找预先存储的与所述参数化SQL语句对应的执行计划和约束条件。若查找到,进入步骤S204。

在生成参数数组的前提下,该步骤S203根据所述参数数组和所述约束条件,判断所述参数数组中的与所述约束条件对应的字面量是否满足所述约束条件。

如图4所示,举例而言,对于参数化SQL语句是:

select c1,c2,c3from t1where c1=@1and c2like@2order by@3limit@4,@5;

若计划缓存中存在与其对应的执行计划为:Plan1和Plan2(如上表1),其中,与Plan1对应的约束条件是:“第3个参数对应的字面量等于3”,与Plan2对应的约束条件是:“第3个参数对应的字面量等于3”。

S204:判断参数化SQL语句中的与所述约束条件对应的参数是否满足所述约束条件;若满足,进入步骤S205。

由于与上述参数化SQL语句:“select c1,c2,c3from t1where c1=@1and c2like@2order by@3limit@4,@5;”对应的参数数组为:

{1,‘senior%’,3,1,20}。

可见,与约束条件对应的参数为:@3,通过参数数组可以确定与参数@3对应的字面量是3,显然,与@3对应的字面量“3”满足与Plan1对应的约束条件,但是并不满足与Plan2对应的约束条件。也就是说,Plan1是当前SQL语句相匹配的并且可用的执行计划,Plan2不是当前SQL语句可用的执行计划。

S205:将查询到的所述执行计划确定为待执行的执行计划。

在上述例子中,将查询到的执行计划Plan1确定为与SQL语句:“select c1,c2,c3from t1where c1=1and c2like‘senior%’order by 3limit 1,20;”对应的待执行的执行计划,并依据上述参数数组中的字面量来执行该计划,得到查询结果并反馈至所述用户终端。由于执行计划并得到查询结果的过程是本领域技术人员所熟知的技术,本文不再予以赘述。需要说明的是,与每个参数对应的字面量可以以上述参数数组以外的其他形式进行表示,如:参数与字面量的映射表等。

需要说明的是,以上各实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S101和步骤S102的执行主体可以为设备1,步骤S103的执行主体可以为设备2;又比如,步骤S101的执行主体可以为设备1,步骤S102和步骤S103的执行主体可以为设备2;等等。

基于上述执行计划的存储方法和查找方法,在预先将执行计划进行存储的过程中,通过将执行计划和参数化SQL语句、约束条件进行映射并存储。在接收SQL语句之后,通过生成与所述SQL语句对应的参数化SQL语句,便可查找预先存储的是否存在与所述参数化SQL语句对应的执行计划和约束条件;并在查找到执行计划和约束条件之后,依据所述约束条件来判断查询到执行计划是否可用(即是否为待执行的执行计划)。在上述过程中,查询执行计划的依据是参数化SQL语句,判断查询到的执行计划是否可用的依据是与执行计划对应的约束条件,可见,无论是查询执行计划的过程,还是判断查询到的执行计划是否可用的过程均无需通过对SQL语句进行语义的解析的方式来实现,也就是说,本申请实施例避免了在查找执行计划的过程中包括对SQL语句进行语义的解析的步骤,从而降低上述执行计划的查找过程所带来的时延,进而提升数据库系统的性能。

值得说明的是,在一些对时延要求较为苛刻的系统(如:“On-Line Transaction Processing(联机事务处理过程,OLTP)”)中,虽然查找计划缓存的过程中对SQL语句进行语义解析的步骤所耗用的时间很短,但是,对于上述系统而言,语义解析的步骤所带来的上述时延是不可忽略的,特别是,若数据库系统面临较大的压力,上述时延更加不可忽略。本申请实施例可以在一定程度上避免上述步骤所带来的时延,提升数据库系统的性能。

图5为本申请一实施例提供的执行计划的查找装置的框图。基于上述执行计划的查找方法,本申请实施例提供的执行计划的查找装置100可以以软件、硬件、或软硬件结合的方式存在于上述数据库服务器中,该装置100可以包括:

接收单元101,接收SQL语句;

生成单元102,根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句;所述参数化SQL语句包含与所述SQL语句的字面量对应的参数;

查找单元103,查找预先存储的与所述参数化SQL语句对应的执行计划和约束条件;

判断单元104,在查找到与所述参数化SQL语句对应的执行计划和约束条件时,判断所述参数化SQL语句中的与所述约束条件对应的参数是否满足所述约束条件;若满足,将查询到的所述执行计划确定为待执行的执行计划。

本申请一可选的实施例中,所述装置100还包括:

数组生成单元,生成包含与所述参数化SQL语句中的参数对应的字面量的参数数组;

则所述判断单元104根据所述参数数组和所述约束条件,判断所述参数数组中与所述约束条件对应的字面量是否满足所述约束条件。

本申请一可选的实施例中,所述生成单元102包括:

字面量确定单元,对所述SQL语句进行词法解析,确定所述SQL语句中包含的字面量;

参数替换单元,将所述SQL语句中包含的字面量替换为参数,得到与所述SQL语句对应的参数化SQL语句;所述参数包含与所述字面量对应的序号。

图6为本申请一实施例提供的执行计划的存储装置的框图。基于上述执行计划的存储方法,本申请实施例提供的执行计划的存储装置200可以以软件、硬件、或软硬件结合的方式存在于上述数据库服务器中,所述执行计划的存储装置200可以包括:

接收单元201,接收SQL语句;

第一生成单元202,生成与所述SQL语句对应的执行计划;

第二生成单元203,根据所述SQL语句,生成与所述SQL语句对应的参数化SQL语句和约束条件;

存储单元204,将所述执行计划与所述参数化SQL语句进行映射以及将所述执行计划与所述约束条件进行映射并存储。

本申请一可选的实施例中,所述第一生成单元202在没有查找与所述SQL语句对应的执行计划时,生成与所述SQL语句对应的执行计划。

本申请一可选的实施例中,所述第二生成单元203包括:

字面量确定单元,对所述SQL语句进行词法解析,确定所述SQL语句中包含的字面量;

参数替换单元,将所述SQL语句中包含的字面量替换为参数,生成与所述SQL语句对应的参数化SQL语句;所述参数包含与所述字面量对应的序号;

约束字面量确定单元,对所述SQL语句进行语义解析,确定所述SQL语句中包含的与约束条件相关的字面量;

约束条件生成单元,根据确定的所述与约束条件相关的字面量,生成与所述参数化SQL语句对应的约束条件。

本申请一可选的实施例中,约束字面量确定单元对所述SQL语句进行语义解析,将所述SQL语句中包含的位于特定字符串之后的字面量确定为与约束条件相关的字面量;其中,所述特定字符串包括:“order by”或“group by”;或,

所述约束字面量确定单元对所述SQL语句进行语义解析,将所述SQL语句中包含的属于精度数字的字面量确定为与约束条件相关的字面量;或,

所述约束字面量确定单元对所述SQL语句进行语义解析,将所述SQL语句中的恒真/恒假条件包含的字面量确定为与约束条件相关的字面量。

基于上述执行计划的存储装置100和查找装置200,在预先将执行计划进行存储的过程中,通过将执行计划和参数化SQL语句、约束条件进行映射并存储。在接收SQL语句之后,通过生成与所述SQL语句对应的参数化SQL语句,便可查找预先存储的是否存在与所述参数化SQL语句对应的执行计划和约束条件;并在查找到执行计划和约束条件之后,依据所述约束条件来判断查询到执行计划是否可用(即是否为待执行的执行计划)。在上述过程中,查询执行计划的依据是参数化SQL语句,判断查询到的执行计划是否可用的依据是与执行计划对应的约束条件,可见,无论是查询执行计划的过程,还是判断查询到的执行计划是否可用的过程均无需通过对SQL语句进行语义的解析的方式来实现,也就是说,本申请实施例避免了在查找执行计划的过程中包括对SQL语句进行语义的解析的步骤,从而降低上述执行计划的查找过程所带来的时延,进而提升数据库系统的性能。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1