一种在数据库系统中动态整合执行结构的方法和装置的制作方法

文档序号:6423643阅读:157来源:国知局
专利名称:一种在数据库系统中动态整合执行结构的方法和装置的制作方法
技术领域
本发明的各实施方式涉及数据库管理,并且更具体地,涉及ー种在数据库系统中动态整合执行结构的方法、装置和相关计算机程序产品。
背景技术
数据库技术的发展提供了越来越大的数据存储能力,用户可以通过网络等方式对海量数据存储进行查询并获得所需的数据。在执行数据库查询时,当接收到来自客户端的查询语句(例如,以结构化查询语言SQL表示)时,需要对该查询语句进行语法分析、预编译、优化等步骤,继而生成执行结构。概括而言,执行结构是在执行查询时的“可执行”数据, 查询语句最終将被转换为执行结构才能实现查询。因此生成执行结构的速度成为影响数据库的查询性能的一个关键因素。为了提高查询性能而开发了专用于数据库管理系统的高速缓存,在数据库系统运行过程中,将以往的查询语句以及从这些查询语句生成的执行结构进行高速缓存。在后续查询中,如果发现当前的查询语句与先前高速缓存的查询语句相同(例如通过字符匹配方式判断两者是否相同),则可以直接获取相应的执行结构。这种高速缓存技术在很大程度上提高了数据查询效率。然而,随着动态SQL的出现,查询对象和查询条件愈发多样化,造成高速缓存的命中率降低,因而针对新的查询语句只能重新进行语法分析、预编译、优化等步骤,继而生成相应执行结构。在判断来自用户的查询是否命中高速缓存时,现有解决方案只能基于查询语句中的字符串匹配等简单的文本匹配方式判断是否命中。尽管目前已经出现了可以将查询语句的数字等常数值替换为通配符的技术,然而当查询语句中増加了新的查询条件或者包括函数等需要附加计算的公式时,只能针对查询生成新的执行结构。目前高速缓存中的执行结构是静态存储的,在出现高速缓存命中时,该执行结构被整体调用。而在高速缓存更新吋,将基于特定策略,将ー个执行结构整体地保留在高速缓存中,或者将其完全清除。目前并不存在动态调整已有执行结构以适应于新的查询语句的动态方法。另ー方面,高速缓存中可能会存储大量相似的查询语句(例如,查询语句的大部分内容相同,仅有部分查询条件不同),此时这种相似的查询语句对应的执行结构中将存在众多重复数据。可以认为这些重复数据是“冗余数据”,冗余数据占用了宝贵的高速缓存的存储空间。

发明内容
因此,在期望尽量重用现有的数据库管理系统的前提下,如何重用高速缓存中的执行结构进而加快数据查询的响应速度,这已经成为ー项亟待解决的问题。此外,还期望提供一种降低高速缓存中的冗余数据并提高高速缓存有效使用率的方法。为此,本发明的各实施方式提供了在数据库系统中动态整合执行结构的方法、装置和相关计算机程序产品。
在一个实施方式中,提供了ー种在数据库系统中动态整合执行结构的方法。该方法包括响应于对数据库系统进行查询,提取查询语句的主干和分支;从数据库系统的高速缓存获得主干的执行结构;生成分支的执行结构;以及将主干的执行结构与分支的执行结构整合为运行时执行结构;其中分支包含查询语句的至少一部分查询条件。在另ー实施方式中,至少一部分查询条件独立于高速缓存。在另ー实施方式中,查询条件包括以下至少ー类查询语句中的常量谓词(predicate)以及查询语句中的附加谓词。 在一个实施方式中,提供了ー种在数据库系统中动态整合执行结构的装置。该装置包括提取装置,被配置用于响应于对数据库系统进行查询,提取查询语句的主干和分支;获得装置,被配置用于从数据库系统的高速缓存获得主干的执行结构;生成装置,被配置用于生成分支的执行结构;以及整合装置,被配置用于将主干的执行结构与分支的执行结构整合为运行时执行结构;其中分支包含查询语句的至少一部分查询条件。在另ー实施方式中,至少一部分查询条件独立于高速缓存。在另ー实施方式中,查询条件包括以下至少ー类查询语句中的常量谓词以及查询语句中的附加谓词。采用本发明的各实施方式,可以提高高速缓存的使用效率,降低高速缓存中数据的冗余度,并且加快查询操作的响应速度。


