用于使用固定表在无共享关系型数据库集群中进行分布式sql连接处理的系统和方法

文档序号:9493683阅读:472来源:国知局
用于使用固定表在无共享关系型数据库集群中进行分布式sql连接处理的系统和方法
【专利说明】用于使用固定表在无共享关系型数据库集群中进行分布式SQL连接处理的系统和方法
相关申请案交叉申请
[0001]本发明要求2013年3月13日递交的发明名称为“用于使用固定表在无共享关系型数据库集群中进行分布式SQL连接处理的系统和方法”的第13/802,084号美国专利申请案的在先申请优先权,该在先申请的内容如同全文复制一样以引入的方式并入本文本中。
技术领域
[0002]本发明涉及数据库处理以及计算,并且在特定实施例中,涉及用于使用固定表在无共享关系型数据库集群中进行分布式SQL连接处理的系统和方法。
【背景技术】
[0003]大规模并行处理(MPP)数据库系统允许数据库管理员创建数据库并且将其数据分布到多个处理器,所述处理器被称为分区或数据节点。MPP的概念是通过多个处理器协调处理程序,其中每个处理器作用于所述程序的不同部分。处理器彼此通信来完成任务,其中所述处理器中的每一者使用其自身的操作系统以及存储器资源。通常存在为MPP数据库系统的客户端服务的至少一个进程,所述进程被称为协调器。针对此数据库发出的结构化查询语言(SQL)连接查询通过协调器来处理,所述协调器选择数据表以实现连接查询并且将此信息发送到每个数据节点以用于执行。

【发明内容】

