用于处理包括半连接的查询的方法和系统技术方案

技术编号:2844435 阅读:213 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种用于处理包括多个半连接的查询的技术。在执行时,从用于在当前半连接执行周期中执行的半连接中选择下一个半连接。确定一个报告阈值,该阈值指明了针对所确定的半连接要检取的记录标识符的数目。执行所选择的半连接,直到检取到所确定数目个记录标识符为止。

【技术实现步骤摘要】

本专利技术的实施例涉及利用运行时间优化的动态半连接(semi-join)处理。
技术介绍
关系数据库管理系统(RDBMS)软件使用关系技术来存储和检取在关系数据库中的数据。关系数据库是计算机化的信息存储和检取系统。关系数据库被组织成由多行和多列数据组成的表。可以将行称为元组或者记录或者行。数据库通常具有多个表,每个表通常都具有多条记录和多个列。RDBMS可以使用结构化的查询语言(SQL)接口。可以使用索引来访问数据库中的表。索引是针对表中的记录的引用(reference)(例如指针)的有序集合。通过使用关键字(即表中每个记录的字段或者属性其中之一,其对应于一个列),利用索引来访问表中的各条记录。还可以将术语“关键字”称为“索引关键字”。没有索引,查找一条记录就需要扫描(线性地)整个表。索引提供了一种访问表中数据的另选技术。用户可以在建立表之后针对表创建索引。索引基于该表的一列或者多列。可以将查询描述为一种基于特定条件对来自数据库的信息的请求。查询通常包括一个或者多个判断式(predicate)。可以将一个判断式描述为搜索条件的一个元素,其表达或者暗示了一比较运算(例如,A=3)。当RDBMS接收到一个查询时,该查询指定了用户想要的数据,但没有给出如何获取该数据。当接收到所述查询时,在准备阶段,RDBMS将所述查询转换为可执行的格式。在绑定(bind)阶段,RDBMS确定针对查询所要检取的数据而言的访问路径,这些路径说明了应当如何来检取数据。然后,RDBMS执行所述查询。取与(ANDing)是指组合记录标识符(RID)的AND运算。可以将两个操作数之间的AND运算描述为布尔运算,当且仅当每个操作数具有布尔值1的时候,其结果才为布尔值1。索引取与是如下一种处理查询的技术,即通过将存储在索引中的记录标识符(RID)的结果集合的检取分为若干个操作(这可以称为半连接),并且将这些结果集合用AND运算相组合。类似地,取或(ORing)是指组合RID的OR运算。可以将在两个操作数之间的OR运算描述为布尔运算,如果任一个操作数具有布尔值1,则其结果为布尔值1。索引取或是如下一种处理查询的技术,即通过将存储在索引中的记录标识符(RID)的结果集合的检取分为若干个操作(这可以称为半连接),并且将这些结果集合用OR运算相组合。可以将连接(join)描述为SQL关系运算,其允许基于列值的匹配从两个或者更多个表中检取数据。可以将半连接描述为部分连接,其中从外部表或者索引对内部表的索引进行访问。对内部表的访问本身被延迟。星型连接(star join)是一种用于处理形成星型模式数据模型的表的连接类型。星型模式数据模型包括由多个维度表(dimension table)围绕的一个中央事实表(central fact table),与中央表相连接的每个维度表都代表一个星型图案。在一个示例中,半连接的外部表是一个维度表,而内部表是所述事实表。在该示例中,可以有多个维度,每一个都半连接以划分(separate)内部事实表的索引。每个半连接都访问一个索引,以便从这些维度中检取与一个或者多个连接判断式匹配的RID。半连接的结果是与所述一个或者多个连接判断式匹配的所有事实表RID的列表。然后,对从所有半连接得到的RID进行取与运算(相交(intersect)),以产生最终的RID列表。然后,使用最终的RID列表来从事实表中检取行。利用传统的索引取与实施方案,在准备或者绑定阶段期间确定对半连接结果进行取与的顺序,并且该顺序在执行时保持固定。可能该顺序不是最优的,或者,一个或多个半连接提供差的可选性。例如,下面的查询(1)是具有三个维度表D1、D2、D3和一个事实表F的星型查询。当维度表D1中的列C1的值等于事实表中的列C1的值、当维度表D2中的列C2的值等于事实表中的列C2的值、以及当维度表D3中的列C3的值等于事实表中的列C3的值时,查询(1)从事实表F中的一行的列C1中选择一个值。因此,对于查询(1)来说,如在WHERE子句(clause)中所指定的,每个维度表都与事实表相连接。查询(1)SELECT F.C1FROM D1,D2,D3,FWHERE D1.C1=F.C1 ANDD2.C2=F.C2 ANDD3.C3=F.C3;RDBMS的查询优化器可以确定下面的在准备或绑定阶段期间的半连接取与运算顺序,而且该运算顺序在执行时依次地执行。图1例示了表示该示例的半连接取与顺序(1)的结构100。顺序(1)1)R1=D1->F(结果R1是对维度表D1与事实表F进行半连接的结果)2)R2=D2->F(结果R2是对维度表D2与事实表F进行半连接的结果)3)R3=R1 AND R2(结果R3是结果R1和结果R2的取与运算的结果)4)R4=D3->F(结果R4是对维度表D3与事实表F进行半连接的结果)5)R5=R3 AND R4(结果R5是结果R3和结果R4的取与运算的结果)在执行时,由于其差的可选性,所以结果R1可能产生一个非常大的结果集合。因此,首先处理维度表D3与事实表F的半连接、其次处理维度表D2与事实表F的半连接将会提供更好的性能(由于在该示例中,与对结果R1和结果R2进行取与运算的RID列表相比,对结果R2和结果R4进行取与运算会带来更小的中间RID列表)。此外,在获得机会来完成对结果R2和结果R4的计算之前,可能结果R1的计算用尽了用于存储RID的存储器。因此,本领域中需要一种技术,来改善具有半连接的查询的处理。
技术实现思路
本专利技术提供了一种用于处理包括多个半连接的查询的方法、计算机程序产品和系统。在执行时,从在当前半连接执行周期中执行的多个半连接中选择下一个半连接。确定一个报告阈值,该阈值表明了针对所确定的半连接而检取到的记录标识符的数量。执行所选择的半连接,直到检取到所确定数目个记录标识符为止。附图说明现在参照附图进行描述,其中在整个附图中相似的附图标记表示相应的部分。图1例示了表示该示例的半连接取与顺序的结构100。图2例示了根据某些实施例的计算设备的细节。图3例示了根据某些实施例执行的逻辑。图4例示了根据某些另选实施例执行的逻辑。图5例示了根据某些实施例的数据存储管理器的细节。图6例示了根据某些实施例的可以使用的计算机系统的结构。具体实施例方式在下面的描述中,参照附图,其中附图构成了本专利技术的一部分并且例示了本专利技术的若干个实施例。应当理解还可以利用其他的实施例,并且在不脱离本专利技术范围的情况下可以进行结构和操作上的改变。当使用索引来检取数据(例如RID)时,实施例改进了半连接取与和取或的性能。实施例取消了预先确定的固定的取与或者取或的顺序,并且引入了具有运行时间优化的动态取与或者取或。利用某些实施例,以动态的方式执行半连接,其中在检取到给定数量的RID之前一直处理各个半连接,并且相应的半连接一被完成,就对最多的被选择的半连接取与或取或。同样,动态地确定要为各个半连接检取的RID的数量以及半连接的执行顺序。实施例提供对差可选性的半连接的早期终止,因此,如果累积的可选性足够好以致于对剩余的半连接取与或者取或不会提供更好的可选性,则初期就终止所有取与或者取或操作。换句话说,当存在足够少量的RID集合,以致于最好终止所有的取与或者取或本文档来自技高网
...