结合附图并參考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中图I示意性示出了根据ー个解决方案的在数据库系统中利用高速缓存的执行结构的方法的示意图;图2示意性示出了根据本发明一个实施方式的方法的高层流程图;图3示意性示出了根据本发明一个实施方式的方法的详细流程图;图4示意性示出了根据本发明一个实施方式的高速缓存的结构示意图;图5A和图5B分别示意性示出了查询语句I的执行结构的示意图,其中图5A表示现有执行结构,图5B表示根据本发明一个实施方式的动态整合后的执行结构;图6A和图6B分别示意性示出了查询语句2的执行结构的示意图,其中图6A表示现有执行结构,图6B表示根据本发明一个实施方式的动态整合后的执行结构;图7A和图7B分别示意性示出了查询语句3的执行结构的示意图,其中图7A表示现有执行结构,图7B表示根据本发明一个实施方式的动态整合后的执行结构;以及图8示意性示出了根据本发明一个实施方式的装置的架构图。
具体实施例方式下面參考附图详细描述本发明的各实施方式。附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。在本发明的一个实施方式中,对执行结构进行动态整合。通过寻找当前查询语句与高速缓存中的执行结构所对应的各查询语句之间的关联,来尽可能地重用高速缓存中的执行结构,以便提高查询效率。下面将參考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。图I示意性示出了根据ー个解决方案的在数据库系统中利用高速缓存的执行结构的方法的示意图100。如图I所示,为加快用户查询数据库时的响应速度,可以在服务器 130中设置高速缓存134。当用户在客户端110处例如通过网络120访问数据存储140吋,服务器130中的判断装置132首先判断在高速缓存134中是否存储有与来自用户的查询语句相匹配的执行结构,也即判断来自用户的查询是否命中高速缓存134。在此解决方案中,如果命中,则可以直接调用高速缓存134中的执行结构进行查询;否则,需要对该查询语句生成相应执行结构。为方便下文描述,首先在表I中示出几个以SQL表示的查询语句的示例。表I查询语句的示例序号名称查询语句_ _
1查询语句 O SELECT COLI FROM TB I
WHERE COLK25 AND C0L2='CAT' __AND COL3-'2Ql 1-01-01' 查询语句 I SELECT COLl FROM TBl
WHERE COLl<25 AND COL2='CAT'
AND COL3='2011-01-01' __AND COL4= I I
3查询语句 2 SELECT COLl FROM TBl
WHERE COLK23AND COL2=SUBSTR('CATE',1,3)__AND COL3=’2011-08-23'
4查询语句 3 SELECT COLl FROM TBl
WHERE C0L1<TAN(1.57)
AND COL2=SUBSTR('CATE',l,3) __AND COL3='2011-08-06'
5查询语句 4 SELECT COLl FROM TB2
WHERE COLl<25 AND COL2='CAT' ___ANDCOL3='2m 1-01-01'
6查询语句 5 SELECT COLl FROM TB I, TB2
WHERE TB I .COLl =TB2.COL2 . I{and COLK25
I AND COL2='CAT'
Ij AND COLS^Ol 1-01-01'__在下文中将基于表I所示的查询语句描述本发明的各实施方式,在此的应用上下文为查询语句0已经被执行,并且该查询语句0的执行结构已经被高速缓存。查询语句I至5将要被执行,在执行前需要判断是否能够重用高速缓存中的查询语句0的执行结构。在图I所不的方案中,米用字符匹配的方式来判断是否命中闻速缓存134,如果当前查询语句稍有变化,则图I所示方案的高速缓存134将不能针对查询速度提供任何改迸。在表I所示的查询语句中,以谓词表示查询条件,例如查询语句0中包括以逻辑运算符“AND” 连接的谓词 “C0L1 < 25”、“C0L2 = ' CAT',,和“ C0L3=' 2011-01-01' ”。为便于下文描述,将各查询语句中的谓词依次称作第一谓词、第二谓词、...,以此类推。谓词可以包括三部分,对于“C0L1 < 25”而言,包括位于左侧的列名称“C0L1 ”,位于中间的条件符“ く,,以及位于右侧的量值“25”。应当注意,量值并不仅限于数字、字符串或者日期等常量形式,而是可以包括具有各种返回值的函数,或者还可以是列名称。
查询语句I至语句3的大部分内容类似于查询语句0,区别如下查询语句I还包括附加的谓词“C0L4 = I. 1”,在查询语句2的第二谓词包括函数SUBSTRC CATE' ,1,3),查询语句3的第三谓词包括函数TAN(I. 57)和SUBSTR(' CATE',1,3)。现有技术中,对于这种包括函数的谓词或者附加谓词的查询语句,需要生成新的执行结构。图2示意性示出了根据本发明一个实施方式的方法的高层流程图200。在步骤S202中,响应于对数据库系统进行查询,访问数据库系统的高速缓存。在步骤S204中,判断是否命中高速缓存,如果命中,则操作前进至步骤S206以执行根据本发明实施方式的动态整合;否则,操作前进至步骤S208进行常规整合,以便生成相应执行结构。在步骤S210中,运行执行结构(来自步骤S206的重用的执行结构 、或者来自步骤S208的常规方式生成的执行结构)。在下文中,将參见图3至图8详述根据本发明实施方式的方法和装置。图3示意性示出了根据本发明一个实施方式的方法的详细流程图300。在步骤S302中,响应于对数据库系统进行查询,提取查询语句的主干(stem)和分支(branch)。查询语句的主干和分支的组合构成整个查询语句,主干关联于高速缓存中的已有执行结构,也即可以重用的部分;分支包含查询语句的至少一部分查询条件,高速缓存中的现有执行结构并不满足这一部分查询条件。接着,在步骤S304中,从数据库系统的高速缓存获得主干的执行结构。由于主干对应于高速缓存中可以重用的执行结构,因而可以借助于简单操作来从数据库的高速缓存中获得主干的执行结构并进行适当调整,此时仅需要生成分支的执行结构,并将两个执行结构进行整合即可。在步骤S306中,生成分支的执行结构。应当注意,在一个实施方式中,在划分主干和分支时,尽可能地使主干包括查询语句中大多数查询条件,主干包括的查询条件可以通过重用高速缓存中的执行结构而得以满足,在查询时仅需要针对分支生成执行结构。由于分支中的查询条件通常较少,因而生成分支的执行结构不需要花费大量时间。最后在步骤S308中,将主干的执行结构与分支的执行结构整合为运行时执行结构。采用步骤S302至S308中的划分、获取、生成以及整合的步骤,所需时间将大大小于现有技术中高速缓存未命中时针对查询语句生成新的执行结构所需的时间,并且还可以节省高速缓存的存储效率,尽量在高速缓存中存储对于提高命中率最有效的查询语句的执行结构。在一个实施方式中,还可以设置划分主干和分支时遵循的规则,例如,如果重用高速缓存中的执行结构的整体开销接近或者大于生成新的执行结构时,还可以直接生成新的执行结构。现在參见表I所示的查询语句举例说明主干和分支的示例。在表I所示的查询语句0中,三个谓词分别表示三个查询条件“COLl < 25”、“C0L2 = ' CAT' ”和“C0L3='2011-01-01' ”。在查询语句I中,除了与查询语句0相同的三个谓词以外,还包括第四谓词“C0L4 = I. I”。此时,如果已经高速缓存了查询语句0的执行结构,则可以将查询语句I中第四谓词作为分支,并将其余部分作为主干。此时,可以通过重用高速缓存中的执行结构来缩短生成执行结构的时间。又例如,通过比较查询语句0和查询语句2可知,查询语句2的三个谓词的列名称、条件符均相同,不同在于第二谓词“C0L2 = SUBSTR (/ CATE/,1,3) ”中的“量值”是函数“ SUBSTRO ”。该函数表示计算子串的操作,即从字符串'CATE/的第I个字符开始,取3个字符。经计算可知,SUBSTR (' CATE',1,3)的结果为字符串'CAT'。对于查询语句2,可以将第二谓词中的函数作为分支。类似于查询语句2,在查询语句3的查询条件中,第一谓词中的“量值”是结果为常量的函数“TAN(1. 57)”,第二谓词中的“量值”也是结果为常量的函数“SUBSTRC CATE/,1,3) ”。对于查询语句3,可以将第一、第二两个谓词中的函数作为分支。在一个实施方式中,分支中包含的查询语句的至少一部分查询条件独立于高速缓存。基于主干和分支的划分规则可知,划分主干和分支目的在于尽量重用高速缓存中的执行结构,并且不能从高速缓存中直接获得分支的执行结构,而是需要単独生成。在一个实施方式中,查询条件包括以下至少ー类查询语句中的常量谓词以及查询语句中的附加谓词。常量谓词的含义是,包括计算结果为常量的函数的谓词,例如,上文查询语句2中的第二谓词“SUBSTRC CATE',1,3) ”,查询语句3中的第一谓词“C0L1< TAN(I. 57)”以及第二谓词“C0L2 = SUBSTRC CATE',1,3) ”。应当注意,在此仅示出了 常量谓词的示例,常量谓词中的列名称、条件符以及函数可以基于不同需求而变化,例如列名称可以是数据库表中的任一列的名称,条件符可以包括但不限干“>、<、=、>、<、デ”等任意条件符,而函数可以包括但不限于数学函数(诸如,TAN()、SIN())、字符串函数(诸如,SUBSTR0 ),还可以包括本领域技术人员已知的各种函数。在本发明的一个实施方式中,响应于对数据库系统进行查询,提取查询语句的主干和分支包括将查询语句中的常量项替换为通配符,形成统ー表示;获得与高速缓存中的至少ー个执行结构中之一相对应的缓存语句(cached statement);以及通过比较统ー表示和缓存语句,确定主干和分支。在此实施方式中,应当将“常量项”理解为既包括普通的常量(例如,数字、字符串、日期等常量),还包括可以通过计算所得的结果为常量的函数。应当注意,本实施方式中的缓存语句的表示方式与统ー表示相同,也需要将查询语句中的常量项替换为通配符。在下文表2中示出了缓存语句(对应于原始查询查询语句0)和统ー表示I至5 (分别对应于查询查询语句I至5)。表2统一表不的不例
权利要求
1.一种在数据库系统中动态整合执行结构的方法,包括 响应于对所述数据库系统进行查询,提取查询语句的主干和分支; 从所述数据库系统的高速缓存获得所述主干的执行结构; 生成所述分支的执行结构;以及 将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构; 其中所述分支包含所述查询语句的至少一部分查询条件。
2.根据权利要求I所述的方法,其中所述至少一部分查询条件独立于所述高速缓存。
3.根据权利要求2所述的方法,其中所述查询条件包括以下至少一类所述查询语句中的常量谓词以及所述查询语句中的附加谓词。
4.根据权利要求I至3中的任一项所述的方法,其中响应于对所述数据库系统进行查询,提取所述查询语句的所述主干和所述分支包括 将所述查询语句中的常量项替换为通配符,形成统一表示; 选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句;以及 通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支。
5.根据权利要求4所述的方法,其中选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句包括,根据以下至少一个推荐所述缓存语句 所述高速缓存中的所述至少一个执行结构的使用频率; 所述高速缓存中的所述至少一个执行结构的执行效率;以及 生成所述分支的执行结构的复杂度。
6.根据权利要求4所述的方法,其中通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支包括 响应于判断所述统一表示是所述缓存语句的超集或者完全匹配,将所述查询语句中与所述缓存语句相对应的部分指定为所述主干,并将所述查询语句中的其余部分指定为所述分支。
7.根据权利要求6所述的方法,其中判断所述统一表示是所述缓存语句的超集包括 将所述缓存语句划分为第一部分和第二部分,其中所述第一部分是所述缓存语句中谓词以外的部分; 当所述统一表示是所述第一部分的超集时,判断所述统一表示是否是所述第二部分的超集;以及 响应于所述统一表示是所述第二部分的超集,确定所述统一表示是所述缓存语句的超集。
8.根据权利要求I至3中任一项所述的方法,其中提取所述查询语句的主干和分支之前还包括 对所述查询语句进行规范化;以及 基于所述查询语句中谓词的类型,对经过规范化的所述查询语句进行分类。
9.根据权利要求I至3中任一项所述的方法,其中生成所述分支的执行结构包括 创建与所述分支中的每个查询条件相关联的条件节点;以及 将所述每个条件节点加入所述分支的执行结构。
10.根据权利要求I至3中任一项所述的方法,还包括利用所述查询语句以及所述运行时执行结构更新所述高速缓存。
11.一种在数据库系统中动态整合执行结构的装置,包括 提取装置,被配置用于响应于对所述数据库系统进行查询,提取查询语句的主干和分支; 获得装置,被配置用于从所述数据库系统的高速缓存获得所述主干的执行结构; 生成装置,被配置用于生成所述分支的执行结构;以及 整合装置,被配置用于将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构; 其中所述分支包含所述查询语句的至少一部分查询条件。
12.根据权利要求11所述的装置,其中所述至少一部分查询条件独立于所述高速缓存。
13.根据权利要求12所述的装置,其中所述查询条件包括以下至少一类所述查询语句中的常量谓词以及所述查询语句中的附加谓词。
14.根据权利要求11至13中的任一项所述的装置,其中所述提取装置包括 替换装置,被配置用于将所述查询语句中的常量项替换为通配符,形成统一表示; 选择装置,被配置用于选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句;以及 确定装置,被配置用于通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支。
15.根据权利要求14所述的装置,其中所述选择装置包括,用于根据以下至少一个推荐所述缓存语句的装置 所述高速缓存中的所述至少一个执行结构的使用频率; 所述高速缓存中的所述至少一个执行结构的执行效率;以及 生成所述分支的执行结构的复杂度。
16.根据权利要求14所述的装置,其中所述确定装置包括 指定装置,被配置用于响应于判断所述统一表示是所述缓存语句的超集或者完全匹配,将所述查询语句中与所述缓存语句相对应的部分指定为所述主干,并将所述查询语句中的其余部分指定为所述分支。
17.根据权利要求16所述的装置,其中所述指定装置包括 用于将所述缓存语句划分为第一部分和第二部分的装置,其中所述第一部分是所述缓存语句中谓词以外的部分; 用于当所述统一表示是所述第一部分的超集时、判断所述统一表示是否是所述第二部分的超集的装置;以及 用于响应于所述统一表示是所述第二部分的超集、确定所述统一表示是所述缓存语句的超集的装置。
18.根据权利要求11至13中任一项所述的装置,还包括 规范化装置,被配置用于对所述查询语句进行规范化;以及 分类装置,被配置用于基于所述查询语句中谓词的类型,对经过规范化的所述查询语句进行分类。
19.根据权利要求11至13中任一项所述的装置,其中所述生成装置包括 创建装置,被配置用于创建与所述分支中的每个查询条件相关联的条件节点;以及 添加装置,被配置用于将所述每个条件节点加入所述分支的执行结构。
20.根据权利要求11至13中任一项所述的装置,还包括 更新装置,被配置用于利用所述查询语句以及所述运行时执行结构更新所述高速缓存。
全文摘要
本发明的各实施方式涉及一种在数据库系统中动态整合执行结构的方法和装置。在一个实施方式中,提供了一种在数据库系统中动态整合执行结构的方法,该方法包括响应于对所述数据库系统进行查询,提取查询语句的主干和分支;从所述数据库系统的高速缓存获得所述主干的执行结构;生成所述分支的执行结构;以及将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构;其中所述分支包含所述查询语句的至少一部分查询条件。在另一实施方式中,提供了一种在数据库系统中动态整合执行结构装置。
文档编号G06F17/30GK102760143SQ20111011603
公开日2012年10月31日 申请日期2011年4月28日 优先权日2011年4月28日
发明者周祥, 杨新颖, 魏可伟 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1