分布式数据管理系统中的查询说明计划的制作方法

文档序号:6496380阅读:159来源:国知局
分布式数据管理系统中的查询说明计划的制作方法
【专利摘要】描述一种用于分布式数据系统的查询说明计划以便帮助开发人员和IT专家检测瓶颈并确定哪些查询指责低速转动的系统。根据实施例,分布式数据网格使用提供分布式说明计划的设施。此分布式说明计划提供关于查询如何由集群中的每个节点应答的可见性。例如,一个节点可以已经以一个序列应用了查询的过滤器,而另一个节点可以已经使用了不同的序列。另外,分布式查询说明计划可以提供执行跟踪,其呈现关于每个步骤的执行时间、总共执行时间的信息等等。
【专利说明】分布式数据管理系统中的查询说明计划
[0001]版权通知
[0002]本专利文件的公开的一部分包含受版权保护的材料。版权所有者不反对任何人对专利文件或专利公开的传真复制,因为它出现在专利商标局专利文档或记录中,但在别的方面保留所有任何版权。
【技术领域】
[0003]本发明涉及在分布式计算环境中的数据高速缓存和存取技术。
【背景技术】
[0004]在数据存储和管理的背景中,查询优化试图确定执行给定查询的最优或有效方法。因为结构化查询语言(SQL)是说明性的,所以通常存在多个不同的方式执行给定查询(查询计划)并且那些方式的每一个在得出相同结果的同时输出不同的性能。查询计划是用于访问或修改基于SQL的数据系统中的信息的步骤的有序序列。典型查询优化器考虑对于给定查询的所有可能查询计划并且确定那些查询计划中的哪一个将是最有效的(产生最小量的延迟)。
[0005]在其中数据被跨集群的许多节点存储的分布式数据系统中,可能难以确定对于整个分布式系统的单个最优查询计划。例如,根据跨集群的数据分布,一个查询计划对集群中的一些节点可以是最优的,而不同的查询计划将对其它节点是最优的。

【发明内容】

[0006]根据各种实施例,描述用在分布式数据系统中以便帮助开发人员和IT专家检测瓶颈并且确定哪些查询指责低速运行的系统的查询说明计划。查询说明计划是用于访问或修改基于SQL的数据系统中的信息的步骤的有序集。查询说明计划生成并存储关于由查询优化器选择的执行计划的信息。根据实施例,分布式数据网格使用提供分布式说明计划的设施。此分布式说明计划提供关于查询如何由集群中的每个节点应答的可见性。例如,一个节点可以已经以一个序列应用了查询的过滤器,而另一个节点可以已经使用了不同的序列。另外,分布式查询说明计划可以提供执行跟踪,其呈现关于每个步骤的执行时间、总共执行时间的信息等等。
【专利附图】

