CN102760143A - 一种在数据库系统中动态整合执行结构的方法和装置 - Google Patents
一种在数据库系统中动态整合执行结构的方法和装置 Download PDFInfo
- Publication number
- CN102760143A CN102760143A CN2011101160377A CN201110116037A CN102760143A CN 102760143 A CN102760143 A CN 102760143A CN 2011101160377 A CN2011101160377 A CN 2011101160377A CN 201110116037 A CN201110116037 A CN 201110116037A CN 102760143 A CN102760143 A CN 102760143A
- Authority
- CN
- China
- Prior art keywords
- execution architecture
- statement
- branch
- query statement
- buffer memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24524—Access plan code generation and invalidation; Reuse of access plans
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的各实施方式涉及一种在数据库系统中动态整合执行结构的方法和装置。在一个实施方式中,提供了一种在数据库系统中动态整合执行结构的方法,该方法包括:响应于对所述数据库系统进行查询,提取查询语句的主干和分支;从所述数据库系统的高速缓存获得所述主干的执行结构;生成所述分支的执行结构;以及将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构;其中所述分支包含所述查询语句的至少一部分查询条件。在另一实施方式中,提供了一种在数据库系统中动态整合执行结构装置。
Description
技术领域
本发明的各实施方式涉及数据库管理,并且更具体地,涉及一种在数据库系统中动态整合执行结构的方法、装置和相关计算机程序产品。
背景技术
数据库技术的发展提供了越来越大的数据存储能力,用户可以通过网络等方式对海量数据存储进行查询并获得所需的数据。在执行数据库查询时,当接收到来自客户端的查询语句(例如,以结构化查询语言SQL表示)时,需要对该查询语句进行语法分析、预编译、优化等步骤,继而生成执行结构。概括而言,执行结构是在执行查询时的“可执行”数据,查询语句最终将被转换为执行结构才能实现查询。因此生成执行结构的速度成为影响数据库的查询性能的一个关键因素。
为了提高查询性能而开发了专用于数据库管理系统的高速缓存,在数据库系统运行过程中,将以往的查询语句以及从这些查询语句生成的执行结构进行高速缓存。在后续查询中,如果发现当前的查询语句与先前高速缓存的查询语句相同(例如通过字符匹配方式判断两者是否相同),则可以直接获取相应的执行结构。这种高速缓存技术在很大程度上提高了数据查询效率。
然而,随着动态SQL的出现,查询对象和查询条件愈发多样化,造成高速缓存的命中率降低,因而针对新的查询语句只能重新进行语法分析、预编译、优化等步骤,继而生成相应执行结构。在判断来自用户的查询是否命中高速缓存时,现有解决方案只能基于查询语句中的字符串匹配等简单的文本匹配方式判断是否命中。尽管目前已经出现了可以将查询语句的数字等常数值替换为通配符的技术,然而当查询语句中增加了新的查询条件或者包括函数等需要附加计算的公式时,只能针对查询生成新的执行结构。
目前高速缓存中的执行结构是静态存储的,在出现高速缓存命中时,该执行结构被整体调用。而在高速缓存更新时,将基于特定策略,将一个执行结构整体地保留在高速缓存中,或者将其完全清除。目前并不存在动态调整已有执行结构以适应于新的查询语句的动态方法。
另一方面,高速缓存中可能会存储大量相似的查询语句(例如,查询语句的大部分内容相同,仅有部分查询条件不同),此时这种相似的查询语句对应的执行结构中将存在众多重复数据。可以认为这些重复数据是“冗余数据”,冗余数据占用了宝贵的高速缓存的存储空间。
发明内容
因此,在期望尽量重用现有的数据库管理系统的前提下,如何重用高速缓存中的执行结构进而加快数据查询的响应速度,这已经成为一项亟待解决的问题。此外,还期望提供一种降低高速缓存中的冗余数据并提高高速缓存有效使用率的方法。为此,本发明的各实施方式提供了在数据库系统中动态整合执行结构的方法、装置和相关计算机程序产品。
在一个实施方式中,提供了一种在数据库系统中动态整合执行结构的方法。该方法包括:响应于对数据库系统进行查询,提取查询语句的主干和分支;从数据库系统的高速缓存获得主干的执行结构;生成分支的执行结构;以及将主干的执行结构与分支的执行结构整合为运行时执行结构;其中分支包含查询语句的至少一部分查询条件。
在另一实施方式中,至少一部分查询条件独立于高速缓存。
在另一实施方式中,查询条件包括以下至少一类:查询语句中的常量谓词(predicate)以及查询语句中的附加谓词。
在一个实施方式中,提供了一种在数据库系统中动态整合执行结构的装置。该装置包括:提取装置,被配置用于响应于对数据库系统进行查询,提取查询语句的主干和分支;获得装置,被配置用于从数据库系统的高速缓存获得主干的执行结构;生成装置,被配置用于生成分支的执行结构;以及整合装置,被配置用于将主干的执行结构与分支的执行结构整合为运行时执行结构;其中分支包含查询语句的至少一部分查询条件。
在另一实施方式中,至少一部分查询条件独立于高速缓存。
在另一实施方式中,查询条件包括以下至少一类:查询语句中的常量谓词以及查询语句中的附加谓词。
采用本发明的各实施方式,可以提高高速缓存的使用效率,降低高速缓存中数据的冗余度,并且加快查询操作的响应速度。
附图说明
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示意性示出了根据一个解决方案的在数据库系统中利用高速缓存的执行结构的方法的示意图;
图2示意性示出了根据本发明一个实施方式的方法的高层流程图;
图3示意性示出了根据本发明一个实施方式的方法的详细流程图;
图4示意性示出了根据本发明一个实施方式的高速缓存的结构示意图;
图5A和图5B分别示意性示出了查询语句1的执行结构的示意图,其中图5A表示现有执行结构,图5B表示根据本发明一个实施方式的动态整合后的执行结构;
图6A和图6B分别示意性示出了查询语句2的执行结构的示意图,其中图6A表示现有执行结构,图6B表示根据本发明一个实施方式的动态整合后的执行结构;
图7A和图7B分别示意性示出了查询语句3的执行结构的示意图,其中图7A表示现有执行结构,图7B表示根据本发明一个实施方式的动态整合后的执行结构;以及
图8示意性示出了根据本发明一个实施方式的装置的架构图。
具体实施方式
下面参考附图详细描述本发明的各实施方式。附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本发明的一个实施方式中,对执行结构进行动态整合。通过寻找当前查询语句与高速缓存中的执行结构所对应的各查询语句之间的关联,来尽可能地重用高速缓存中的执行结构,以便提高查询效率。
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
图1示意性示出了根据一个解决方案的在数据库系统中利用高速缓存的执行结构的方法的示意图100。如图1所示,为加快用户查询数据库时的响应速度,可以在服务器130中设置高速缓存134。当用户在客户端110处例如通过网络120访问数据存储140时,服务器130中的判断装置132首先判断在高速缓存134中是否存储有与来自用户的查询语句相匹配的执行结构,也即判断来自用户的查询是否命中高速缓存134。在此解决方案中,如果命中,则可以直接调用高速缓存134中的执行结构进行查询;否则,需要对该查询语句生成相应执行结构。
为方便下文描述,首先在表1中示出几个以SQL表示的查询语句的示例。
表1查询语句的示例
在下文中将基于表1所示的查询语句描述本发明的各实施方式,在此的应用上下文为:查询语句0已经被执行,并且该查询语句0的执行结构已经被高速缓存。查询语句1至5将要被执行,在执行前需要判断是否能够重用高速缓存中的查询语句0的执行结构。
在图1所示的方案中,采用字符匹配的方式来判断是否命中高速缓存134,如果当前查询语句稍有变化,则图1所示方案的高速缓存134将不能针对查询速度提供任何改进。在表1所示的查询语句中,以谓词表示查询条件,例如查询语句0中包括以逻辑运算符“AND”连接的谓词“COL1<25”、“COL2=′CAT′”和“COL3=′2011-01-01′”。为便于下文描述,将各查询语句中的谓词依次称作第一谓词、第二谓词、...,以此类推。谓词可以包括三部分,对于“COL1<25”而言,包括位于左侧的列名称“COL1”,位于中间的条件符“<”以及位于右侧的量值“25”。应当注意,量值并不仅限于数字、字符串或者日期等常量形式,而是可以包括具有各种返回值的函数,或者还可以是列名称。
查询语句1至语句3的大部分内容类似于查询语句0,区别如下:查询语句1还包括附加的谓词“COL4=1.1”,在查询语句2的第二谓词包括函数SUBSTR(′CATE′,1,3),查询语句3的第三谓词包括函数TAN(1.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中的划分、获取、生成以及整合的步骤,所需时间将大大小于现有技术中高速缓存未命中时针对查询语句生成新的执行结构所需的时间,并且还可以节省高速缓存的存储效率,尽量在高速缓存中存储对于提高命中率最有效的查询语句的执行结构。
在一个实施方式中,还可以设置划分主干和分支时遵循的规则,例如,如果重用高速缓存中的执行结构的整体开销接近或者大于生成新的执行结构时,还可以直接生成新的执行结构。
现在参见表1所示的查询语句举例说明主干和分支的示例。在表1所示的查询语句0中,三个谓词分别表示三个查询条件“COL1<25”、“COL2=′CAT′”和“COL3=′2011-01-01′”。在查询语句1中,除了与查询语句0相同的三个谓词以外,还包括第四谓词“COL4=1.1”。此时,如果已经高速缓存了查询语句0的执行结构,则可以将查询语句1中第四谓词作为分支,并将其余部分作为主干。此时,可以通过重用高速缓存中的执行结构来缩短生成执行结构的时间。
又例如,通过比较查询语句0和查询语句2可知,查询语句2的三个谓词的列名称、条件符均相同,不同在于第二谓词“COL2=SUBSTR(′CATE′,1,3)”中的“量值”是函数“SUBSTR()”。该函数表示计算子串的操作,即从字符串′CATE′的第1个字符开始,取3个字符。经计算可知,SUBSTR(′CATE′,1,3)的结果为字符串′CAT′。对于查询语句2,可以将第二谓词中的函数作为分支。类似于查询语句2,在查询语句3的查询条件中,第一谓词中的“量值”是结果为常量的函数“TAN(1.57)”,第二谓词中的“量值”也是结果为常量的函数“SUBSTR(′CATE′,1,3)”。对于查询语句3,可以将第一、第二两个谓词中的函数作为分支。
在一个实施方式中,分支中包含的查询语句的至少一部分查询条件独立于高速缓存。基于主干和分支的划分规则可知,划分主干和分支目的在于尽量重用高速缓存中的执行结构,并且不能从高速缓存中直接获得分支的执行结构,而是需要单独生成。
在一个实施方式中,查询条件包括以下至少一类:查询语句中的常量谓词以及查询语句中的附加谓词。常量谓词的含义是,包括计算结果为常量的函数的谓词,例如,上文查询语句2中的第二谓词“SUBSTR(′CATE′,1,3)”,查询语句3中的第一谓词“COL1<TAN(1.57)”以及第二谓词“COL2=SUBSTR(′CATE′,1,3)”。应当注意,在此仅示出了常量谓词的示例,常量谓词中的列名称、条件符以及函数可以基于不同需求而变化,例如列名称可以是数据库表中的任一列的名称,条件符可以包括但不限于“>、<、=、≥、≤、≠”等任意条件符,而函数可以包括但不限于数学函数(诸如,TAN()、SIN())、字符串函数(诸如,SUBSTR()),还可以包括本领域技术人员已知的各种函数。
在本发明的一个实施方式中,响应于对数据库系统进行查询,提取查询语句的主干和分支包括:将查询语句中的常量项替换为通配符,形成统一表示;获得与高速缓存中的至少一个执行结构中之一相对应的缓存语句(cached statement);以及通过比较统一表示和缓存语句,确定主干和分支。
在此实施方式中,应当将“常量项”理解为既包括普通的常量(例如,数字、字符串、日期等常量),还包括可以通过计算所得的结果为常量的函数。应当注意,本实施方式中的缓存语句的表示方式与统一表示相同,也需要将查询语句中的常量项替换为通配符。在下文表2中示出了缓存语句(对应于原始查询查询语句0)和统一表示1至5(分别对应于查询查询语句1至5)。
表2统一表示的示例
图4示意性示出了根据本发明一个实施方式的高速缓存的结构示意图400。在此实施方式中,高速缓存410包括缓存语句420和执行结构430两部分,例如以二元组(缓存语句420,执行结构430)表示。例如,假设刚刚启动数据库系统并且高速缓存410为空,当使用查询语句0来查询数据库系统时,生成与查询语句0相对应的执行结构。
在一个实施方式中,在提取查询语句主干和分支时,由于并不关心谓词中“量值”的具体内容,因而在高速缓存410中只需要保持已经将常量项替换为通配符后的缓存语句即可。随着查询次数的增加,高速缓存410中的二元组(缓存语句,执行结构)的数量将会增加,并且各个二元组的内容也会随着查询而更新。更新方式取决于高速缓存的更新策略,例如可以采用最近最少使用原则等。
应当注意,图4示出的在高速缓存410中以二元组存储缓存语句420和执行结构430的数据结构仅仅是一个示例方式,本领域技术人员还可以采用其他方式存储,例如可以采用三元组(查询语句,缓存语句,执行结构)存储;又例如,可以在高速缓存410以外的存储器中设置存储区域用于存储缓存语句,并且在每个缓存语句和相应的执行结构之间建立对应关系。
通过比较表2中所示的缓存语句和统一表示1至3可以发现,在替换通配符操作之后,统一表示1与缓存语句的差异在于增加了第四谓词。尽管查询语句1至3不同于查询语句0(谓词中的量值不同),然而主要部分是类似的。通配符替换操作消除了查询语句和缓存语句之间的次要差异,并且更多地体现出查询语句1至3之间的相似性。
在一个实施方式中,采用将缓存语句与当前查询语句的统一表示相比较的方法确定查询语句的主干和分支,可以在较短时间内确定主干和分支。可以快速确定主干和分支的一个关键在于,如何从高速缓存中快速选取可以用作主干的缓存语句。在一个实施方式中,获得与高速缓存中的至少一个执行结构中之一相对应的缓存语句包括,根据以下至少一个推荐缓存语句:高速缓存中的至少一个执行结构的使用频率;高速缓存中的至少一个执行结构的执行效率;以及生成分支的执行结构的复杂度。
在一个实施方式中,可以统计高速缓存中各执行结构的使用频率,并且优先推荐使用频率最高的执行结构相对应的缓存语句。又例如,重用高速缓存中的执行结构的目的在于提高查询效率,因而可以推荐执行效率最高的执行结构相对应的缓存语句。又例如,由于需要将主干的执行结构和分支的执行结构整合为运行时执行结构,除了考虑主干的各种相关因素以外,还需要考虑生成分支的执行结构的复杂度。通常而言,生成分支的执行结构的复杂度成为影响查询速度的瓶颈,因而可以推荐使得生成分支的执行结构时复杂度最低的缓存语句。
在一个实施方式中,还可以权衡上述各个推荐规则,例如为各个推荐规则设置权重,并且采用加权求和等方法来推荐分值最高的缓存语句。
在一个实施方式中,通过比较统一表示和缓存语句,确定主干和分支包括:响应于判断统一表示是缓存语句的超集(superset)或者完全匹配,将查询语句中与缓存语句相对应的部分作为主干,并将查询语句中的其余部分作为分支。
在此所谓的超集是与子集相对的概念,如果缓存语句中的每一个元素都在统一表示中,且统一表示中包含缓存语句中没有的元素,则集合统一表示就是缓存语句的超集。应当注意,此处的元素是指在结构化查询语言中具有语法含义的单位(例如,SQL中的关键字、数据库表的名称、逻辑运算符和谓词等,注意:此时谓词中的量值已经被替换为通配符),而不是统一表示中的每个字符构成的字符串。
例如,由于统一表示1是缓存语句的超集,可以将统一表示1中与缓存语句对应的部分作为主干,并将通配符替换后的第四谓词“COL4=$”作为分支。又例如,统一表示2与缓存语句完全匹配,则可以将统一表示2中与缓存语句对应的部分作为主干,并将在通配符替换过程中被替换的谓词“COL2=SUBSTR(′CATE′,1,3)”作为分支。
在一个实施方式中,判断统一表示是缓存语句的超集包括:将缓存语句划分为第一部分和第二部分,其中第一部分是缓存语句中谓词以外的部分;当统一表示是第一部分的超集时,判断统一表示是否是第二部分的超集;以及响应于统一表示是第二部分的超集,确定统一表示是缓存语句的超集。
如果统一表示不是缓存语句中第一部分的超集,那么该统一表示更不可能是缓存语句的超集。因此将缓存语句划分为第一部分和第二部分可以加快判断速度,即只要统一表示不是缓存语句中第一部分的超集则不必再考虑第二部分。现在举例说明如何将缓存语句划分为第一部分和第二部分。对于上文表2所示的缓存语句,可以进行如下划分:
第一部分:SELECT COL1 FROM TB1
第二部分:WHERE COL1<$
AND COL2=$
AND COL3=$
例如上文表2所示的统一表示4表示针对表“TB2”进行查询,在判断统一表示4是否为缓存语句的超集时,先将缓存语句的第一部分(也即,“SELECT COL1 FROM TB1”)与统一表示4进行比较,即可得知统一表示4不是缓存语句的超集(两者的查询对象不同,分别为表“TB2”和表“TB1”)。
例如当判断统一表示1是否为缓存语句的超集时,发现统一表示1是第一部分的超集,接着得知统一表示1也是第二部分的超集,由此结论为:统一表示是缓存语句的超集。
又例如,当对数据库中的多个表进行查询(例如查询语句5,分别查询表“TB1”和“TB2”)时,还需要进行连接(join)运算。此时可以首先比较统一表示和缓存语句中第一部分(谓词以外的部分),如果不是超集,则可以直接判断统一表示不是缓存语句的超集,而无需再比较其他部分。
在一个实施方式中,提取查询语句的主干和分支之前还包括:对查询语句进行规范化(normalization);以及基于查询语句中谓词的类型,对经过规范化的查询语句进行分类。执行规范化操作的目的在于将查询语句转换为规范的格式,例如去除查询语句中的多余空格、制表符或者回车等。后续的对规范化的查询语句进行分类目的在于为创建分支的执行结构进行预处理。例如,对于普通常量谓词(其中量值是普通常量的谓词),无需进行附加操作;对于函数常量谓词(其中量值是返回值为常量的函数的谓词),需要记录函数的函数名称、参数、返回值类型等信息,以便后续创建分支的执行结构时使用。
在一个实施方式中,生成分支的执行结构包括:创建与分支中的每个查询条件相关联的条件节点;以及将每个条件节点加入分支的执行结构。在下文中,将参见图5A和图5B详述生成分支的执行结构的过程。
图5A和图5B分别示意性示出了针对查询语句1的执行结构的示意图500。在现有执行结构500中,根节点510表示调用该执行结构的入口节点,选择节点520包括执行查询时涉及的各种交互参数,映射节点522表示各参数的内部格式与外部格式之间的映射关系,而编码节点524表示采用何种编码方案。应当注意,图5A仅仅是执行结构的概括示意,在来自不同提供商的数据库系统中,可以分别采用不同的层级结构。
图5B表示根据本发明一个实施方式的动态整合的执行结构500′。应当注意,图5B中的根节点510′、选择节点520′、映射节点522′以及编码节点524′分别对应于图5A中的各节点,执行结构500′中的上述节点是从数据库系统的高速缓存中获得的主干的执行结构。
下面描述如何生成分支的执行结构。首先,向选择节点520′附加表示分支的执行结构的扩展节点540,并且向扩展节点540附加表示查询语句1中各谓词相关的通配符节点540-1至540-4,其中每个通配符节点包括一个谓词中被替换为通配符的量值的信息。例如,通配符节点540-1可以包括查询语句1中第一谓词“COL1<25”的相关信息,通配符节点540-2可以包括查询语句1中第二谓词“COL2=′CAT′”的相关信息,而通配符节点540-4可以包括第四谓词(附加谓词)“COL4=1.1”的相关信息。在图5B中以虚线框示出了需要附加计算的节点,该节点540-4直接附接至扩展节点540。
如图5B所示,分支的执行结构通过扩展节点540与主干的执行结构整合为一体。扩展节点540左侧的部分均为从高速缓存中获取的主干的执行结构,此时仅需要额外生成分支的执行结构并将主干的执行结构与分支的执行结构整合为运行时执行结构。相对于现有技术中在发现高速缓存未命中时生成新的执行结构的方法,本发明的实施方式可以大大缩短生成执行结构的时间,进而提高查询效率。
图6A和图6B分别示意性示出了针对查询语句2的执行结构的示意图。如图6A所示的执行结构600的结构类似于图5A所示,不同之处在于还包括函数节点630(以虚线框示出)。函数节点可以包括执行查询时所需的额外处理,对于查询语句2而言,可以包括第二谓词中的函数“SUBSTR(′CATE′,1,3)”,此函数节点630的计算结果为字符串′CAT′。
图6B表示根据本发明一个实施方式的动态整合的执行结构600′,扩展节点640和通配符节点640-1至640-3的含义与图5B所示相同。不同之处在于,函数节点630′对应于第二谓词,因而该函数节点630′直接被附加至第二谓词的通配符节点640-2。
图7A和图7B分别示意性示出了针对查询语句3的执行结构的示意图,其中图7A表示现有执行结构700,图7B表示根据本发明一个实施方式的动态整合的执行结构700′。由于查询语句3中的第一谓词和第二谓词分别包括两个函数TAN(1.57)和SUBSTR(′CATE′,1,3),因而在图7A中分别包括两个函数节点730和732。并且在动态整合后的执行结构700′中,两个函数节点730′和732′(以虚线框示出)分别附接至通配符节点740-1和740-2,在此不再赘述。
在一个实施方式中,还可以利用查询语句以及运行时执行结构更新高速缓存。随着查询操作的执行,高速缓存中的执行结构不断变化,高速缓存的一个基本更新策略是,淘汰高速缓存中最不活跃的执行结构。例如,可以基于历史统计对高速缓存中的执行结构的重用次数进行排序,并且利用当前查询语句和运行时执行结构的二元组更新高速缓存,取代高速缓存中排名较低的执行结构的二元组。
在一个实施方式中,可以提供包括必选部分和可选部分的查询界面供用户使用,并在用户输入查询条件时自动生成查询语句,此时还可以指定必选部分对应的执行结构常驻于高速缓存。
图8示意性示出了根据本发明一个实施方式的装置的架构图800。该装置包括:提取装置810,被配置用于响应于对数据库系统进行查询,提取查询语句的主干和分支;获得装置820,被配置用于从数据库系统的高速缓存获得主干的执行结构;生成装置830,被配置用于生成分支的执行结构;以及整合装置840,被配置用于将主干的执行结构与分支的执行结构整合为运行时执行结构;其中分支包含查询语句的至少一部分查询条件。
在另一实施方式中,至少一部分查询条件独立于高速缓存。
在另一实施方式中,查询条件包括以下至少一类:查询语句中的常量谓词以及查询语句中的附加谓词。
在另一实施方式中,提取装置包括:替换装置,被配置用于将查询语句中的常量项替换为通配符,形成统一表示;选择装置,被配置用于选择与高速缓存中的至少一个执行结构中之一相对应的缓存语句;以及确定装置,被配置用于通过比较统一表示和缓存语句,确定主干和分支。
在另一实施方式中,选择装置包括,用于根据以下至少一个推荐缓存语句的装置:高速缓存中的至少一个执行结构的使用频率;高速缓存中的至少一个执行结构的执行效率;以及生成分支的执行结构的复杂度。
在另一实施方式中,确定装置包括:指定装置,被配置用于响应于判断统一表示是缓存语句的超集或者完全匹配,将查询语句中与缓存语句相对应的部分指定为主干,并将查询语句中的其余部分指定为分支。
在另一实施方式中,指定装置包括:用于将缓存语句划分为第一部分和第二部分的装置,其中第一部分是缓存语句中谓词以外的部分;用于当统一表示是第一部分的超集时、判断统一表示是否是第二部分的超集的装置;以及用于响应于统一表示是第二部分的超集、确定统一表示是缓存语句的超集的装置。
在另一实施方式中,还包括:规范化装置,被配置用于对查询语句进行规范化;以及分类装置,被配置用于基于查询语句中谓词的类型,对经过规范化的查询语句进行分类。
在另一实施方式中,生成装置包括:创建装置,被配置用于创建与分支中的每个查询条件相关联的条件节点;以及添加装置,被配置用于将每个条件节点加入分支的执行结构。
在另一实施方式中,还包括:更新装置,被配置用于利用查询语句以及运行时执行结构更新高速缓存。
应当注意,本发明的各实施方式提供了一种动态整合执行结构的方法、装置和相应的计算机程序产品。应当注意,尽管说明书中结合具体的数据结构描述了各个实施方式,然而本领域技术人员应当理解,在此并不限制本发明的各实施方式的应用环境。例如,结合不同数据库提供商的具体实现,本发明的实施方式可以在IBMTM、OracleTM、MicrosoftTM等应用环境中实现。
本发明可以采取硬件实施方式、软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。
介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适合于存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到系统。
网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。
从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。
Claims (20)
1.一种在数据库系统中动态整合执行结构的方法,包括:
响应于对所述数据库系统进行查询,提取查询语句的主干和分支;
从所述数据库系统的高速缓存获得所述主干的执行结构;
生成所述分支的执行结构;以及
将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构;
其中所述分支包含所述查询语句的至少一部分查询条件。
2.根据权利要求1所述的方法,其中所述至少一部分查询条件独立于所述高速缓存。
3.根据权利要求2所述的方法,其中所述查询条件包括以下至少一类:所述查询语句中的常量谓词以及所述查询语句中的附加谓词。
4.根据权利要求1至3中的任一项所述的方法,其中响应于对所述数据库系统进行查询,提取所述查询语句的所述主干和所述分支包括:
将所述查询语句中的常量项替换为通配符,形成统一表示;
选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句;以及
通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支。
5.根据权利要求4所述的方法,其中选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句包括,根据以下至少一个推荐所述缓存语句:
所述高速缓存中的所述至少一个执行结构的使用频率;
所述高速缓存中的所述至少一个执行结构的执行效率;以及
生成所述分支的执行结构的复杂度。
6.根据权利要求4所述的方法,其中通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支包括:
响应于判断所述统一表示是所述缓存语句的超集或者完全匹配,将所述查询语句中与所述缓存语句相对应的部分指定为所述主干,并将所述查询语句中的其余部分指定为所述分支。
7.根据权利要求6所述的方法,其中判断所述统一表示是所述缓存语句的超集包括:
将所述缓存语句划分为第一部分和第二部分,其中所述第一部分是所述缓存语句中谓词以外的部分;
当所述统一表示是所述第一部分的超集时,判断所述统一表示是否是所述第二部分的超集;以及
响应于所述统一表示是所述第二部分的超集,确定所述统一表示是所述缓存语句的超集。
8.根据权利要求1至3中任一项所述的方法,其中提取所述查询语句的主干和分支之前还包括:
对所述查询语句进行规范化;以及
基于所述查询语句中谓词的类型,对经过规范化的所述查询语句进行分类。
9.根据权利要求1至3中任一项所述的方法,其中生成所述分支的执行结构包括:
创建与所述分支中的每个查询条件相关联的条件节点;以及
将所述每个条件节点加入所述分支的执行结构。
10.根据权利要求1至3中任一项所述的方法,还包括:
利用所述查询语句以及所述运行时执行结构更新所述高速缓存。
11.一种在数据库系统中动态整合执行结构的装置,包括:
提取装置,被配置用于响应于对所述数据库系统进行查询,提取查询语句的主干和分支;
获得装置,被配置用于从所述数据库系统的高速缓存获得所述主干的执行结构;
生成装置,被配置用于生成所述分支的执行结构;以及
整合装置,被配置用于将所述主干的执行结构与所述分支的执行结构整合为运行时执行结构;
其中所述分支包含所述查询语句的至少一部分查询条件。
12.根据权利要求11所述的装置,其中所述至少一部分查询条件独立于所述高速缓存。
13.根据权利要求12所述的装置,其中所述查询条件包括以下至少一类:所述查询语句中的常量谓词以及所述查询语句中的附加谓词。
14.根据权利要求11至13中的任一项所述的装置,其中所述提取装置包括:
替换装置,被配置用于将所述查询语句中的常量项替换为通配符,形成统一表示;
选择装置,被配置用于选择与所述高速缓存中的至少一个执行结构中之一相对应的缓存语句;以及
确定装置,被配置用于通过比较所述统一表示和所述缓存语句,确定所述主干和所述分支。
15.根据权利要求14所述的装置,其中所述选择装置包括,用于根据以下至少一个推荐所述缓存语句的装置:
所述高速缓存中的所述至少一个执行结构的使用频率;
所述高速缓存中的所述至少一个执行结构的执行效率;以及
生成所述分支的执行结构的复杂度。
16.根据权利要求14所述的装置,其中所述确定装置包括:
指定装置,被配置用于响应于判断所述统一表示是所述缓存语句的超集或者完全匹配,将所述查询语句中与所述缓存语句相对应的部分指定为所述主干,并将所述查询语句中的其余部分指定为所述分支。
17.根据权利要求16所述的装置,其中所述指定装置包括:
用于将所述缓存语句划分为第一部分和第二部分的装置,其中所述第一部分是所述缓存语句中谓词以外的部分;
用于当所述统一表示是所述第一部分的超集时、判断所述统一表示是否是所述第二部分的超集的装置;以及
用于响应于所述统一表示是所述第二部分的超集、确定所述统一表示是所述缓存语句的超集的装置。
18.根据权利要求11至13中任一项所述的装置,还包括:
规范化装置,被配置用于对所述查询语句进行规范化;以及
分类装置,被配置用于基于所述查询语句中谓词的类型,对经过规范化的所述查询语句进行分类。
19.根据权利要求11至13中任一项所述的装置,其中所述生成装置包括:
创建装置,被配置用于创建与所述分支中的每个查询条件相关联的条件节点;以及
添加装置,被配置用于将所述每个条件节点加入所述分支的执行结构。
20.根据权利要求11至13中任一项所述的装置,还包括:
更新装置,被配置用于利用所述查询语句以及所述运行时执行结构更新所述高速缓存。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101160377A CN102760143A (zh) | 2011-04-28 | 2011-04-28 | 一种在数据库系统中动态整合执行结构的方法和装置 |
US13/443,941 US20120278305A1 (en) | 2011-04-28 | 2012-04-11 | Dynamic merging of executable structures in a database system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101160377A CN102760143A (zh) | 2011-04-28 | 2011-04-28 | 一种在数据库系统中动态整合执行结构的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102760143A true CN102760143A (zh) | 2012-10-31 |
Family
ID=47054601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101160377A Pending CN102760143A (zh) | 2011-04-28 | 2011-04-28 | 一种在数据库系统中动态整合执行结构的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120278305A1 (zh) |
CN (1) | CN102760143A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216894A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 用于数据查询的方法和系统 |
CN105447021A (zh) * | 2014-08-22 | 2016-03-30 | 国际商业机器公司 | 用于数据库查询的方法和系统 |
CN107943945A (zh) * | 2017-11-24 | 2018-04-20 | 清华大学 | 一种大数据分析开发平台中异构算子管理方法 |
CN108804473A (zh) * | 2017-05-04 | 2018-11-13 | 华为技术有限公司 | 数据查询的方法、装置和数据库系统 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9141666B2 (en) * | 2013-06-28 | 2015-09-22 | Microsoft Technology Licensing, Llc | Incremental maintenance of range-partitioned statistics for query optimization |
US11461319B2 (en) * | 2014-10-06 | 2022-10-04 | Business Objects Software, Ltd. | Dynamic database query efficiency improvement |
US10223419B2 (en) | 2015-07-16 | 2019-03-05 | Futurewei Technologies, Inc. | System and method for predicate pushdown and partition pruning in a distributed database |
US10275489B1 (en) * | 2016-03-30 | 2019-04-30 | Amazon Technologies, Inc. | Binary encoding-based optimizations at datastore accelerators |
US10482062B1 (en) * | 2016-03-30 | 2019-11-19 | Amazon Technologies, Inc. | Independent evictions from datastore accelerator fleet nodes |
CN107025263A (zh) * | 2017-01-16 | 2017-08-08 | 中国银联股份有限公司 | 用于数据库语句的语句解析方法 |
CN107679055B (zh) * | 2017-06-25 | 2021-04-27 | 平安科技(深圳)有限公司 | 信息检索方法、服务器及可读存储介质 |
US11714955B2 (en) | 2018-08-22 | 2023-08-01 | Microstrategy Incorporated | Dynamic document annotations |
US11815936B2 (en) | 2018-08-22 | 2023-11-14 | Microstrategy Incorporated | Providing contextually-relevant database content based on calendar data |
US11816104B2 (en) * | 2018-12-28 | 2023-11-14 | Yahoo Ad Tech Llc | Method and system for evaluating expressions |
US11682390B2 (en) | 2019-02-06 | 2023-06-20 | Microstrategy Incorporated | Interactive interface for analytics |
CN111831882B (zh) * | 2019-04-16 | 2024-07-30 | 阿里巴巴集团控股有限公司 | 一种查询交互方法及装置 |
US11176139B2 (en) * | 2019-11-19 | 2021-11-16 | Microstrategy Incorporated | Systems and methods for accelerated contextual delivery of data |
US11726756B2 (en) * | 2021-12-17 | 2023-08-15 | Google Llc | Shared compilation cache verification system |
US12007870B1 (en) | 2022-11-03 | 2024-06-11 | Vignet Incorporated | Monitoring and adjusting data collection from remote participants for health research |
US11790107B1 (en) | 2022-11-03 | 2023-10-17 | Vignet Incorporated | Data sharing platform for researchers conducting clinical trials |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356887B1 (en) * | 1999-06-28 | 2002-03-12 | Microsoft Corporation | Auto-parameterization of database queries |
US20060004696A1 (en) * | 2004-06-03 | 2006-01-05 | International Business Machines Corporation | Apparatus and method for dropping tautological predicates from SQL queries for reusability |
US6985904B1 (en) * | 2002-02-28 | 2006-01-10 | Oracle International Corporation | Systems and methods for sharing of execution plans for similar database statements |
US20080183684A1 (en) * | 2007-01-26 | 2008-07-31 | Bestgen Robert J | Caching an Access Plan for a Query |
US20080256024A1 (en) * | 2007-04-13 | 2008-10-16 | Robert Victor Downer | Portable and Iterative Re-Usable Suboptimization of Database Queries |
US20080288524A1 (en) * | 2007-05-18 | 2008-11-20 | Microsoft Corporation | Filtering of multi attribute data via on-demand indexing |
US20110072006A1 (en) * | 2009-09-18 | 2011-03-24 | Microsoft Corporation | Management of data and computation in data centers |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822749A (en) * | 1994-07-12 | 1998-10-13 | Sybase, Inc. | Database system with methods for improving query performance with cache optimization strategies |
US6466931B1 (en) * | 1999-07-30 | 2002-10-15 | International Business Machines Corporation | Method and system for transparently caching and reusing query execution plans efficiently |
CA2382714A1 (en) * | 2002-04-19 | 2003-10-19 | Ibm Canada Limited-Ibm Canada Limitee | Substituting parameter markers for literals in a database query language statement to promote reuse of previously generated access plans |
US7188105B2 (en) * | 2002-10-10 | 2007-03-06 | International Business Machines Corporation | Query abstraction high level parameters for reuse and trend analysis |
US8996503B2 (en) * | 2010-10-04 | 2015-03-31 | Sybase, Inc. | Query plan optimization for prepared SQL statements |
-
2011
- 2011-04-28 CN CN2011101160377A patent/CN102760143A/zh active Pending
-
2012
- 2012-04-11 US US13/443,941 patent/US20120278305A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356887B1 (en) * | 1999-06-28 | 2002-03-12 | Microsoft Corporation | Auto-parameterization of database queries |
US6985904B1 (en) * | 2002-02-28 | 2006-01-10 | Oracle International Corporation | Systems and methods for sharing of execution plans for similar database statements |
US20060004696A1 (en) * | 2004-06-03 | 2006-01-05 | International Business Machines Corporation | Apparatus and method for dropping tautological predicates from SQL queries for reusability |
US20080183684A1 (en) * | 2007-01-26 | 2008-07-31 | Bestgen Robert J | Caching an Access Plan for a Query |
US20080256024A1 (en) * | 2007-04-13 | 2008-10-16 | Robert Victor Downer | Portable and Iterative Re-Usable Suboptimization of Database Queries |
US20080288524A1 (en) * | 2007-05-18 | 2008-11-20 | Microsoft Corporation | Filtering of multi attribute data via on-demand indexing |
US20110072006A1 (en) * | 2009-09-18 | 2011-03-24 | Microsoft Corporation | Management of data and computation in data centers |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216894A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 用于数据查询的方法和系统 |
CN104216894B (zh) * | 2013-05-31 | 2017-07-14 | 国际商业机器公司 | 用于数据查询的方法和系统 |
US10127279B2 (en) | 2013-05-31 | 2018-11-13 | International Business Machines Corporation | Eigenvalue-based data query |
US11055287B2 (en) | 2013-05-31 | 2021-07-06 | International Business Machines Corporation | Eigenvalue-based data query |
CN105447021A (zh) * | 2014-08-22 | 2016-03-30 | 国际商业机器公司 | 用于数据库查询的方法和系统 |
CN108804473A (zh) * | 2017-05-04 | 2018-11-13 | 华为技术有限公司 | 数据查询的方法、装置和数据库系统 |
CN108804473B (zh) * | 2017-05-04 | 2022-02-11 | 华为技术有限公司 | 数据查询的方法、装置和数据库系统 |
CN107943945A (zh) * | 2017-11-24 | 2018-04-20 | 清华大学 | 一种大数据分析开发平台中异构算子管理方法 |
CN107943945B (zh) * | 2017-11-24 | 2018-12-11 | 清华大学 | 一种大数据分析开发平台中异构算子管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120278305A1 (en) | 2012-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102760143A (zh) | 一种在数据库系统中动态整合执行结构的方法和装置 | |
US11055287B2 (en) | Eigenvalue-based data query | |
EP2608074B1 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
EP1738290B1 (en) | Partial query caching | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
US20170083573A1 (en) | Multi-query optimization | |
US7873627B2 (en) | Relational database scalar subquery optimization | |
US7739269B2 (en) | Incremental repair of query plans | |
US20170357653A1 (en) | Unsupervised method for enriching rdf data sources from denormalized data | |
US8423569B2 (en) | Decomposed query conditions | |
US20030158842A1 (en) | Adaptive acceleration of retrieval queries | |
US10157234B1 (en) | Systems and methods for transforming datasets | |
CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
CN108369591B (zh) | 用于缓存和参数化ir的系统和方法 | |
KR20200104789A (ko) | 데이터 저장 및 조회 방법, 장치, 기기 및 매체 | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
CN110688397B (zh) | 一种基于sql的分布式数据统一访问系统及方法 | |
CN105447021A (zh) | 用于数据库查询的方法和系统 | |
US20070239656A1 (en) | Removal of Database Query Function Calls | |
US8756246B2 (en) | Method and system for caching lexical mappings for RDF data | |
US20080195610A1 (en) | Adaptive query expression builder for an on-demand data service | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN106484815A (zh) | 一种基于海量数据类sql检索场景的自动识别优化方法 | |
Moussa | Tpc-h benchmark analytics scenarios and performances on hadoop data clouds | |
Lai et al. | {GLogS}: Interactive graph pattern matching query at large scale |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121031 |