包含大规模低功率集群的异构数据库系统中的联接的有效下推的制作方法

文档序号:8399327阅读:224来源:国知局
包含大规模低功率集群的异构数据库系统中的联接的有效下推的制作方法
【技术领域】
[0001]本发明一般涉及数据库管理系统,更特别地,涉及优化集群辅助RDBMS中的联接(join)处理。
【背景技术】
[0002]查询处理已对于基于盘的系统被优化,原因是这些系统可保持处理在其上面操作的非常大的表。查询处理中的一般操作包括产生这些大表的联接,但联接会引起盘系统的许多错误,从而降低性能。在多个服务器提供大量的需要的存储器的同时定位存储器中的表会提高性能。但是,该较高的性能是以服务器的高功耗为代价的。
[0003]多个服务器的替代方案是低功率节点的集群(cluster),这些节点中的每一个具有低功率处理器、适量的存储器,并且没有虚拟化存储器的永久存储装置。但是,集群可具有非常多节点,事实上,节点数以千计。大量节点的集合(aggregate)存储器和处理功率提供了多个服务器的益处,但功率较低。
[0004]给定集群的高处理功率和低功耗,希望优化集群的查询处理,使得它可以以较高的性能处理甚至更大的表。由于集群缺少永久存储装置和对事务记录的访问,因此,集群不能承担查询处理需要的所有数据库管理任务。集群必须与常规的关系数据库管理服务器(RDBMS)接口以获得集群在其上面操作的表或表的部分,并且它必须依赖于RDBMS以保持事务一致性。异构系统即常规的RDBMS服务器和集群对查询处理提供较高性能和较低功率的可能性。为了从这种系统获得最大性能,需要在集群与RDBMS之间最佳地分配诸如联接操作的查询处理的机制。
【附图说明】
[0005]图1示出实施例的总体操作的流程图;
[0006]图2示出估计在集群中执行联接操作的成本的流程图;
[0007]图3示出广播联接操作;
[0008]图4示出分割联接操作;
[0009]图5示出与集群耦合的RDBMS ;
[0010]图6示出关系包含未处理块的联接;
[0011]图7示出实施例操作的示例性系统。
【具体实施方式】
[0012]在以下的描述中,出于解释的目的,为了能够彻底地理解本发明,阐述大量特定的细节。但是,很显然,可以在没有这些特定细节的情况下实施本发明。在其它情况下,为了避免不必要地混淆本发明,以框图形式表示公知的结构和装置。
[0013]概要
[0014]图1所示的实施例确定RDBMS与集群之间的工作的最有效的分配。在步骤102中,实施例估计在RDBMS中执行诸如联接的操作的成本,并且,在步骤104中,估计执行借助于集群执行该操作的成本。实施例在步骤106中比较两个估计成本并且在具有最低的成本的状态执行操作。如果如步骤108那样在RDBMS中执行联接,那么成本只是向RDBMS发送关系并且在RDBMS中执行联接的成本。如果如步骤110那样借助于集群执行联接,那么获得集群的性能益处会带来附加成本。在图1中,这些附加成本不包含在RDBMS中完成联接112,原因是在任意情况下都会出现联接的完成。
[0015]使用集群的附加成本依赖于联接的类型以及是否存在任何分块(blocking)操作。如图2所示,联接的类型包含广播联接和分割(partit1ned)联接。
[0016]在广播联接中,如果关系中的一个根据在图2的步骤202中所确定的足够小以适合(fit in)集群的每个单元,那么它被广播到集群中的所有处理单元。如在步骤204中确定的那样,该联接的附加成本包含广播和在各处理单元中将小关系和大关系的一部分联接的成本。
[0017]在图2所示的分割的联接中,要联接的各关系基于联接列(join column)被分割(partit1n),并且,各单独的分割通过集群中的各单独的处理单元被处理。如在步骤206中确定的那样,该联接的附加成本包含分割和联接各关系的分割的成本。
[0018]如图2的步骤208所示,分块操作带来附加成本。诸如分类和分组的这些操作在可产生任何输出行之前读取所有的输入行,由此防止完全在集群中执行其它依赖性操作。相反地,必须在RDBMS中执行操作的一部分。具体而言,RDBMS必须集成/合并分块操作的结果,在集群中的处理单元之间分割结果,并且合并来自处理单元的结果。分块操作由此带来向RDBMS发送分块操作的结果的附加成本、在RDBMS中分割的成本和将分割送回集群中的处理单元的成本。
[0019]如图2的步骤210所示,不仅带来使用集群的附加成本,而且影响事务处理的其它方面。具体而言,在集群中执行操作影响RDBMS中的并行度并且要求RDBMS确保事务一致性。
[0020]详细讨论
[0021 ] 在执行联接之前,RDBMS首先估计要在应用任何过滤器(包含任何适用的Bloom过滤器和投影)之后联接的两个关系的尺寸。对得到的关系的尺寸估计包含行的总数和字节的总数。这些估计帮助确定以下描述的成本。
[0022]然后,RDBMS在查询计划(query plan)中的联接下确定是否存在任何诸如分类和分组的分块查询操作。如果需要任何分块操作,那么RDBMS必须在该联接操作的成本中考虑这一点。
[0023]如果可完全在集群中执行联接和联接下面的查询子树,那么RDBMS决定什么分布联接算法会最佳。
[0024]另外,RDBMS通过由处理单元中的每一个发送的周期性状态消息来跟踪各处理单元上的可用存储器。
[0025]联接的一般成本
[0026]为了评估联接的成本,系统评估三个类别下的成本,分割关系的成本Cl、发送关系或关系的分割的成本C2和执行实际联接的成本C3。
[0027]分割关系的成本Cl依赖于行的数量、联接键的平均尺寸和处理单元的计算机和存储器带宽。发送关系或分割的成本C2依赖于互连带宽和在预备步骤中确定的单位为字节的关系的尺寸。发送任何Bloom过滤器的成本是可忽略的并且不被视为成本项。另外,可在集群中的表扫描期间完成对Bloom过滤器的评估,因此,评估成本被排除。联接的成本C3依赖于被联接的两个关系(或子关系)中的行数、单位为字节的联接结果的尺寸和处理单元的计算机和存储器带宽。完全在RDBMS中执行的联接在要联接的整个关系上操作。在集群中执行的联接在两个关系的分割上操作。
[0028]RDBMS中的联接
[0029]完全在RDBMS中执行联接的成本仅包含向RDBMS发送两个关系的成本(C2)和执行实际联接的成本(C3)。由于RDBMS在整个关系上执行联接,因此不存在分割(Cl)关系的成本。
[0030]集群中的联接
[0031]广播联接
[0032]如上所述,当要联接的两个关系302、304中的一个关系304较小从而意味着较小的关系304可适合处理单元的存储器时,图3所示的广播联接是可能的。在图3中,较大的关系302在三个节点之间被分割为306a、b、c,而较小的关系304被广播到这些节点。较小的关系304可以本来就较小,或者,通过过滤较大的关系而变得较小。
[0033]因此,对于广播联接,(RDBMS成本的)附加成本包含分割较大的关系的成本(Cl)、向所有处理单元发送较小的关系的成本(C2)、向所有处理单元发送较大的关系的成本(C2)、和在处理单元中的每一个中联接的成本(C3)。不包含将部分联接发送回RDBMS的成本,原因是它已被计入完全在RDBMS中执行联接的成本中。
[0034]分割的联接
[0035]如果广播联接不可行,那么RDBMS考虑分割的联接的成本。如图4所示,基于关于整个数据集的全局统计,根据由RDBMS设定的分割参数,要联接的关系404和404中的每一个被分割。分割对406a408a、406b 408b,406c 408c然后被发送到处理单元中的每一个。因此,存在分割关系的附加成本Cl和用于在单元中的每一个中执行部分联接的附加成本C3。不包含成本C2,原因是它已被计入RDBMS联接中。如果在加载时间分割关系,那么分割关系的Cl成本可被避免。
[0036]分块操作
[0037]如果在执行广播联接或分割的联接时包括分块操作,那么带来附加成本。在执行分块操作之后,在向RDBMS发送关系时,带来C2成本。在分割发送关系时
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1