优化视图上的查询的系统和方法与流程

文档序号:11530785阅读:619来源:国知局
本文描述的主题大体上涉及数据库管理系统,具体而言,涉及一种通过优化视图上的查询提高查询执行的性能的系统和方法。
背景技术
::数据库系统通常用于应答请求所存储的数据库中信息的查询。一个查询可定义为对数据库中表示的数据和数据关系的一个逻辑表达,以及能够确定数据库中子集。任何顺序查询语言(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语句,涉及删除现有共享对象并且重新创建并使用新的共享对象。因此,在一个实施方式中,本发明提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括查询定义的视图创建查询;基于所述接收的视图创建查询创建一个视图;编译所述查询定义,其中,所述编译包括构成包含所述视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中与所述视图关联的状态(指示是否编译所述视图的一个值);以及将所述视图的所述模式和所述编译函数存储到共享对象文件中。在一个实施方式中,本发明提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括与所述视图关联的指示所述视图的所述编译的状态(指示是否编译所述视图的一个值);如果系统表值表示编译所述视图,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。在一个示例中,所述状态可为指示是否编译所述视图的标记。例如,所述标记的形式可为flagon或off,on指示编译所述视图,off指示不编译所述视图。在一个示例中,所述状态可为指示是否编译所述视图的一个值。例如,所述值的形式可为vlaue“0”或“1”,“0”指示不编译所述视图,“1”指示编译所述视图。在一个实施形式中,本发明提供一种用于处理对数据对象的查询的数据处理系统,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,所述数据处理系统包括:耦合至存储器的处理器,所述存储器用于:存储多个指令用于指示所述处理器接收包括查询定义的视图创建查询;基于所述接收的视图创建查询创建一个视图;以及编译所述查询定义,其中,所述编译包括形成包含所述视图的模式以及关联元素的结构,由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中的与所述视图关联的状态(指示是否编译所述视图的一个值);以及将所述视图的所述模式以及所述编译函数存储到共享对象文件中。在一个实施形式中,本发明提供一种用于处理对数据对象的查询的数据处理系统,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,所述数据处理系统包括:耦合至存储器的处理器,所述存储器存储多个指令用于指示所述处理器接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括与所述视图关联的指示所述视图的所述编译的状态(指示是否编译所述视图的一个值);以及如果在系统表中发现所述视图上一部分查询,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。附图说明该详细说明是参考附图进行描述。在附图中,参考编号最左边的数字表示所述参考编号在该附图中首次出现。在附图中使用相同符号来指代相同特征和组件。图1(a)示出了根据本主题一实施例的视图编译的流程图。图1(b)示出了根据本主题一实施例的视图上查询执行的流程图。图2示出了使用传统查询编译器获得查询树的传统方法。图3示出了根据本主题一实施例的扩展查询到共享对象的编译。图4示出了根据本主题一实施例的基于所编译的共享对象的计划生成的过程。图5示出了使用传统查询编译器获得的查询树的传统方法与考虑已编译视图(按照本发明)由查询编译器生成的查询树的传统方法的对比。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明能以多种方式实施,包括一个过程、一种装置、一个系统、一个物质成分、一种计算机可读介质(如一种计算机可读存储介质或一种计算机网络),其中程序指令通过光或电通信链路发送。在本说明书中,这些实施方式或本发明采用的任何其它形式可以称为技术。一般而言,所公开过程的步骤的顺序可在本发明的范围内改变。本发明的一项或多项实施例的详细描述在下文与图示本发明原理的附图一起提供。本发明结合这些实施例进行描述,但是本发明不限于任何实施例。本发明的范围仅受权利要求书限制,而且本发明包含许多替代物、修改和等同物。许多具体细节载于下面描述中,以便深入了解本发明。这些详细内容供示例之用,在没有这些具体细节中的一些或所有的情况下,本发明可根据权利要求实施。出于简洁性,本发明相关
技术领域
:中公知的技术资料不加以详细描述,以免对本发明产生不必要的混淆。公开了用以编译视图中包含的相关查询的系统、方法和装置以及视图创建期间的对应访问方法。虽然各方面已被描述用于通过优化视图上的查询提高查询执行的性能并且可在任何数量的不同计算系统、环境和/或配置中实施,但是各实施例在下文示例性系统和方法的语境中进行描述。本发明公开了一种基于所接收的查询创建一个视图的系统和方法,并由此在该视图中编译查询和对应访问方法。现在参考图1(a),示出了根据本主题一实施例的视图编译的流程图。在一个实施方式中,本发明提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括查询定义的视图创建查询;基于所接收的视图创建查询创建一个视图;编译所述查询定义,其中,所述编译包括构成包含所述视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于所述视图所需的投影访问所述关联元素的访问方法;改变预存储系统表中与所述视图关联的状态(指示是否编译所述视图的一个值);以及将所述视图的所述模式和所述编译函数存储到共享对象文件中。现在参考图1(b),示出了根据本主题一实施例的视图上查询执行的流程图。在一个实施方式中,本发明提供一种处理器的数据处理系统实施的方法,所述处理器耦合至存储器,用于指示一种数据处理系统处理对数据对象的查询,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象。所述数据处理系统实施的方法包括:接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中,所述系统表包括与视图关联的指示视图编译的状态(指示是否编译所述视图的一个值);如果系统表值表示编译所述视图,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。图1(a)和图1(b)中公开的方法可由数据处理系统执行。该方法可在计算机可执行指令的一般上下文中进行描述。通常,计算机可执行指令可以包括例行程序、编制程序、对象、组件、数据结构、流程、模块和功能等,它们执行特定功能或实现特定抽象数据类型。该方法还可在分布式计算环境中实施,其中由通过通信网络链接的远程处理设备执行功能。在分布式计算环境中,计算机可执行指令可位于包括内存存储设备等本地和远程计算机存储媒体中。描述方法的顺序并不旨在解释为限制,任何数量的所描述的方法方框可以以任何顺序组合以实施该方法或另选方法。另外,可在不偏离本文所述主题的范围的情况下从该方法中删除各个方框。此外,该方法可以在任何合适的硬件、软件、固件或它们的组合中实施。然而,为了易于解释,在下文描述的实施例中,该方法可被认为在下文的数据处理系统中实施。现在参考图2,示出了根据本主题一实施例的本发明的流程图。在一个实施方式中,在视图创建期间,编译视图中包含的相关查询以及对应访问方法。当创建视图时,编译构成视图的查询。将关于编译状态的信息存储在系统表中。编译涉及:创建一个结构,该结构包含视图的模式作为其元素;生成访问方法以基于视图所需的投影访问这些元素;转换计划之后获得的和优化为c函数的已优化查询树;c函数生成应该是对构成一部分视图模式的各列执行参数化。这确保了各列上涉及视图的任何过滤条件可以得到最佳执行。编译上述代码以生成共享对象,并且将其保存在磁盘上;当发出涉及视图的用户查询,计划器/优化器查找视图的编译状态,跳过计划/优化视图部分,并且直接调用共享对象中的函数以使用过滤条件作为函数的参数来运行该查询。对数据的随后访问调用共享对象中的已修改的访问方法;alterview语句涉及删除现有共享对象,以及重新创建并使用新的共享对象。本发明借助于下文提到的示例可以很好地解释本发明,但是应当理解,本发明提到的示例仅供理解之用,而绝非限制本发明的范围。示例-1:无过滤条件的查询:考虑如下创建的表创建表table_a(aint);创建表table_b(bint);创建表table_c(cint);创建表table_d(dint);考虑下文视图定义和使用视图的查询createviewtest_viewasselectaastable_a.a,bastable_b.b,castable_c.cfromtable_a,table_b,table_cwheretable_a.a=table_b.bandtable_a.a=table_c.cselecttest_view.afromtable_d,test_viewwheretable_d.d=test_view.a使用传统查询编译器,得到下面的查询树,如图2所示。使用视图编译,下文扩展的查询被编译到共享对象(比如table.dll)中,如图3所示。table.dll将包含已编译视图的以下结构它将包含用于像下文扫描的方法在上文中,deform_tuple_xxx被认为已经以编译形式使用。在视图编译之后,查询编译器使用table.dll并生成如图4所示的计划。示例-2:有过滤条件的查询:考虑仅在视图上操作并且不涉及任何其它表的以下查询。selecttest_view.afromtest_viewwheretest_view.b=100orderbytest_view.a图5示出了使用传统查询编译器获得的查询树的传统方法与考虑已编译视图(按照本发明)由查询编译器生成的查询树的传统方法的对比。应当注意,排序当前不是编译代码的一部分。排序与一些有限计算还可以被下推到已编译代码。在一个实施形式中,本发明提供一种用于处理对数据对象的查询的数据处理系统,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,所述数据处理系统包括:耦合至存储器的处理器,存储器用于:存储多个指令用于指示所述处理器接收包括查询定义的视图创建查询;基于所接收的视图创建查询创建一个视图;以及编译查询定义,其中,所述编译包括构成含有视图的模式以及关联元素的结构;由此生成至少一个编译函数,其中,所述编译函数包括基于视图所需的投影访问关联元素的访问方法;改变预存储系统表中的与视图关联的状态(指示是否编译视图的一个值);以及将视图的模式和编译函数存储到共享对象文件中。在一个实施形式中,本发明提供一种用于处理对数据对象的查询的数据处理系统,所述数据对象可操作地耦合至所述数据处理系统,所述查询包括子查询,所述子查询引用所述数据对象,所述数据处理系统包括:耦合至存储器的处理器,存储器存储多个指令用于指示处理器:接收包括视图上一部分查询的查询;基于所述视图上一部分查询检查系统表,其中所述系统表包括与视图关联的指示视图编译的状态(指示是否编译视图的一个值);以及如果系统表值表示视图被编译,提取共享对象文件,所述共享对象文件存储与所述视图上一部分查询关联的至少一个编译函数;将所述编译函数用作一部分查询执行计划;以及执行所述查询执行计划以显示结果。在一个实施方式中,当创建视图时,编译状态被存储在系统表中,该系统表包括共享对象文件相对视图的位置。在一个实施方式中,系统在编译期间创建一个结构,该结构包含视图的模式作为其元素。在一个实施方式中,系统生成访问方法以基于视图所需的投影访问元素。在一个实施方式中,系统计划查询以生成优化的查询树。在一个实施方式中,系统转换优化的查询树,所述优化的查询树被生成来包括访问函数以访问视图。在一个实施方式中,当发出涉及视图的查询,计划器/优化器在系统表中查找视图编译的状态,跳过计划/优化视图部分,并且如果在系统表中发现视图匹配,直接调用共享对象中的函数以使用过滤条件作为函数的参数来运行该查询。在一个实施方式中,对数据的随后访问调用共享对象中的已修改的访问方法。在一个实施方式中,alterview语句涉及删除现有共享对象,以及重新创建并使用新的共享对象。在一个实施方式中,数据处理系统可通信地与用户设备/数据库客户端系统(未示出)耦合。虽然考虑到数据处理系统作为单独计算单元实施来解释本主题,但是可以理解,数据处理系统还可在服务器上、在各种计算系统,诸如膝上型电脑、台式电脑、笔记本、工作台、主计算机、服务器、网络服务器等中实施。将理解,数据处理系统可由多个用户通过一个或多个用户设备/客户端系统(以下统称为用户系统)或者驻留在用户设备上的应用(未示出)访问。用户设备的示例可包括但不限于便携式计算机、个人数字助理、手持设备和工作台。用户设备通过网络(未示出)可通信地耦合至数据处理系统。在一个实施方式中,网络可以为无线网络、有线网络或其组合。网络可以作为不同类型网络之一,诸如内网、局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)、互联网等来实施。网络可为专用网或共享网。共享网表示使用各种协议,例如超文本传输协议(hypertexttransferprotocol,http)、传输控制协议/互联网协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)、无线应用协议(wirelessapplicationprotocol,wap)等彼此通信的各种类型网络的联合。此外,网络可包括各种网络设备,包括路由器、网桥、服务器、计算设备、存储设备等。在一个实施方式中,数据处理系统可包括处理器,该处理器可作为一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理器、状态机、逻辑电路和/或基于操作指令操控信号的任何设备来实施。除了其它能力之外,处理器用于提取和执行存储在存储器中的计算机可读指令。数据处理系统可提供界面,该界面包括各种软件和硬件界面,例如网页界面、图像用户界面等。界面可允许客户端系统/用户与用户直接或通过装置和系统互动。另外,界面可使装置能够与其它计算设备,诸如网页服务器和外部数据服务器(未示出)通信。界面可以促进各种网络和协议类型内的多个通信,这些网络和协议包括有线网络,例如lan、电缆等,以及无线网络,诸如wlan、蜂窝或卫星。界面可包括用于将多个设备连接至另一个设备或另一服务器的一个或多个端口。存储器可包括本领域熟知的任何计算机可读介质,例如易失性存储器,诸如静态随机存取存储器(staticrandomaccessmemory,sram)和动态随机存取存储器(dynamicrandomaccessmemory,dram),和/或非易失性存储器,诸如只读存储器(readonlymemory,rom)、可擦除可编程rom、闪存、硬盘、光盘和磁带。存储器可包括至少一个查询编译器,用于为接收的数据库查询制定树结构中的执行计划,该计划具有多个计划节点。应注意,查询编译器是一个常规的编译器,在传统/常规方法中进行的执行计划生成在现有技术中可用。上文论述的示例性实施例可提供一些优点。虽然不要求实施本公开的各方面,但是这些优点可包括:本发明公开的机制提高视图上查询的计划和优化时间。该机制使运行中的查询编译变得更快,这是动态查询编译的一个重要标准。该机制提高了视图上查询的查询执行时间。该机制在视图创建期间编译相关查询和访问方法。该机制有能力将涉及视图的查询的过滤条件下推到编译代码。该机制有能力挂载计划器/优化器以考虑编译视图而不是扩展视图到其基础查询。虽然一种优化视图上的查询的系统和方法的实施方式已经以特定于结构特征和/或方法的语言进行描述,但是应当理解,所附权利要求不一定限于所描述的特定特征或方法。相反,特定特征和方法被公开为一种优化视图上查询的系统和方法的实施方式的示例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1