CN102844754A - 用于对并行数据库管理系统的外连接的系统和方法 - Google Patents
用于对并行数据库管理系统的外连接的系统和方法 Download PDFInfo
- Publication number
- CN102844754A CN102844754A CN2010800658800A CN201080065880A CN102844754A CN 102844754 A CN102844754 A CN 102844754A CN 2010800658800 A CN2010800658800 A CN 2010800658800A CN 201080065880 A CN201080065880 A CN 201080065880A CN 102844754 A CN102844754 A CN 102844754A
- Authority
- CN
- China
- Prior art keywords
- svl
- value
- connection
- computer
- interior
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种对并行数据库管理系统执行外连接的计算机可执行方法。示例性方法包括接收外倾斜值列表(SVL)。外SVL可以包括被指示为倾斜的值。示例性方法还包括接收内SVL。内SVL可以包括被指示为倾斜的值。另外,该示例性方法包括基于外SVL和内SVL跨多个连接实例对外表和内表进行分区。标识缺失的倾斜值。该缺失的倾斜值可以是内SVL的在内表中找不到的值。基于缺失的倾斜值,使用所述多个连接实例施行所述外连接。
Description
背景技术
在大规模并行处理(Massively Parallel Processing,MPP)系统中,商业智能(Business Intelligence,BI)和企业数据仓库(Enterprise Data Warehouse,EDW)应用处理大量的数据。该数据(关系表集)驻留在非常大的数据库系统中,该非常大的数据库系统依靠大数目的中央处理单元(CPU)来高效地执行数据库操作。MPP系统试图在可用的处理器之间均一地分配数据,并且然后并行地施行预期操作,而不是串行地施行该操作。
基本且最常见的数据库操作之一是两个关系表之间的连接。连接操作器基于各表中的列之间的匹配准则组合来自两个表的记录。例如,通过匹配两个表上的列product_id,可以把表LINEITEM连接到表PRODUCT,以得到具有它们的产品信息的所有行项集。在查询执行树中,连接操作常常是计算开销最高的操作,并且其性能指示了该查询的整体性能。
为了并行地高效施行连接操作,该系统基于连接列(上面的示例中的product_id)的值对来自两个表的数据流进行分区。也就是说,保证具有来自任一表、或者孩子的连接列的或连接的相同值的所有记录都被发送到同一中央处理单元(CPU)。因而,所有连接匹配都可以被在每个CPU中本地地且独立于其他CPU地找到。
当记录被均匀地分配时,此按值分区模式效果好。使用良好的哈希函数确保了不同的值被均匀地(或伪随机地)分配给所有处理器。然而,良好的哈希函数不保证记录被均一地分配,因为不是所有的不同的值在该数据集中都具有相同的出现频率。当一个值具有比每个CPU的平均记录数高的出现频率时,该问题变得明显。这被称为数据倾斜(skew)或倾斜。在倾斜的情况下,通过频率值选择的CPU将处理与平均值相比显著更高数目的记录,这可能显著劣化查询响应时间。
附图说明
在以下详细描述中且参考附图来描述特定的示例性实施例,其中:
图1A是依据本发明的示例性实施例的被适配为执行倾斜外连接的系统的框图;
图1B是依据本发明的示例性实施例的被适配为执行倾斜外连接的并行数据库管理系统的框图;
图2是表示依据本发明的示例性实施例的操作器的逻辑视图的框图;
图3A是表示依据本发明的示例性实施例的用于SQL STATEMENT 1的混合交换操作器的逻辑视图的框图;
图3B是表示依据本发明的示例性实施例的用于SQL STATEMENT 2的混合交换操作器的逻辑视图的框图;
图3C是表示依据本发明的示例性实施例的查询计划134的扩展逻辑视图的框图;
图3D是表示依据本发明的示例性实施例的用于SQL STATEMENT 2的查询计划的框图;
图4是依据本发明的示例性实施例的用于执行查询的计算机可执行方法的处理流程图;
图5是示出依据本发明的示例性实施例的存储被适配成执行查询的代码的有形机器可读介质的框图。
具体实施方式
图1A是依据本发明的示例性实施例的被适配为执行查询的系统的框图。该系统通常由附图标记100指代。本领域普通技术人员将意识到:图1中所示出的功能框和设备可以包括硬件元素、软件元素或者硬件元素和软件元素这二者的组合,所述硬件元素包括电路,所述软件元素包括存储在有形机器可读介质上的计算机代码。
另外,系统100的功能框和设备是可以在本发明的示例性实施例中实施的功能框和设备的仅一个示例。基于针对特定电子设备的设计考虑,本领域普通技术人员将能够容易地定义特定的功能框。
该系统100可以包括通过网络130通信的数据库服务器102和一个或多个客户端计算机104。如图1A中所图示的,数据库服务器102可以包括并行地进行动作的多个处理器112。处理器112可以通过总线113连接到显示器114、键盘116、一个或多个输入设备118和诸如打印机120之类的输出设备。输入设备118可以包括诸如鼠标或触摸屏之类的设备。
在本发明的示例性实施例中,在大规模并行处理系统(MPP)中,该系统100可以包括多个数据库服务器102。在这样的示例性实施例中,该系统100可以包括无共享架构。
数据库服务器102还可以通过总线113连接到网络接口卡(NIC)126。NIC 126可以把数据库服务器102连接到网络130。网络130可以是局域网(LAN)、广域网(WAN)、或者另一网络配置,诸如因特网。网络130可以包括路由器、交换机、调制解调器、或者被用于互联的任何其他种类的接口设备。
通过网络130,若干客户端计算机104可以连接到数据库服务器102。除了数据库管理系统(DBMS)124的存储之外,客户端计算机104可以与数据库服务器102类似地进行构造。在示例性实施例中,客户端计算机104可以用来向数据库服务器102提交查询以便由DBMS 124执行。
数据库服务器102可以具有在工作中通过总线113耦合到处理器112的其他单元。这些单元可以包括有形机器可读存储介质,诸如存储设备122。
存储设备122可以包括用于操作软件和数据的长期存储的介质,诸如硬驱动器。存储设备122还可以包括其他类型的有形机器可读介质,诸如只读存储器(ROM)、随机存取存储器(RAM)以及高速缓冲存储器。存储设备122可以包括在本技术的示例性实施例中所使用的软件。
存储设备122可以包括DBMS 124、缺省表129、和查询128。DBMS 124可以是一套计算机程序,其控制由组织和其端用户对数据库的创建、维护和使用。在本发明的示例性实施例中,DBMS 124可以是并行DBMS。参考图1B来更详细地描述DBMS 124。
查询128可以是某类常见数据库查询中的任何。更具体地,查询128可以指定OUTER JOIN(外连接)操作。JOIN(连接)操作可以组合来自两个或多个数据库表的记录。JOIN可以通过使用对于每个而言共有的值来组合来自两个表的字段。JOIN的两个典型类型包括内和外。
内连接可以通过基于连接谓词(join-predicate)组合两个表的列值来创建结果。连接谓词可以指定用于两个表中的列的条件表达式。此后,连接谓词的列可以被单独地称为连接列。内连接可以把第一表的连接列和第二表的连接列进行比较以找到满足该连接谓词的所有的行对。当满足连接谓词时,每个匹配的行对的列值可以被组合成结果行。使用以下表来进一步图示连接的操作:
表1:EMPLOYEE TABLE(雇员表)。
表2:DEPARTMENT TABLE(部门表)。
表1是包括针对6名雇员的LAST_NAME和DEPT_ID的EMPLOYEE表。表2是包括针对4个部门的DEPT_ID和DEPT_NAME的DEPARTMENT表。在此示例中,DEPT_ID可以是连接列。
如所示出的,表1包括针对雇员“JONES”而言为“32”的DEPT_ID。然而,DEPARTMENT表不包括为“32”的DEPT_ID的行。
以下是内连接的示例SQL:
当被执行时,SQL STATEMENT 1 中指定的内连接可以为EMPLOYEE表和DEPARTMENT表中DEPT_ID相等的每个行对创建结果行。例如,相对于上面指定的EMPLOYEE表和DEPARTMENT表执行SQL STATEMENT 1 可以生成以下结果:
表3:INNER JOIN RESULT(内连接结果)。
如所示出的,EMPLOYEE表中的具有DEPARTMENT表中的匹配的DEPARTMENT_ID的每个行被呈现在该结果中。因为EMPLOYEE表中针对“JONES”的行在DEPARTMENT表中不具有匹配的DEPARTMENT_ID (“32”),所以在该结果中不存在针对“JONES”的行。
另一方面,外连接可以为所述表中的一个表中的每个行创建结果行,而不管在连接列中是否存在匹配。为所述表之一创建结果行的外连接可以被称作左连接和右连接。在此上下文中的左和右可以指代结果行是为哪个表而创建的。以下是针对左连接和右连接的SQL的示例:
针对表EMPLOYEE和DEPARTMENT的左连接的结果总是包含“左”表(EMPLOYEE)的所有记录,即使在“右”表(DEPARTMENT)中不存在针对连接列的匹配的情况下也是如此。类似地,针对表EMPLOYEE和DEPARTMENT的右连接的结果总是包含“右”表(DEPARTMENT)的所有记录,即使在“左”表(EMPLOYEE)中不存在针对连接列的匹配的情况下也是如此。
外连接的两个表还可以称作外表和内表。在左连接中,外表是“左”表;内表是“右”表。类似地,在右连接中,外表是“右”表,而内表是“左”表。例如,在SQL STATEMENT 2中,外表是EMPLOYEE表,且内表是DEPARTMENT表。
如果对于外表中的行的连接列不匹配于内表中的任何行,则在该结果中该连接将仍然返回一行。然而,对于来自内表的每个列而言,该结果可以包括NULL(空)值。这意味着外连接返回来自外表的所有的值,加上来自内表的列值(或者在没有匹配的连接列的情况下的NULL值)。另外,如果外表返回一个行,并且对于该连接列而言内表返回一个以上的匹配行,则对于内表上的每个不同行可以重复外表中的列值。
考虑在SQL STATEMENT 2中指定的外连接的以下示例结果:
表4:OUTER JOIN RESULT(外连接结果)。
如所示出的,对于RAFFERTY、STEINBERG、ROBINSON、SMITH和JOHNSON的结果行包括来自EMPLOYEE表和DEPARTMENT表这二者的值。对于这些行而言,在外表和内表之间关于连接列存在匹配。然而,针对DEPARTMENT表中的列而言,对于JONES的结果行包括NULL值。这可以指示DEPARTMENT表不包含具有针对DEPT_ID = 32的匹配的连接列的行。
图1B是依据本发明的示例性实施例的被适配为执行查询的并行数据库管理系统的框图。如所图示的,DBMS 124可以包括编译器132、查询计划134、执行引擎144和若干数据库140。
查询计划134中的每个可以指定用来施行查询128的替代方式。编译器132可以是生成查询计划134的软件,其在运行时间由执行引擎144实施。
编译器132可以包括若干模块,包括但不限于解析器135、规范化器136和优化器137。该模块中的每一个可以施行查询计划生成的单独阶段。
在一个阶段中,解析器135可以对查询128施行语法检查。解析器135还可以构建查询树,其可以是查询128的代数树表示。在另一阶段中,规范化器136可以把该查询树转换为用于优化的形式,诸如规范树形式。
在又一阶段中,优化器137可以生成若干潜在查询计划134以确定查询128的执行策略。潜在查询计划134可以基于具有规范树形式的查询树。具有最小处理成本的潜在查询计划134可能被选择以用于执行策略。
数据库140可以包括被组织成表、列和行的用户数据。数据库140还可以包括元数据150。元数据150可以是关于数据库中的数据的统计量的集合。元数据150可以描述数据库内的数据值、特定值的出现频率等等。典型地,在数据被加载到数据库140中之后或者每当数据库140中的数据经由插入、更新以及删除操作已经基本上改变时,DBMS 124对元数据150进行更新。
执行引擎144可以包括服务器进程146。可以把查询计划134内的操作委派给服务器进程146中的一个或多个,所述服务器进程146中的每一个可以对某数据分区执行查询计划134的一子集。在包括MPP的实施例中,服务器进程146中的每一个可以在不同的处理器112上并行地执行。在下文中,服务器进程146中的每一个被称作连接实例。
图2是依据本发明的示例性实施例的用于对并行DBMS执行外连接的计算机可执行方法的处理流程图。该方法通常由附图标记200来指代,并且可以由DBMS 124施行。应当理解,用于方法200的处理流程图不意图指示特定的执行次序。
该方法在块202处开始。在块202处,编译器132可以通过为查询128生成查询计划134来对查询128进行编译。查询计划134可以指定多个连接实例以施行外连接。
如先前所陈述的,查询128可以指定外表和内表的外连接。查询128还可以指定谓词,该谓词指定外表和内表中的每一个的连接列。外表和内表可以基于连接列中的共有值来进行连接。
在块204处,执行引擎144可以对外表和内表中的每一个进行分区。在本发明的示例性实施例中,可以采用使数据倾斜减轻的方式对表进行分区。参考图4来更详细地描述该分区。
在块206处,执行引擎144可以施行外连接。外连接可以通过多个连接实例来施行,每个连接实例对外表和内表的单独分区进行操作。
图3是依据本发明的示例性实施例的用于对查询128进行编译的计算机可执行方法的处理流程图。该方法通常由附图标记202来指代,并且可以由编译器132施行。应当理解,用于方法202的处理流程图不意图指示特定的执行次序。
该方法在块304处开始。在块304处,编译器132可以构建外倾斜值列表(skewed values list,SVL)和内SVL。外SVL可以包括元数据150指示的值,所述值在外表内是倾斜的。类似地,内SVL可以包括元数据150指示的值,所述值在内表内可能是倾斜的。
SVL可以在编译的查询优化阶段期间被构建。对于外表和内表中的每一个而言,查询优化器137可以标识和存储具有比指定的阈限高的出现频率的所有的列值(在连接列中)。该阈限可以是使得SVL仅包括能够使均匀的数据分配显著扭曲的值。在本发明的示例性实施例中,该阈限可以等于,其中RC表示该表中的总行数,以及JI表示用于施行查询128的总的连接实例数。
查询优化器137可以检索外表和内表的元数据150,其包括最频繁的值以及它们的频率。在优化过程期间,优化器137可以作为列统计量的一部分来传播此元数据150,并且遍及该查询计划树来调整该元数据。当选择查询计划134时,优化器137可以针对连接孩子(join children)中的每一个来分析该元数据150并且计算外SVL和内SVL。
在块306处,优化器可以协调这两个SVL以确保这两个列表没有重叠元素。如果一值出现在两个列表中,则优化器137可以从所述列表中的一个列表删除该值,并且在该值具有较高频率的列表中保留它。
在块308处,优化器137可以为查询计划134选择分区模式。如果元数据指示不存在显著倾斜(即,两个SVL都为空),则优化器137可以选择标准的按值分区模式。
另一方面,如果检测到倾斜,则优化器137可以在连接操作器和连接操作器的孩子之间插入两个特殊分配操作器(即,交换操作器)。SVL可以被传播并且存储在连接操作器的左和右孩子上的两个交换节点中。
在块310处,优化器可以选择并行连接实例之一。所选择的连接实例可以被指明为生成针对缺失的倾斜值的空实例化结果行的唯一连接实例。在本发明的另一实施例中,所指明的连接实例可以由执行引擎144在查询计划134的执行期间选择。
图4是依据本发明的示例性实施例的用于对并行DBMS执行外连接的计算机可执行方法的处理流程图。该方法通常由附图标记400来指代,并且可以由执行引擎144施行。应当理解,用于方法400的处理流程图不意图指示特定的执行次序。
该方法400在块402处开始。在块402处,执行引擎144可以接收外SVL。如先前所陈述的,依据元数据150,外SVL可以包括针对外表的连接列的一个或多个倾斜值。在块404处,执行引擎144可以接收内SVL,其可以包括针对内表的连接列的一个或多个倾斜值。
在块406处,执行引擎144可以跨多个连接实例对外表进行分区。该分区可以基于外SVL和内SVL。在查询执行期间,外表的交换操作器可以构建两个哈希表:一个用于外SVL,而一个用于内SVL。
可以针对SVL来检查外表的每一行。如果该行的连接列值不在任一SVL中,则可以基于标准的按值分区模式把该行指派给针对此特定值所指派的连接实例。
如果针对该行的连接列值在外SVL中,则该行在由此交换操作器处理的数据集中具有倾斜值之一。从而,基于均匀分配函数,诸如随机或循环制,可以把该行指派给连接实例中的任何连接实例。
如果针对该行的连接列值在内SVL中,则此行在由另一孩子交换操作器处理的数据集中具有倾斜值之一。相应地,可以把该行的拷贝指派给所有的连接实例。
在块408处,执行引擎144可以跨多个连接实例对内表进行分区。该分区可以基于外SVL和内SVL。
可以依据块406中所描述的相同过程对内表进行分区。例如,如果行的连接列值不在任一SVL中,则可以基于标准的按值分区模式把该行指派给针对此特定值所指派的连接实例。然而,外SVL和内SVL的角色可以互换。
如果针对该行的连接列值在内SVL中,则该行在由此交换操作器处理的数据集中具有倾斜值之一。从而,基于均匀分配函数,诸如随机或循环制,可以把该行指派给连接实例中的任何连接实例。另外,交换节点可以把内SVL中的值标记为找到。
如果针对该行的连接列值在外SVL中,则该行在由该连接的另一孩子交换操作器处理的数据集中具有倾斜值之一。相应地,可以把该行拷贝到所有的连接实例。
在块410处,执行引擎可以标识内表的缺失的倾斜值。该缺失的倾斜值可以是在分区完成之后保留为未标记的值。如果内SVL中的值保留为未标记,则内表可能不包括具有未标记值的行。换句话说,用来生成SVL的元数据150可能过时了由执行引擎144对所述行进行处理的时间。
在块412处,执行引擎144可以施行在该查询128中所指定的外连接。连接实例中的每一个可以基于所指派的数据的特定分区来生成结果。另外,被指明针对缺失的倾斜值生成空实例化的行的连接实例可以基于缺失的倾斜值生成结果。
图5是依据本发明的示例性实施例的用于对并行DBMS执行外连接的计算机可执行方法的处理流程图。该方法通常由附图标记500来指代,并且可以由执行引擎144施行。应当理解,用于方法500的处理流程图不意图指示特定的执行次序。
该方法500在块502处开始。在块502处,执行引擎144可以生成缺失的SVL。在处理其最近的记录之后,对内表记录进行分区的交换操作器可以把内SVL中未找到的所有的值的列表发送到所指明的空实例化连接实例。所指明的连接实例可以通过比较来自所有分区节点的“未找到的”值生成缺失的SVL以确定真正缺失的值。缺失的值仅是未被分区节点中的任何分区节点找到的那些。
对于每个连接实例而言可以重复块504-516。在块518处,可以返回外连接的结果。对于被指派给该连接实例的外表中的每个行而言,可以重复块506-516。
在块508处,执行引擎可以确定一行的连接列的值是否在内SVL中。如果否,则在块516处,对于外表中的当前行而言,执行引擎144可以生成类似于正则外连接操作的结果的结果。
如果连接列的值在内SVL中,则在块510处,执行引擎144可以确定这是否是所指明的连接实例。如果否,可以为此行生成非空实例化的结果。因此,在块514处,对于外表的当前行而言,执行引擎可以生成类似于内连接操作的结果的结果。
如果这是所指明的连接实例,则在块512处,执行引擎144可以确定该连接列值是否在缺失的SVL中。如果否,则可以施行块514。
如果该连接列值在该缺失的SVL中,则可以生成空实例化的行。因此,在块516处,对于外表的当前行而言,执行引擎可以生成类似于外连接的结果的结果。
图6是示出依据本发明的示例性实施例的存储被适配成对并行DBMS执行外连接的代码的有形机器可读介质的框图。该有形机器可读介质通常由附图标记600指代。有形机器可读介质600可以对应于存储诸如编程代码等等之类的计算机可执行指令的任何典型存储设备。
而且,有形机器可读介质600可以被包括在图1中所示出的储存器122中。当由处理器602读取和执行时,存储在有形机器可读介质600上的指令被适配为促使处理器602执行查询128。
有形机器可读介质400的区域606存储当由处理器602执行时生成用于外连接的查询计划(其生成多个连接实例)的机器可读指令。
有形机器可读介质600的区域608存储当由处理器602执行时构建外SVL的机器可读指令。外SVL可以包括用于外连接的外表的元数据150指示的一个或多个值,其是倾斜的。
有形机器可读介质600的区域610存储当由处理器602执行时构建内SVL的机器可读指令。内SVL可以包括用于外连接的内表的元数据150指示的一个或多个值,其是倾斜的。
有形机器可读介质600的区域612存储当由处理器602执行时协调外SVL和内SVL的机器可读指令。
有形机器可读介质600的区域614存储当由处理器602执行时选择多个连接实例之一以用于针对缺失的倾斜值生成空实例化的行的机器可读指令。
有形机器可读介质600的区域616存储当由处理器执行时基于外SVL和内SVL跨多个连接实例对外表进行分区的机器可读指令。
有形机器可读介质600的区域618存储当由处理器执行时基于外SVL和内SVL跨多个连接实例对内表进行分区的机器可读指令。
有形机器可读介质600的区域620存储当由处理器执行时标识缺失的倾斜值的机器可读指令。该缺失的倾斜值是内SVL的不存在于内表中的值。
有形机器可读介质600的区域622存储当由处理器执行时基于该缺失的倾斜值使用多个连接实例施行外连接的机器可读指令。
Claims (20)
1.一种对并行数据库管理系统执行外连接的计算机可执行方法,包括:
接收外倾斜值列表(SVL),其包括对于所述外连接的外表而言被指示为是倾斜的一个或多个值;
接收内SVL,其包括对于所述外连接的内表而言被指示为是倾斜的一个或多个值;
基于所述外SVL和所述内SVL,跨多个连接实例对所述外表进行分区;
基于所述外SVL和所述内SVL,跨所述多个连接实例对所述内表进行分区;
标识缺失的倾斜值,所述缺失的倾斜值是所述内SVL的在所述内表中未找到的值;以及
基于所述缺失的倾斜值,使用所述多个连接实例施行所述外连接。
2.如权利要求1所述的计算机可执行方法,其中施行所述外连接包括使用所述多个连接实例中的仅一个连接实例针对所述缺失的倾斜值生成空实例化的行。
3.如权利要求2所述的计算机可执行方法,包括选择所述仅一个连接实例。
4.如权利要求2所述的计算机可执行方法,其中生成所述空实例化的行包括:
选择所述外表的外行;
确定所述外行包括所述缺失的倾斜值;以及
生成结果行,所述结果行包括针对所述外表的连接列值和针对所述内表的空值。
5.如权利要求4所述的计算机可执行方法,包括生成包括所述内SVL的哈希表,其中确定所述外行包括所述缺失的倾斜值是基于所述哈希表的。
6.如权利要求1所述的计算机可执行方法,包括编译所述查询,其中编译所述查询包括生成查询计划,所述查询计划接收所述外SVL、接收所述内SVL、对所述外表进行分区、对所述内表进行分区、标识所述缺失的倾斜值以及施行所述外连接。
7.如权利要求6所述的计算机可执行方法,其中编译所述查询包括选择所述仅一个连接实例。
8.如权利要求6所述的计算机可执行方法,其中编译所述查询包括:
生成所述内SVL;
生成所述外SVL;以及
协调所述内SVL和所述外SVL。
9.如权利要求8所述的计算机可执行方法,其中协调所述内SVL和所述外SVL包括:
标识所述外SVL和所述内SVL的共有值;以及
基于所述共有值是否以更小的频率出现在所述内表或者所述外表中,从所述内SVL和所述外SVL中的一个去除所述共有值。
10.如权利要求1所述的计算机可执行方法,其中对所述外表进行分区包括下列中的至少一个:
把所述外表的外行的拷贝指派给所述多个连接实例中的所有连接实例;
基于均匀分配算法把所述外行指派给所述多个连接实例中的一个连接实例;以及
基于按值分区算法把所述外行指派给所述多个连接实例中的该一个连接实例。
11.一种用于对并行数据库管理系统(DBMS)执行外连接的计算机系统,所述计算机系统包括:
多个处理器,其被适配为执行存储的指令;和
存储器设备,其存储指令,所述存储器设备包括:
并行DBMS;
被适配为对指定外连接的查询进行编译的计算机可执行代码;
被适配为接收外倾斜值列表(SVL)的计算机可执行代码,所述外倾斜值列表(SVL)包括被指示为倾斜的用于所述外连接的外表的一个或多个值;
被适配为接收内SVL的计算机可执行代码,所述内SVL包括被指示为倾斜的用于所述外连接的内表的一个或多个值;
被适配为基于所述外SVL和所述内SVL跨多个连接实例对所述外表进行分区的计算机可执行代码;
被适配为基于所述外SVL和所述内SVL跨多个连接实例对所述内表进行分区的计算机可执行代码;
被适配为标识缺失的倾斜值的计算机可执行代码,所述缺失的倾斜值是所述内SVL的不存在于所述内表中的值;以及
被适配为基于所述缺失的倾斜值、使用所述多个连接实例施行所述外连接的计算机可执行代码。
12.如权利要求11所述的计算机系统,其中所述被适配为对查询进行编译的计算机可执行代码包括被适配为选择所述多个连接实例之一以便针对所述缺失的倾斜值生成空实例化的行的计算机可执行代码。
13.如权利要求12所述的计算机系统,其中被适配为施行所述外连接的计算机可执行代码包括:被适配为仅使用所述多个连接实例中的所选择的一个连接实例针对所述缺失的倾斜值生成所述空实例化的行的计算机可执行代码。
14.如权利要求13所述的计算机系统,其中被适配为生成所述空实例化的行的计算机可执行代码包括被适配为以下各项的计算机可执行代码:
选择所述外表的外行;
确定所述外行包括所述缺失的倾斜值;以及
生成结果行,所述结果行包括针对所述外表的连接列值和针对所述内表的空值。
15.如权利要求14所述的计算机系统,其中所述被适配为确定所述外行包括所述缺失的倾斜值的计算机可执行代码包括被适配为以下各项的计算机可执行代码:
生成包括内SVL的哈希表;以及
基于所述哈希表确定所述外行包括内SVL的值。
16.如权利要求11所述的计算机系统,包括被适配为协调所述内SVL和所述外SVL的计算机可执行代码。
17.如权利要求16所述的计算机系统,其中被适配为协调所述内SVL和所述外SVL的计算机可执行代码包括被适配为以下各项的计算机可执行代码:
标识所述外SVL和所述内SVL之间的共有值;
基于所述共有值是否以更大的频率出现在所述内表或者所述外表中而从所述内SVL和所述外SVL的一个去除所述共有值。
18.如权利要求11所述的计算机系统,其中被适配为对所述内表进行分区的计算机可执行代码包括被适配为以下各项的计算机可执行代码:
把所述外表的外行的拷贝指派给所述多个连接实例中的所有连接实例;
基于均匀分配算法把所述外行指派给所述多个连接实例中的一个连接实例;
基于按值分区算法把所述外行指派给所述多个连接实例中的该一个连接实例;或
其组合。
19.一种有形机器可读介质,其存储可由处理器执行的机器可读指令以便执行查询,所述有形机器可读介质包括:
当由处理器执行时生成用于外连接的查询计划的机器可读指令,所述外连接生成多个连接实例;
当由处理器执行时生成外倾斜值列表(SVL)的机器可读指令,所述外倾斜值列表(SVL)包括对于所述外连接的外表而言被指示为是倾斜的一个或多个值;
当由处理器执行时生成内SVL的机器可读指令,所述内SVL包括对于所述外连接的内表而言被指示为是倾斜的一个或多个值;
当由处理器执行时协调所述外SVL和所述内SVL的机器可读指令;
当由处理器执行时选择多个连接实例之一以用于针对缺失的倾斜值生成空实例化的行的机器可读指令;
当由处理器执行时基于所述外SVL和所述内SVL,跨所述多个连接实例对外表进行分区的机器可读指令;
当由处理器执行时基于所述外SVL和所述内SVL,跨所述多个连接实例对内表进行分区的机器可读指令;
当由处理器执行时标识缺失的倾斜值的机器可读指令,所述缺失的倾斜值是所述内SVL的不存在于所述内表中的值;以及
当由处理器执行时基于所述缺失的倾斜值,使用所述多个连接实例施行所述外连接的机器可读指令。
20.如权利要求19所述的有形机器可读介质,其中,当由处理器执行时施行所述外连接的机器可读指令包括:当由处理器执行时使用所述多个连接实例中的所选择的一个连接实例针对所述缺失的倾斜值生成空实例化的行的机器可读指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/029205 WO2011123096A1 (en) | 2010-03-30 | 2010-03-30 | System and method for outer joins on a parallel database management system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102844754A true CN102844754A (zh) | 2012-12-26 |
CN102844754B CN102844754B (zh) | 2015-11-25 |
Family
ID=44712522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080065880.0A Active CN102844754B (zh) | 2010-03-30 | 2010-03-30 | 用于对并行数据库管理系统的外连接的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8812484B2 (zh) |
EP (1) | EP2553604A4 (zh) |
CN (1) | CN102844754B (zh) |
WO (1) | WO2011123096A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107251023A (zh) * | 2015-02-23 | 2017-10-13 | 华为技术有限公司 | 一种大规模并行处理架构中的混合数据分布 |
CN110032563A (zh) * | 2019-02-19 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 一种失配值的处理方法、系统以及电子设备 |
CN110175202A (zh) * | 2019-04-26 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 用于数据库的表的外连接的方法和系统 |
CN111209305A (zh) * | 2019-11-19 | 2020-05-29 | 华为技术有限公司 | 查询数据的方法、数据节点、分布式数据库、计算设备 |
WO2020229900A1 (en) * | 2019-05-10 | 2020-11-19 | International Business Machines Corporation | Service management in a dbms |
CN112400164A (zh) * | 2018-06-11 | 2021-02-23 | 斯诺弗雷克公司 | 在连接操作中管理数据倾斜的系统、方法和设备 |
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
US11086872B2 (en) | 2019-04-26 | 2021-08-10 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Method and system for outer join of database tables |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10007698B2 (en) * | 2011-11-28 | 2018-06-26 | Sybase, Inc. | Table parameterized functions in database |
GB2508223A (en) | 2012-11-26 | 2014-05-28 | Ibm | Estimating the size of a joined table in a database |
GB2508603A (en) | 2012-12-04 | 2014-06-11 | Ibm | Optimizing the order of execution of multiple join operations |
US20140214886A1 (en) | 2013-01-29 | 2014-07-31 | ParElastic Corporation | Adaptive multi-client saas database |
US9298772B2 (en) * | 2013-03-15 | 2016-03-29 | Oracle International Corporation | Small table replication for parallelized join operations |
US10019481B2 (en) | 2013-03-15 | 2018-07-10 | Oracle International Corporation | Adaptive selection of a distribution method during execution of parallel join operations |
US9305074B2 (en) | 2013-06-19 | 2016-04-05 | Microsoft Technology Licensing, Llc | Skew-aware storage and query execution on distributed database systems |
US10002160B2 (en) | 2013-12-23 | 2018-06-19 | Teradata Us, Inc. | Parallelizable gridded geospatial join (PGGJ) |
US9870396B2 (en) * | 2014-03-12 | 2018-01-16 | International Business Machines Corporation | Immediate join spilling scheme for a database |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090024568A1 (en) * | 2007-07-20 | 2009-01-22 | Al-Omari Awny K | Data skew insensitive parallel join scheme |
US20090292668A1 (en) * | 2008-05-22 | 2009-11-26 | Yu Xu | System, method, and computer-readable medium for partial redistribution, partial duplication of rows of parallel join operation on skewed data |
US20100057672A1 (en) * | 2008-09-03 | 2010-03-04 | Xin Zhou | System, method, and computer-readable medium for duplication optimization for parallel join operations on similarly large skewed tables |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
WO2000045301A1 (en) * | 1999-01-29 | 2000-08-03 | Vidimedix Corporation | Method and apparatus for dynamically generating a user presentation based on database stored rules |
US6618719B1 (en) * | 1999-05-19 | 2003-09-09 | Sybase, Inc. | Database system with methodology for reusing cost-based optimization decisions |
CA2279359C (en) | 1999-07-30 | 2012-10-23 | Basantkumar John Oommen | A method of generating attribute cardinality maps |
US20040111410A1 (en) * | 2002-10-14 | 2004-06-10 | Burgoon David Alford | Information reservoir |
US7343370B2 (en) | 2005-03-07 | 2008-03-11 | Hewlett-Packard Development Company, L.P. | Plan generation in database query optimizers through specification of plan patterns |
US7386538B2 (en) * | 2005-03-24 | 2008-06-10 | International Business Machines Corporation | Building database statistics across a join network using skew values |
US7512600B2 (en) | 2005-06-10 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Use of multi-join operator and rules as framework for join tree processing in database systems |
US8650179B2 (en) * | 2005-08-18 | 2014-02-11 | International Business Machines Corporation | Generating statistics for temporary tables during query optimization |
US7580941B2 (en) | 2006-06-13 | 2009-08-25 | Microsoft Corporation | Automated logical database design tuning |
US20080195577A1 (en) * | 2007-02-09 | 2008-08-14 | Wei Fan | Automatically and adaptively determining execution plans for queries with parameter markers |
US8166022B2 (en) * | 2009-08-18 | 2012-04-24 | International Business Machines Corporation | System, method, and apparatus for parallelizing query optimization |
-
2010
- 2010-03-30 WO PCT/US2010/029205 patent/WO2011123096A1/en active Application Filing
- 2010-03-30 US US13/383,775 patent/US8812484B2/en active Active
- 2010-03-30 CN CN201080065880.0A patent/CN102844754B/zh active Active
- 2010-03-30 EP EP10849122.6A patent/EP2553604A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090024568A1 (en) * | 2007-07-20 | 2009-01-22 | Al-Omari Awny K | Data skew insensitive parallel join scheme |
US20090292668A1 (en) * | 2008-05-22 | 2009-11-26 | Yu Xu | System, method, and computer-readable medium for partial redistribution, partial duplication of rows of parallel join operation on skewed data |
US20100057672A1 (en) * | 2008-09-03 | 2010-03-04 | Xin Zhou | System, method, and computer-readable medium for duplication optimization for parallel join operations on similarly large skewed tables |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107251023B (zh) * | 2015-02-23 | 2020-12-01 | 华为技术有限公司 | 一种大规模并行处理架构中的混合数据分布 |
CN107251023A (zh) * | 2015-02-23 | 2017-10-13 | 华为技术有限公司 | 一种大规模并行处理架构中的混合数据分布 |
CN112400164A (zh) * | 2018-06-11 | 2021-02-23 | 斯诺弗雷克公司 | 在连接操作中管理数据倾斜的系统、方法和设备 |
CN110032563A (zh) * | 2019-02-19 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 一种失配值的处理方法、系统以及电子设备 |
CN110032563B (zh) * | 2019-02-19 | 2023-08-22 | 北京奥星贝斯科技有限公司 | 一种失配值的处理方法、系统以及电子设备 |
CN110175202B (zh) * | 2019-04-26 | 2021-09-10 | 蚂蚁金服(杭州)网络技术有限公司 | 用于数据库的表的外连接的方法和系统 |
US11086872B2 (en) | 2019-04-26 | 2021-08-10 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Method and system for outer join of database tables |
CN110175202A (zh) * | 2019-04-26 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 用于数据库的表的外连接的方法和系统 |
WO2020229900A1 (en) * | 2019-05-10 | 2020-11-19 | International Business Machines Corporation | Service management in a dbms |
GB2597201A (en) * | 2019-05-10 | 2022-01-19 | Ibm | Service management in a DBMS |
GB2597201B (en) * | 2019-05-10 | 2022-07-20 | Ibm | Service management in a DBMS |
CN111209305A (zh) * | 2019-11-19 | 2020-05-29 | 华为技术有限公司 | 查询数据的方法、数据节点、分布式数据库、计算设备 |
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN112905596B (zh) * | 2021-03-05 | 2024-02-02 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2553604A4 (en) | 2017-02-15 |
US20120117056A1 (en) | 2012-05-10 |
CN102844754B (zh) | 2015-11-25 |
US8812484B2 (en) | 2014-08-19 |
WO2011123096A1 (en) | 2011-10-06 |
EP2553604A1 (en) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102844754B (zh) | 用于对并行数据库管理系统的外连接的系统和方法 | |
Mondal et al. | Managing large dynamic graphs efficiently | |
Olston et al. | Automatic optimization of parallel dataflow programs | |
CN107111653B (zh) | 适于并行数据库系统的系统内存负载的查询优化 | |
US8090710B2 (en) | Index maintenance in a multi-node database | |
US7991763B2 (en) | Database query optimization utilizing remote statistics collection | |
US10394807B2 (en) | Rewrite constraints for database queries | |
US8195642B2 (en) | Partial indexes for multi-node database | |
CN103262062A (zh) | 用于执行嵌套连接操作的系统和方法 | |
Sarwat et al. | Horton+ a distributed system for processing declarative reachability queries over partitioned graphs | |
CN106599043A (zh) | 用于多级数据库的中间件和多级数据库系统 | |
Turk et al. | Temporal workload-aware replicated partitioning for social networks | |
CN104871153B (zh) | 用于分布式大规模并行处理数据库的方法和系统 | |
US8554760B2 (en) | System and method for optimizing queries | |
US8880485B2 (en) | Systems and methods to facilitate multi-threaded data retrieval | |
EP3044704A1 (en) | Systems and methods for tuning multi-store systems to speed up big data query workload | |
Shanoda et al. | JOMR: Multi-join optimizer technique to enhance map-reduce job | |
US20180150516A1 (en) | Query plan generation for split table query operations | |
Mami et al. | View selection under multiple resource constraints in a distributed context | |
US9262492B2 (en) | Dividing and combining operations | |
JP6523823B2 (ja) | 仮想データベースシステム管理装置、管理方法及び管理プログラム | |
Fang et al. | A-dsp: An adaptive join algorithm for dynamic data stream on cloud system | |
Bellatreche et al. | Roupar: Routinely and mixed query-driven approach for data partitioning | |
Al-Harbi et al. | PHD-Store: an adaptive SPARQL engine with dynamic partitioning for distributed RDF repositories | |
Wu | Parallelizing structural joins to process queries over big XML data using MapReduce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20161221 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: Hewlett-Packard Development Company, L.P. |
|
TR01 | Transfer of patent right |