优化视图上的查询的系统和方法技术方案

技术编号:16049006 阅读:21 留言:0更新日期:2017-08-20 08:43
本发明专利技术公开了一种优化视图上查询的系统和方法。本发明专利技术提供一种用于处理查询的数据处理系统,所述数据处理系统包括:耦合至存储器的处理器,所述存储器存储多个指令用于指示所述处理器接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括指示所述视图的所述编译的与所述视图关联的状态;以及如果在所述系统表中发现所述视图上一部分查询,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将编所述译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。

【技术实现步骤摘要】
【国外来华专利技术】优化视图上的查询的系统和方法
本文描述的主题大体上涉及数据库管理系统,具体而言,涉及一种通过优化视图上的查询提高查询执行的性能的系统和方法。
技术介绍
数据库系统通常用于应答请求所存储的数据库中信息的查询。一个查询可定义为对数据库中表示的数据和数据关系的一个逻辑表达,以及能够确定数据库中子集。任何顺序查询语言(sequentialquerylanguage,SQL)语句由RDBMS处理,步骤如下所示:1、解析(语法检查):RDBMS解析SQL语句语法并且判断是否符合标准。2、分析:RDBMS检查SQL语句中使用的对象(表、列等)是否存在于数据库中。该阶段会提取任何绑定变量(如有)。3、优化:RDBMS基于成本选择最佳的查询执行计划。4、执行:RDBMS执行前一步骤生成的最佳计划并返回结果。在数据库理论(来源:维基)中,一个视图是存储的对数据的查询的结果集合,数据库用户可以查询该数据,就像他们在永久性数据库收集对象中查询一样。这种预先设定的查询命令保存在数据库字典中。与关系数据库中的普通基表不同,视图不构成物理模式的一部分:作为结果集合,视图是一个虚拟表,当请求访问该视图时根据数据库中的数据动态计算或校对。应用于相关基础表中的数据的更改在后续调用该视图所示出的数据中反映出来。出于实用目的,视图可以被视为临时表。这确保视图具有固定模式并且能以类似表的方式优化。在一些NoSQL数据库中,视图是查询数据的唯一方式。相比于表,视图有以下优势:视图可以表示表中包含的数据的子集。因此,视图可以限制基础表暴露在外部世界的程度:给定用户可能有权限查询该视图,而拒绝访问其余基表。视图可以将多个表结合到并简化为单个虚拟表。视图可以充当合计表,其中数据库引擎合计数据(求和、求平均值等)并将计算的结果呈现为一部分数据。视图可以隐藏数据的复杂性。例如,视图可以呈现为Sales2000或Sales2001,从而透明地划分实际基础表。存储视图所需的空间很小;数据库只包含视图的定义,而不是呈现数据库的所有数据的副本。根据所使用的SQL引擎,视图可以提供额外的安全性。正如(程序中的)函数可以提供抽象,数据库视图也可以。数据库用户可以操控嵌套视图,视图可以像函数一样嵌套调用,因此一个视图可以合计来自其它视图的数据。在没有使用视图的情况下,第二范式之上的数据库的规范化将变得更加困难。视图可以更易于创建无损连接分解。视图上的查询执行:视图上的传统查询执行(非物化)涉及3个步骤:通过扩展视图定义重写查询优化完整查询执行完整查询传统地,为了加速查询处理,存在能够动态地将查询编译为机器代码的现有技术。还可以在数据库重启时编译和保存查询。查询通常存储为共享对象并在数据库启动时连接。另外,查询调用将使用已编译代码。查询的编译已经在MemSQLInc.申请的文件US20130198231中公开,其中使用US20130198231中公开的技术,相比于磁盘DB,能够获得300x的性能改进。另外,表模式绑定和已编译访问可通过微软的能够将表编译为机器代码的方案来实现。在这些技术中,在数据库重启时编译和保存表模式。现有技术获得约15倍的表格建模数据库的性能改进以及5.1倍的从2个内核扩大到12个内核的改进。将访问方法编译为表已经在亚利桑那大学申请的专利文件US2013096894中公开。使用US2013096894中公开的技术,能够获得33%的TPC-H基准改进。
技术实现思路