[0004]根据的一个实施例,用于在大规模并行处理(MPP)数据库系统中的查询处理的方法包括在协调器进程处接收与MPP数据库系统的多个表相关联的连接查询、从所述表中选择固定表,以及在与所述协调器进程通信的多个数据节点中的每一者处执行执行计划以在不在数据节点之间传递固定表的信息的情况下获得查询结果。
[0005]根据另一实施例,用于在MPP数据库系统中的查询处理的方法包括在协调器进程处接收与MPP数据库系统的多个表相关联的连接查询、根据连接查询中的表分区关键字从所述表中选择固定表,以及指示固定表并且将连接查询发送到与协调器进程通信的多个数据节点。所述方法进一步包括在所述数据节点中的每一者处生成用于连接查询的执行计划,以及在所述数据节点中的每一者处执行所述执行计划以在不在数据节点之间共享固定表的信息的情况下获得查询结果。
[0006]根据又另一实施例,用于在MPP数据库系统中的查询处理的设备包括用于在MPP数据库系统的数据表的分区上处理连接查询的多个数据节点、处理器,以及存储用于通过处理器执行的程序代码的计算机可读存储介质。程序代码包括用以进行以下操作的指令:在与数据节点通信的协调器进程处接收与表相关联的连接查询、从所述表中选择固定表、指示固定表并且将连接查询发送到数据节点,以及合并来自数据节点的多个查询结果。
【附图说明】
[0007]为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
[0008]图1图示了典型的MPP数据库系统;
[0009]图2是典型的MPP数据库系统的查询执行流程;
[0010]图3图示了具有一个固定表的MPP数据库系统的一个实施例;
[0011]图4图示了具有多个固定表的MPP数据库系统的一个实施例;
[0012]图5是具有至少一个固定表的MPP数据库系统的查询执行流程的一个实施例;
[0013]图6是可以用于实施各种实施例的处理系统。
【具体实施方式】
[0014]下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。
[0015]MPP数据库系统是基于无共享架构的,其中所述表划分成分区并且分布到不同处理节点。以独占方式将每个分区分配给一个处理节点,其中在所述节点处的分区当中不存在数据共享。处理节点在本文中也被称为数据节点。每个节点中的处理实体管理并且处理其数据部分。然而,在执行期间,这些处理实体可以与彼此通信以交换必要信息。对于每个客户端连接,系统创建对用户事务管理以及查询处理负责的代理进程或线程。此代理进程或线程称为协调器,所述协调器可能或可能不驻留在数据节点中的一者上。当查询到达协调器时,协调器调用查询编译程序以生成语义树。随后调用查询计划器以生成用于所述树的优化执行计划。所述执行计划将用于处理查询的任务组织到处理单元(数据节点)上。来自数据节点的结果被返回并在协调器处集合,并且随后被发送给用户。
[0016]图1示出了用于处理SQL连接查询的典型的MPP数据库系统100。在MPP数据库系统100中,客户端应用程序通过协调器110连接到数据库上,所述协调器是代理进程或应用程序(例如,程序)。协调器110连接到系统中的多个数据节点120上。每个数据节点120可以独占方式访问数据库中的数据表122的分区。协调器110在数据节点120处使用并行处理来为客户端处理SQL连接查询112,并且将集合的结果从数据节点120返回到客户端。每个数据节点120在数据表122的没有共有分区数据的不同独占分区上处理用于查询112的计划114,所述查询发送自协调器110。然而,数据节点120仍可以在彼此之间交换表数据(例如,行)以完成连接查询处理的其对应的部分。
[0017]图2示出了 MPP数据库系统100的查询执行流程200。在步骤210处,协调器110从客户端接收查询。例如,协调器110接收SQL查询:“从客户、单项产品、订单中选择*,其中 lineitem.l_orderkey = orders.0_orderkey AND customer.c_custkey = orders.0_custkey”。在步骤220处,协调器110编译查询以生成查询执行计划,并且将所述查询计划发送到数据节点120。在步骤230处,每个数据节点120实例化查询计划段、在需要时与其它节点交换数据,以及通过对与查询相关联的多个数据表(例如,单项产品、订单,以及客户)进行操作来计算查询的结果。每个数据节点120随后将结果返回到协调器110。在步骤240处,协调器110聚集来自数据节点120的结果并且合并所述结果。在步骤250处,协调器110将查询结果返回到客户端。
[0018]在MPP数据库系统100以及查询执行流程200中,在数据节点120之间转发来自所需用于处理连接查询的所有表(例如,表单项产品、客户,以及订单)的数据(例如,行)。表分区分布在数据节点当中,但在其它分区中所需的其它数据也是通过不同的数据节点可访问的(例如,经由数据传送)而没有限制。这可能导致用于数据传送以及处理的资源的大量过载,所述大量过载可能降低性能(例如,在处理速度上)。
[0019]本发明提供了系统和方法实施例以用于改进MPP数据库系统中的查询处理的性能。所述实施例包括选择用于处理查询计划的一个或多个固定表。不同于典型的MPP数据库系统,固定表的分配给对应的数据节点的分区是固定的并且不在不同数据节点之间混洗。数据节点以独占方式访问固定数据表的对应的分区。这意味着在不同数据节点之间不允许对固定表的分区(或固定表中的行)的转发。在需要时,其余的表(非静态表)可以常规方式在数据节点之间(来回)混洗。通过协调器选择一个或多个固定表的集合并且将其指示给数据节点。例如,在没有执行计划的情况下,也将连接查询从协调器推送到数据节点。每个数据节点随后生成具有固定表信息的查询执行计划并且相应地执行查询。此方案允许每个数据节点并行执行连接查询计划并且在较少数据混洗的情况下更快地完成任务。因此,可以改进连接查询处理的总体性能以及因此改进系统吞吐量。
[0020]基于查询中的分区关键字,可以(通过协调器)选择一个或多个固定表并且将其指示给数据节点。在多表连接查询中,识别在对应的分区关键字上连接的表的组。识别过程可以在具有单一表的组中结束。接着,获得每个组的组合权重并且随后将具有最高权重的组指定为固定表的组。在查询处理过程(在数据节点处)的其余部分中,固定表的这个组不(在数据节点之间)移动,这可以导致具有更快的计划以及处理的改进的性能。基于最高权重的固定组选择可以大大减少数据节点当中的数据混洗。例如,在数据仓库情形下的典型的连接查询可以具有驻留在固定组中的数据的70%到80%。因此,此方案可以提供在典型的数据仓库情形下的大量的性能增益。
[0021]图3示出了具有经选择用于处理SQL连接查询的一个固定表的MPP数据库系统300的一个实施例。在MPP数据库系统300中,客户端应用程序通过协调器310连接到数据库上。协调器310连接到系统中的多个数据节点320上。每个数据节点320可以独占方式访问数据库中的数据表322的分区。协调器310在数据节点320处使用并行处理来为客户端处理SQL连接查询312并且将集合的结果从数据节点320返回到客户端。处理包括选择固定表。例如,表单项产品是最大的表并且基于连接查询中的分区关键字l_orderkey以及o_orderkey被选择为固定表,所述连接查询是:lineitem.l_orderkey = orders.0_Qrderkey0每个数据节点320在数据表322的没有共有分区数据的不同独占分区上生成并且处理用于查询312的计划314,所述查询从协调器310向下推送。当在数据节点320中的每一者上执行实例化的计划314时,固定表单项产品中没有数据或行(在数据节点320之间)移动。然而,来自其它表的数据或行可以在任何两个数据节点320之间来回移动以完成其在其对应的分区上的连接查询处理。
[0022]图4示出了具有经选择用于处理SQL连接查询的多个固定表的MPP数据库系统400的另一实施例。在MPP数据库系统400中,客户端应用程序通过协调器410连接到数据库上。协调器410连接到系统中的多个数据节点420上。每个数据节点420可以独占方式访问数据库中的数据表422的分区。协调器410在数据节点420处使用并行处理来
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1