【技术保护点】
一种用于处理含有多个半连接的查询的由计算机实现的方法,包括:    在执行时,    从在当前半连接执行周期中执行的所述半连接中选择下一个半连接;    确定报告阈值,所述报告阈值表明了针对所确定的半连接要检取的记录标识符的数目;    执行所选的半连接,直到检取到所确定数目个记录标识符为止。

【技术特征摘要】
US 2005-9-9 11/222,8861.一种用于处理含有多个半连接的查询的由计算机实现的方法,包括在执行时,从在当前半连接执行周期中执行的所述半连接中选择下一个半连接;确定报告阈值,所述报告阈值表明了针对所确定的半连接要检取的记录标识符的数目;执行所选的半连接,直到检取到所确定数目个记录标识符为止。2.根据权利要求1的方法,其中所述报告阈值对于所述半连接中的每一个都是相同的报告阈值。3.根据权利要求1的方法,其中所述报告阈值对于所述半连接中的两个或者更多个是不同的。4.根据权利要求1的方法,其中针对半连接的所述报告阈值至少两个周期就要变化。5.根据权利要求1的方法,还包括确定已完成至少两个半连接;以及对来自所述至少两个半连接的结果进行组合。6.根据权利要求1的方法,还包括确定是否要终止所述半连接中的任何一个;以及终止任何确定的半连接。7.根据权利要求6的方法,其中确定未完全执行的所有半连接要被终止,并且终止这些半连接。8.根据权利要求1的方法,还包括确定是否要暂停半连接中的任何一个;以及暂停任何确定的半连接。9.根据权利要求1的方法,其中所选的半连接包括对于当前周期先前没有终止或者暂停的半连接。10.一种计算机程序产品,包括含有计算机可读程序的计算机可用介质,其中所述计算...

【专利技术属性】
技术研发人员:傅毓勤林棻玲安德列弗德罗维奇卢里耶特伦斯帕特里克布尔塞尔过阳一夏立
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1