【附图说明】
[0007]图1是根据本发明的各个实施例的查询说明计划特征的系统级图。
[0008]图2A和和2B是根据本发明的各个实施例的使用查询说明计划的示例的例示。
[0009]图3是根据本发明的各个实施例的提供查询说明计划的流程图。
[0010]图4是示出了在其上可以实现本发明的实施例的计算机系统的框图。
【具体实施方式】[0011]本发明通过示例方式而不是通过限制方式来在附图的图中示出,在附图中,相似的参考指示相似的元件。在此公开中提及实施例不一定是指相同的实施例,这样的提及意味着至少一个。虽然讨论特定的实施方式,但是应当理解,这仅仅是为了示例目的而进行的。本领域技术人员将理解,在不脱离本发明的范围和精神的情况下,可以使用其它组件和配置。
[0012]在下面的描述中,阐述许多特定细节以提供本发明的详尽的描述。但是,本领域技术人员显然可知,可以不用这些特定的细节来实践本发明。在其它实例中,没有详细描述公知的特征以便不模糊本发明。
[0013]根据各种实施例,为分布式数据提供查询说明计划以便帮助开发人员和IT专家检测瓶颈并且确定哪些查询指责低速运行的系统。根据实施例,分布式数据网格使用提供分布式说明计划的设施。此分布式说明计划提供关于查询如何由集群中的每个节点应答的可见性。例如,一个节点可以已经以一个序列应用了查询的过滤器,而另一个节点可以已经使用了不同的序列。另外,分布式查询说明计划可以提供执行跟踪,其呈现关于每个步骤的执行时间、总共执行时间的信息等等。
[0014]根据实施例,为了获得查询说明计划,可以调用方法,将查询作为参数传递。查询可以被发给集群中的所有服务器并且每个服务器可以返回特定于该服务器的确定的最优查询计划、以及它的执行结果。这些计划和结果可以跨集群中的所有节点被聚集。因此方法调用的结果能够是对于特定查询提供关于跨集群的所有查询计划的信息的数据结构。设施也可以提供比较和对比不同的查询计划并且使结果一致的手段。
[0015]根据实施例,用户可以观察查询说明计划的结果并且索引以创建改善查询速度。索引是可以通过创建表的一部分的副本或由本领域中已知的一些其它手段来改善数据检索操作的速度的数据结构。基于查询说明计划的结果,用户可以具有要为哪些表创建索引以便改善系统的速度的最佳构思。
[0016]图1是根据本发明的各个实施例的查询说明计划特征的系统级图。虽然此图将组件描述为逻辑上分离的,但是这样的描述仅仅用于说明性的目的。对本领域技术人员显而易见的是,在此图中描绘的组件能够被组合或分成分离的软件、固件和/或硬件。此外,对本领域技术人员还显而易见的是,这样的组件不管它们被如何组合或分区,能够在相同的计算设备上执行或能够在由一个或多个网络或其它合适的通信手段连接的不同的计算设备之间分布。
[0017]如示出的,客户端103可以被连接到跨多个服务器(100、101、102)管理数据集的分布式数据网格集群104。客户端可以将查询提交到数据以便以低延迟方式获得必需的数据。此外,如图所示,通过提供相对于网格调用方法并在结构化查询语言(SQL)查询中作为参数传递到方法,客户端可以从集群请求查询说明计划。查询然后被分配给集群中的每个服务器节点。每个节点对比数据(106、107、108)的它自己的分区来评估查询计划(109、
110、111),并且因为它涉及它局部存储的数据,而返回查询计划的结果。结果然后被聚集成返回到客户端的查询结果对象105。查询结果对象105提供关于集群中的每个节点对于原始SQL查询如何局部地评估查询计划的信息。
[0018]图2A和2B是根据本发明的各个实施例的使用查询说明计划的示例的例示。应当注意,虽然此图包括某些代码和数据结构,但是本实施例不局限于这里示出的特定代码或数据结构。许多其它实施方式可能在本发明范围内,对本领域普通技术人员来说将是明显的。
[0019]更具体地,图2A示出调用查询计划的代码的示例以及图2B示出由那些代码的调用返回的查询记录对象。根据实施例,查询记录对象可以是当被显示时将呈现图2B中示出的数据的串。
[0020]根据实施例,查询计划结果的“名称”字段表示查询计划步骤的名称。大多数情况下这将是在查询过滤器上的方法“toString”的调用。索引是对索引查找的参考(如果可应用的话)。“成本”是从过滤有效性计算返回的估计的成本。
[0021]在图2B中示出的结果示出用于查询步骤的过滤器以及每个索引(如果有的话)、传递到过滤器的关键集的大小和计算使用过滤器的有效性的结果。例如,以上结果可以用于对在具有4个存储节点的集群中具有1000个条目的高速缓存运行的查询说明计划。
[0022]应当注意以上仅仅是查询计划结果可以看起来的样子的示例。也许可以以各种其它有意义的方式聚集查询计划的部分结果。下列描述将通过扩展查询计划聚集器和实施定制查询计划结果对象来允许查询计划结果的定制。
[0023]计算的有效性
[0024]根据实施例,计算的有效性是过滤器可以如何好地使用索引的集合来过滤一组关键字的估计的度量。此值可以用于确定ArrayFilter (阵列过滤器)中的过滤器的放置以使得首先应用最有效的过滤器。从IndexAwareFilter.calculateEffectiveness返回的值实际上是应用过滤器的估计的评估成本。
[0025]如同例示,以下的表1示出对于使用的车的查询,其中制造=Honda并且成本〈7000,对于制造具有索引。
[0026]表1
【权利要求】
1.一种用于在分布式数据网格中说明查询的系统,所述系统包括: 一个或多个微处理器; 运行在所述一个或多个微处理器上的集群,其包括存储贯穿集群分布的数据的多个集群节点,每个集群节点能够对存储在所述集群节点上的数据执行结构化查询语言(SQL)查询;以及 连接到集群的客户端,其提交包括SQL查询的请求; 其中在接收到请求时,SQL查询被提交到集群中的每个节点,并且其中集群中的每个节点利用在所述每个节点处的局部数据评估对于SQL查询的查询计划并且返回关于SQL查询如何在所述节点处被执行的信息集;以及 其中生成查询记录对象,所述查询记录对象聚集来自于集群中所有节点的信息,其中查询记录对象包含关于SQL查询如何由集群中的每个节点执行的信息。
2.如权利要求1所述的系统,其中查询记录对象还提供执行跟踪,其呈现关于每个步骤的执行时间和总共执行时间的信息。
3.如权利要求1或2所述的系统,其中为了获得查询说明计划,调用一方法以将SQL查询作为参数传递到所述方法。
4.如前述权利要求中任何一个所述的系统,其中SQL查询被发送给集群中的所有集群节点,并且其中每`个集群节点返回特定于所述每个集群节点的确定的最优查询计划。
5.如前述权利要求中任何一个所述的系统,其中提供用于比较和对比不同的查询计划并且使查询调用的结果一致的设施。
6.如前述权利要求中任何一个所述的系统,其中该系统能够以至少以下两个模式运行:说明计划模式和跟踪模式,其中说明模式产生包含查询执行的估计成本的查询记录对象,以及其中跟踪模式包含查询执行的实际成本。
7.如前述权利要求中任何一个所述的系统,其中通过采用查询记录对象来生成索引。
8.如前述权利要求中任何一个所述的系统,其中集群中的每个节点根据存储在节点上的数据的分区来执行不同的查询计划。
9.一种用于在分布式数据网格中说明查询的方法,所述方法包括: 在运行在一个或多个微处理器上的集群中的多个节点上存储数据,每个节点能够对存储在所述节点上的数据执行结构化查询语言(SQL)查询; 从被连接到集群的客户端接收包含SQL查询的请求; 将SQL查询提交到集群中的每个节点; 集群中的每个节点利用在所述每个节点处的局部数据评估用于SQL查询的查询计划并且返回关于SQL查询如何在所述节点处被执行的信息集;以及 生成聚集来自于集群中所有节点的信息的查询记录对象,其中查询记录对象包含关于SQL查询如何由集群中的每个节点执行的信息。
10.如权利要求9所述的方法,其中查询记录对象还提供执行跟踪,其呈现关于每个步骤的执行时间和总共执行时间的信息。
11.如权利要求9或10所述的方法,其中所述请求用于查询说明计划,并且其中为了获得查询说明计划,调用一方法以将SQL查询作为参数传递到所述方法。
12.如权利要求9到11中任何一个所述的方法,其中SQL查询被发送给集群中的所有集群节点并且其中每个集群节点可以返回特定于所述每个集群节点的确定的最优查询计划。
13.如权利要求9到12中任何一个所述的方法,其中该方法还包括比较和对比不同的查询计划并且使查询调用的结果一致。
14.如权利要求9到13中任何一个所述的方法,其中该方法能够以至少以下两个模式执行:说明计划模式和跟踪模式,其中说明模式产生包含查询执行的估计成本的查询记录对象,以及其中跟踪模式包含查询执行的实际成本。
15.如权利要求9到14中任何一个所述的方法,其中通过采用查询记录对象生成索引。
16.如权利要求9到15中任何一个所述的方法,其中集群中的每个节点根据存储在节点上的数据的分区执行不同的查询计划。
17.一种计算机程序,包括用于由计算机系统执行的程序指令,由此使得计算机系统执行如权利要求9到16中任何一个所述的方法。
18.一种计算机可读存储介质,存储如权利要求17所述的计算机程序。
19.一种非瞬时计算机可读存储介质,存储由一个或多个处理器执行以执行一组步骤的一个或多个指令序列,所述步骤包括: 在集群中的多个节点上存储数据,每个节点能够对存储在所述节点上的数据执行结构化查询语言(SQL)查询; 从连接到集群的客户端接收包含SQL查询的请求; 将SQL查询提交到集群中的每个节点,其中集群中的每个节点利用所述每个节点处的局部数据评估用于SQL查询的查询计划并且返回关于SQL查询如何在所述节点处被执行的信息集;以及 生成聚集来自于集群中所有节点的信息的查询记录对象,其中查询记录对象包含关于SQL查询如何由集群中的每个节点执行的信息。
20.如权利要求19所述的非瞬时计算机可读存储介质,其中查询记录对象还提供执行跟踪,其呈现关于每个步骤的执行时间和总共执行时间的信息。
21.如权利要求19或20所述的非瞬时计算机可读存储介质,其中为了获得查询说明计划,调用一方法以将SQL查询作为参数传递到所述方法。
22.如权利要求19到21中任何一个所述的非瞬时计算机可读存储介质,其中SQL查询被发送给集群中的所有集群节点并且其中每个集群节点可以返回特定于所述每个集群节点的确定的最优查询计划。
23.一种用于在分布式数据网格中说明查询的系统,所述系统包括: 用于在运行在一个或多个微处理器上的集群中的多个节点上存储数据的装置,每个节点能够对存储在所述节点上的数据执行结构化查询语言(SQL)查询; 用于从连接到集群的客户端接收包含SQL查询的请求的装置; 用于将SQL查询提交到集群中的每个节点的装置,其中集群中的每个节点利用所述每个节点处的局部数据评估用于SQL查询的查询计划并且返回关于SQL查询如何在所述节点处被执行的信息集;以及 用于生成聚集来自于集群中所有节点的信息的查询记录对象的装置,其中查询记录对象包含关于SQL查询如何由集群中的每个节点执行的信息。
24.如权利要求23所述的系统,其中查询记录对象还提供执行跟踪,其呈现关于每个步骤的执行时间和总共执行时间的信息。
25.如权利要求23所述的系统,其中为了获得查询说明计划,调用一方法以将SQL查询作为参数传递到所述方法。
26.如权利要求23所述的系统,其中SQL查询被发送给集群中的所有集群节点并且其中每个集群节点可以返回特定于所述每个集群节点的确定的最优查询计划。
27.如权利要求26所述的系统,其中提供用于比较和对比不同的查询计划并且使查询调用的结果一致的设施。
28.如权利要求23所述的系统,其中系统能够以至少以下两个模式执行:说明计划模式和跟踪模式,其中说明模式产生包含查询执行的估计成本的查询记录对象,以及其中跟踪模式包含查询执行的实际成本。
29.如权利要求23所述的系统,其中通过采用查询记录对象生成索引。
30.如权利要求23所述的系统,其中集群中的每个节点根据存储在节点上的数据的分区执行不同的查询计划。
31.一种用于在分布式数据网格中说明查询的系统,所述系统包括: 一个或多个微处理器;以及 运行在所述一个或多个微处理器上的集群,包括存储贯穿集群分布的数据的多个集群节点,每个集群节点能够对存储在所述集群节点上的数据执行结构化查询语言(SQL)查询, 其中在从客户端接收到包括用于查询说明计划的SQL查询的请求时,SQL查询被提交到集群中的每个节点,并且其中集群中的每个节点利用所述每个节点处的局部数据评估用于SQL查询的查询计划并 且返回关于SQL查询如何在所述节点处被执行的信息集;以及 其中生成聚集来自于集群中所有节点的信息的查询记录对象,其中查询记录对象包含关于SQL查询如何由集群中的每个节点执行的信息。
【文档编号】G06F17/30GK103782295SQ201280042882
【公开日】2014年5月7日 申请日期:2012年9月11日 优先权日:2011年9月15日
【发明者】T·比尔鲍尔, R·H·李 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1