技术实现思路
的提供是为了引入有关一种优化视图上的查询的系统和方法的概念,这将在下文的具体实施方式中进一步描述。本
技术实现思路
并不旨在确定所要求保护的主题的基本特征,也不旨在确定或限制所要求保护的主题的范围中使用。现有技术中的技术问题:如果查询涉及一个视图,则在查询计划/查询执行时间内(动态地)进行查询编译。在编译一个查询时,该查询转换为机器代码。如果已编译查询是较大查询的子查询,则无法使用机器代码,因为已编译查询无法在计划/优化期间内挂载为子查询。具体而言,视图就是这种情况,其中视图定义可以被认为是较大查询内部的子查询。如果查询的过滤条件改变,则必须重新编译该查询。否则,执行将不是最佳的。这导致的情况是,对于涉及视图的所有查询,在分析和优化阶段内进行查询编译。这在视图定义很复杂的情况下不是很好。例如,视图定义将包括多个JOIN,而查询本身仅包括过滤条件。每次执行视图上的查询时,重复JOIN的编译。本专利技术提供的技术方案:本专利技术将通过提供一种在视图创建期间编译视图中包含的相关查询以及对应访问方法的技术来解决上述技术问题。这避免了上述提及的技术问题并且提供了一种执行和结果更准确的高效且有效的方案。本专利技术的一个方面在于,在创建视图时编译构成所述视图的查询,然后将关于编译状态的信息存储在系统表中。本专利技术的另一方面在于,创建一个结构,所述结构包含所述视图的模式作为其元素。本专利技术的另一方面在于,基于所述视图所需的投影生成访问方法以访问这些元素。本专利技术的另一方面在于,转换在计划之后获得的并且优化为C函数的已优化查询树。本专利技术的另一方面在于,在C函数生成期间对各列执行参数化,所述各列构成一部分视图模式。这确保了各列上涉及视图的任何过滤条件可以得到最佳执行。本专利技术的另一方面在于,编译上述生成的函数以生成共享对象并保存在磁盘上。本专利技术的又一方面在于,当发出涉及视图的用户查询时,计划器/优化器查找视图的编译状态,跳过计划/优化视图部分,并且直接调用共享对象中的函数,以便使用过滤条件作为函数的参数来运行该查询。本专利技术的又一方面在于,提供对数据的后续访问,调用所述共享对象中的已修改的访问方法。本专利技术的又一方面在于,提供ALTERVIEW语句,涉及删除现有共享对象并且重新创建并使用新的共享对象。因此,在一个实施方式中,本专利技术提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括查询定义的视图创建查询;基于所述接收的视图创建查询创建一个视图;编译所述查询定义,其中,所述编译包括构成包含所述视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中与所述视图关联的状态(指示是否编译所述视图的一个值);以及将所述视图的所述模式和所述编译函数存储到共享对象文件中。在一个实施方式中,本专利技术提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括与所述视图关联的指示所述视图的所述编译的状态(指示是否编译所述视图的一个值);如果系统表值表示编译所述视图,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划本文档来自技高网
...
优化视图上的查询的系统和方法

【技术保护点】
一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,所述处理器用于指示数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,其特征在于,所述数据处理系统实施的方法包括:接收包括查询定义的视图创建查询;基于所述接收的视图创建查询创建一个视图;以及编译所述查询定义,其中,所述编译包括形成包含所述视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中的与所述视图关联的状态;以及将所述视图的所述模式和所述编译函数存储到共享对象文件中。

【技术特征摘要】
【国外来华专利技术】2015.03.28 IN IN1607/CHE/20151.一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,所述处理器用于指示数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,其特征在于,所述数据处理系统实施的方法包括:接收包括查询定义的视图创建查询;基于所述接收的视图创建查询创建一个视图;以及编译所述查询定义,其中,所述编译包括形成包含所述视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中的与所述视图关联的状态;以及将所述视图的所述模式和所述编译函数存储到共享对象文件中。2.一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,所述处理器用于指示数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,其特征在于,所述数据处理系统实施的方法包括:接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括与所述视图关联的指示所述视图的所述编译的状态;以及如果所述状态表示编译所述视图,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。3.根据权利要求1和2所述的数据处理系统实施的方法,其特征在于,当接收所述视图创建查询并且创建所述视图时,与所述编译状态关联的信息被存储在系统表中,所述系统表包括所述共享对象文件相对所述视图的位置。4.根据权利要求1所述的数据处理系统实施的方法,其特征在于,包括在编译期间创建一个结构,所述结构包含所述视图的模式作为其元素。5.根据权利要求1所述的数据处理系统实施的方法,其特征在于,包括生成访问方法以基于所述视图所需的投影访问所述元素。6.根据权利要求1所述的数据处理系统实施的方法,其特征在于,包括计划所述查询以生成优化的查询树。7.根据权利要求1和6所述的数据处理系统实施的方法,其特征在于,包括转换所述优化的查询树以包括访问函数来访问视图。8.根据权利要求6和7所述的数据处理系统实施的方法,其特征在于,包括基于所述访问函数生成共享对象并且存储所述共享对象。9.根据任一前述权利要求所述的数据处理系统实施的方法,其特征在于,当发出涉及所述视图的所述查询时,计划器/优化器在系统表中查找视图的编译状态,跳过计划/优化视图部分,并且如果在系统表中发现所述视图,直接调用所述共享对象中的所述函数,以便使用过滤条件作为所述函数的参数来运行所述查询。10.根据任一前述权利要求所述的数据处理系统实施的方法,其特征在于,来自所述视图的对数据的后续访问调用所述共享对象中的已修改的访问方法。11.根据任一前述权利要求所述的数据处理系统实施的方法,其特征在于,ALTERVIEW语句涉及删除现有共享...

【专利技术属性】
技术研发人员:尼雅玛拉·斯瑞坎塔雅迪尼普·库马尔库马尔·拉吉夫·拉丝拓吉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1