对列进行自动重新排序以减少对齐陷阱的制作方法

文档序号:6478973阅读:144来源:国知局
专利名称:对列进行自动重新排序以减少对齐陷阱的制作方法
技术领域
本申请总体上涉及计算机和软件系统。更特别地,本申请涉及数据库系统。
背景技术
商业智能(Bi)数据库处理驻留于大规模并行处理(MPP)系统内的许多盘上的大 量数据。为BI数据库存储的数据量正以显著的速率增长,并且BI数据库需要扫描越来越 多的数据。表数据被分割于许多盘上以实现表数据的并行扫描以及过滤。此外,随着数据 的增加,添加了更多的盘,因此需要越来越快的扫描速率。


图1是示出使用对齐缓冲器来处理对齐陷阱(alignment trap)的传统方法的流 程图。图2是描绘根据本发明的实施例的执行自动化重新排序以用于对齐陷阱减少的 方法的流程图。图3示出指定数据库的数据行内的字段(列)的逻辑排序的示例创建表语句。图4示出根据本发明的实施例的对字段进行重新排序以物理存储在盘上。图5A是示出根据本发明的实施例的接收创建表语句和使用确定性方法以生成用 于将数据存储在盘上的物理顺序的流程图。图5B是示出根据本发明的实施例的接收数据库查询和重新计算用来从盘访问数 据的物理顺序的流程图。图5C示出指示根据本发明的实施例所测试的各种方案的路径改进的实验结果。图6是描绘可以被配置成执行根据本发明的实施例的方法的示例计算机装置的 示意图。
具体实施例方式需要在商业智能(Bi)数据库中处理的数据量正以显著的速率增长。因而,以高效 的方式扫描大量数据并且过滤出需要的数据行是BI数据库所面对的主要挑战。对数据扫 描的任何改进可以显著地改进系统中所有查询的总吞吐量。可能的话,数据库通常将扫描谓词向下推到最低层,以减少在系统中到处复制最 终被丢弃的大量数据。为了高效地评估关于驻留于数据访问管理器层内的数据的扫描谓 词,列值通常必须在它们的正确的字节边界上。不在它们的正确的字节边界上的数字列值导致所谓的对齐陷阱(对齐安排 (fix-up))。在对齐陷阱中,在评估之前需要将数据复制到对齐缓冲器。因此,对齐陷阱导致性能损失。构成过滤谓词的列越多,成本就越高,因为每个列被独立地处理。在BI情形中,存在具有许多列的许多表,使得用户进行的正确对齐将是非常耗时 的过程。理论上,BI顾客能够定义他们的表,以使得尽可能地使列正确对齐,但是这假定顾 客在某种程度上知道底层布局以及每种列类型所需的正确对齐。此外,这假设可以依赖于 顾客来为每个所创建的表完成这样的对齐努力,因为对于每个数据库来说表定义很可能不 同。此外,如果在表中存在可变长度的字段,则用户不能确保每个数据行将在对齐的边界上 开始,因为仅该值中的实际数目的字节被存储而不是最大长度。本申请涉及用于使列对齐到正确的字节边界的技术。用于使列对齐到正确的字节 边界的简单技术将是以在创建表语句中所指定的顺序对齐数据记录内的所有字段。然而, 这将隐含地需要在不同数据类型的列值之间添加填充(padding),并且因此将需要附加的 盘空间来允许表数据扩展和增长,从而容纳额外的填充。另一种技术是具有用于所有字段的偏移阵列。该技术将所有字段保持处于表定义 中所指定的相同逻辑顺序。该技术需要配置硬件或固件来检测未对齐的数据并且将其正确 地对齐,或者配置数据访问管理器层来检测该未对齐并且校正它。用于使列对齐到正确字节边界的另一种技术是将记录的所有固定长度字段紧密 地打包(pack)在一起。随后,在扫描谓词评估期间,可以检查指针来查看它是否在字段 的正确字节边界上。如果该指针不在字段的正确字节边界上,则将该数据复制到侧缓冲器 (side buffer)以用于评估。在图1中给出了该技术的流程图。如图1所示,做出关于列值 是否被对齐到正确的字节边界的确定102。如果是,则列值可以被评估106。如果否,则需 要附加步骤,其中将列值复制104到对齐缓冲器(侧缓冲器)。此后,可以评估106(现在在 对齐缓冲器中的)列值。必须在每个行中针对被评估的每个列进行确定102。本申请公开了一种用于使列对齐到正确的字节边界的新技术,在该新技术中以有 利的方式重新排序在表定义中所指定的列,以便减少对齐陷阱的出现。换句话说,为了改进 扫描谓词评估,基于每个字段的正确字节对齐来重新排序在创建表语句内所指定的列的逻 辑顺序并且然后以该物理顺序将其存储在盘上的数据记录内。在该表的创建期间以及当插 入、更新、删除和扫描记录时以自动化方式执行字段的这种重新排序。因此,该技术改进了 列到正确的字节边界的对齐而无需顾客手动执行这样的任务并且无需在列值之间进行附 加的隐含填充。图2是描绘根据本发明的实施例的执行自动化重新排序以用于对齐陷阱减少的 方法的流程图。该方法确定要在计算机可读介质上(即盘上)存储的物理排序。在接收到 创建表语句(见框201)之后执行该方法,所述创建表语句为数据库表指定或定义字段的逻 辑顺序。按照常规,列的物理顺序通常与在创建表语句中所指定的逻辑顺 序相同。相反,本 申请公开了列的自动化重新排序以使得存储在盘上的列的物理顺序可能与创建表语句中 所指定的逻辑顺序显著不同。在图2中示出的步骤被用于对列(字段)进行重新排序以便 确定在盘上存储的物理顺序以及数据行内的每个字段的固定偏移。要求字节对齐的固定长度字段是需要在评估之前对齐到正确的字节边界的字段 (见上面关于图1的讨论)。例如,在正在讨论的典型数据库系统中,数字字段和整数字段 是要求字节对齐的固定长度字段。要求字节对齐的固定长度字段要求对齐到2N(2的N次幂)字节边界,其中N是整数。在第一步骤206中,选择具有最大(或者并列最大)字节对齐要求(即具有最大 的N)的固定长度字段。根据下一步骤208,按物理排序接着定位(打包)所选择的字段。随后,做出关于是否剩余(尚未选择)具有到2N字节边界的字节对齐要求的任何 字段的确定210。如果存在剩余(尚未选择)的一个或多个这样的字段,则按照步骤212选 择这些剩余字段中的一个,并且该方法返回以便根据步骤208按物理排序接着定位(打包) 所选择的字段。另一方面,如果确定210不再存在剩余的(尚未选择的)具有到2N字节边界的字 节对齐要求的字段,则可以做出关于N是否为零的进一步确定214。如果N不为零,则在步 骤216中将N递减一,并且该方法返回步骤210以便基于递减的N值来确定是否剩余具有 到2n字节边界的字节对齐要求的任何字段。另一方面,如果确定214N是零,则不再剩余具有字节对齐要求的字段,所以该方 法继续前进并且根据步骤220按它们的(如在创建表语句中所指定的)逻辑顺序选择可变 长度字段且按物理排序接着定位它们。在随后的步骤230中,确定所需的管理空间。在每个数据记录开始处的该管理空 间将被零填充,并且然后当创建数据记录时添加适合的报头信息。将(使用零填充)向外 扩展该管理空间以确保第一字段的正确对齐。此后,按照步骤240,该方法经过(go through)重新排序的固定字段并且为它们 中的每一个分配偏移。这些重新排序的固定长度字段将全部被打包在一起,因为重新排序 从最大的对齐字段开始。然后,按照步骤250,该方法经过可变长度字段并且为它们中的每一个分配在所有 固定长度字段偏移之后获得的(pick up)偏移。最后,按照步骤260,所有字段的总长度被 扩展成适当大小,其中对于所述可变长度列采取最大的大小。注意,当插入或更新记录时将在第一固定长度字段之前以及在数据记录末端处添 加填充。图3中示出了示例创建表语句。在图3的示例语句中,定义被命名为⑶STOMER 的表。按逻辑顺序将该表的字段或列定义为custKey、name、address、nationKey、phone、 acctBal、mktSeg 禾口 comment。创建表语句还为每个列定义了字段的类型。如图3的示例所示CUStKey字段是 整数字段;name列是长度可以高达25个字节的可变字符字段;address列是长度可以高达 40个字节的可变字符字段;nationKey字段是整数字段;phone列是长度为15个字节的固 定字符字段;acctBal列是存储在8个字节中的宽度为12并且有2个小数位的数字字段; mktSeg列是长度为10个字节的固定字符字段;以及comment列是长度高达117个字节的 可变字符字段。还可以在创建表语句中定义其他特性,包括该表的主关键字、默认值、以及 字段是否是可丢弃的。当然,为了讨论的目的图3仅示出了一个示例创建表语句。图4示出了给定图3的示例创建表语句并且使用上面关于图2所描述的重新排序 方法的物理存储在盘上的字段的顺序。图4的顶部部分示出了重新排序之后用于物理存储 的列,并且底部部分示出该记录中的对应字节计数。 如图4所示,重新排序的记录中的开头列是按照图2的步骤230确定的空间中的在记录开始处的固定大小开销或者管理字节。在该示例中,FF是2字节字段,其值指示到 数据记录中的第一固定长度字段的偏移或零(如果没有的话),且BO是2字节字段,其值指 示到空位图(在下面讨论)的偏移(如果存在空位图的话)或者零(如果没有的话)。 可变长度字段仅存储所使用的字节而不是最大数目的字节。因此,必须存储每个 可变长度字段的实际长度。在这种情况下,邻近每个可变长度字段的值并且在其之前存储 长度。VOk字段指示到可变长度字段的偏移。在这种情况下,VO1是指示到第一可变长度字 段的偏移的2字节字段,VO2是指示到第二可变长度字段的偏移的2字节字段,且VO3是指 示到第三可变长度字段的偏移的2字节字段。Bitmap (位图)字段是存储上面提到的空位图的4字节字段。空位图包含每个字 段的空状态,其中每个可空(nullable)字段具有一个比特。在其他系统中,给定列值的空 指示符通常在该列值之前。这将去掉(throw off)列值的正确字节排序(无论该空指示符 是一个字节还是两个字节)。因此,根据本发明的实施例,给定列的空指示符被存储在空位 图字段中,其与实际列值分开存储。注意,在bitmap字段之后,III指示在管理字节之后要被打包的填充(零填充)。 在该特定情况下,存在两个字节的填充以使得在字节16(8字节边界)上开始下一字段。这 里所需的填充量根据表中固定长度字段的边界对齐要求而不同。在填充之后紧接着定位第一要求字节对齐的固定长度字段。在这种情况下,第一 要求字节对齐的固定长度字段是8字节(N = 3)acctBal数字字段,acctBal数字字段被首 先选择,因为按照图2的步骤206它是最长的固定长度字段。因为不存在具有8字节边界 对齐要求的其他固定长度字段,所以按照图2的步骤216将N从3递减到2。在第一要求字节对齐的固定长度字段之后紧接着定位后续的要求字节对齐的固 定长度字段。在这种情况下,第二要求字节对齐的固定长度字段是4字节(N=2)CUStKey 整数字段,并且第三固定长度字段是4字节(同样N = 2)nati0nKey整数字段。不存在具 有4字节边界对齐要求的其他固定长度字段。此外,不存在具有2字节(N = 1)边界对齐 要求的固定长度字段。接着,选择具有1字节(N = 0)边界对齐要求的固定长度字段并且按该排序来定 位它。例如,字符字段是具有1字节边界对齐要求的固定长度字段。在这种情况下,下一列 是phone字段,其是15字节长的字符字段并且在字节号32开始,并且下面的列是mktSeg 字段,其是10字节长的字符字段并且在字节号47开始。此后,根据图2的步骤220,按它们的逻辑顺序选择可变长度字段并且按该排序来 对其进行定位。在该实施例中,每个可变长度字段(在图4中由I I表示)的第一部分是指 示存储在该字段中的值的实际长度的两个字节。此后,放置该可变长度值的实际字节。在这种情况下,第一可变长度字段是name字段并且在字节号57开始。之前讨论了 在VO1字段的值中指示了用于第一可变长度字段到字节号57的这一偏移。如前面所提到的 那样,该字段的前两个字节指示实际长度,并且剩余的字节是存储在该字段中的实际数据。 类似地,第二可变长度字段是在字节V2开始的address字段(所述字节V2根据在前的第一 可变长度字段的长度而变化),且第三可变长度字段是在字节V3开始的comment字段,(所 述字节V3根据在前的第一和第二可变长度字段的长度而变化)。注意,在存储记录时,如果必要的话将(由///表示的)填充字节添加到该记录的末端,以便下一数据记录以正确的对齐开始。在该实施方式中,可以存在1到3个这样的末 端填充字节,以使得下一记录在4字节边界上开始。每个记录所使用的填充字节的数目被 存储为第一固定偏移FF的一部分,即存储在2个高比特中。 图5A是示出根据本发明的实施例的接收创建表语句和使用确定性方法以生成用 于将数据存储在盘上的物理顺序的流程图。如所示出的那样,从用户接收创建表语句(框 502)。该创建表语句定义数据库表的列(字段)的逻辑顺序。此后,使用上面讨论的确定 性算法,创建不同于由所述创建表语句所指定的逻辑顺序的物理顺序(框504)。当将数据 记录存储在盘上时使用所述物理顺序(框506)。有利地,从逻辑顺序到物理顺序的重新排序是确定性的。因此,关于实际物理排序 的信息不一定需要被保存并且可以在查询计划生成期间被重新计算。图5B是示出根据本 发明的实施例的接收数据库查询和重新计算用来从盘访问数据的物理顺序的流程图。如所 示,接收数据库查询(框512)。作为响应,生成查询计划(框514)。根据本发明的实施例, 作为查询计划生成的一部分,进行物理顺序的重新计算(框516)。然后可以保存到每个列 值的偏移(框518)。然后可以在查询执行期间使用到该列值的偏移(框520)。图5C示出指示根据本发明的实施例所测试的各种方案的路径改进的实验结果。 每个行(acXio032_b6_m、dwp2xl_b6_s等等)指示特定方案(即特定数据库表定义)。该表示出没有对齐(未对齐的)以及具有按照本申请的自动化对齐(对齐的)的 每小时查询(QPH)。较高的QPH比较低的QPH要好。还示出了 QPH中的百分比增加(%变 化)。如所示,在按照本申请的自动化对齐的情况下,QPH增加范围超过8%。该表还示出了没有对齐(未对.齐的)以及具有按照本申请的自动化对齐(对齐 的)的每个查询所使用的CPU秒(每个查询的CPU秒)。较低的每个查询的CPU秒比较高 的每个查询的CPU秒要好。还示出了每个查询的CPU秒的百分比减小(%变化)。如所示, 在按照本申请的自动化对齐的情况下,百分比减小范围超过。图6是描绘可以被配置成执行根据本发明的实施例的方法的示例计算机装置的 示意图。在该示例中,该计算机装置包括大规模并行处理系统。在一个实施例中,该计算机 装置可以被配置成具有紧密集成到对称多处理(SMP)节点606中的多个处理器602。每个 SMP节点606中的处理器可以被连接到存储器604的公共部分。互连网络606连接SMP节 点606。可以在可替换实施例中使用计算机装置的其他体系结构。根据本发明的实施例,上面所讨论的步骤被实施为存储在计算机可读介质上的或 者存储在计算机可读存储器中的处理器可执行指令。例如,这些处理器可执行指令可以例 如在比如图6所描绘的计算机装置上运行。在上面的描述中,给出了许多特定细节以提供对本发明实施例的完全理解。然而, 上面对所说明的本发明实施例的描述不打算是穷举的或者将本发明限制成所公开的确切 形式。相关领域的技术人员将会认识到可以在没有一个或多个特定细节的情况下或者利用 其他方法、部件等等实践本发明。在其他情况中,为了避免使本发明的各方面晦涩难懂,没 有详细示出或者描述公知的结构或操作。尽管为了说明的目的而在本文中描述了本发明的 特定实施例和本发明的示例,但是如相关领域技术人员将会认识到的那样,在本发明的范 围内各种等同的修改是可能的。根据上面的详细描述可以对本发明做出这些修改。在下面的权利要求中所使用的术语不应该被解释为将本发明限制成在说明书和权利要求中所公开的特定实施例。 相反, 本发明的范围由下面的权利要求确定,其中根据所建立的权利要求阐释的原则来解释所述 权利要求。
权利要求
一种用于使列值对齐到正确的字节边界以在并行处理数据库系统中进行快速扫描的自动化方法,所述方法包括接收具有字段的逻辑顺序的表定义;以及重新排序所述字段以创建字段的物理顺序,其中所述字段的物理顺序使具有相同字节对齐要求的固定长度字段按从最大大小到最小大小的降序彼此邻近定位,并且其中所述物理顺序中的第一固定长度被对齐在正确的字节边界上。
2.根据权利要求1所述的方法,其中字节对齐要求需要将字段的开始对齐到2N字节边 界,其中N是整数。
3.根据权利要求1所述的方法,其中管理字段被定位在记录的开始处,并且在存储记 录时,对其添加零填充以对齐所述第一固定长度字段。
4.根据权利要求1所述的方法,其中在具有字节对齐要求的最后的固定长度字段之后 定位可变长度字段。
5.根据权利要求5所述的方法,其中在存储记录时,如果需要的话,在最后的可变长度 字段之后添加零填充,以便使下一记录对齐在正确的字节边界上。
6.一种用于存储计算机可读指令的计算机可读介质,所述计算机可读指令被配置成使 列值对齐到正确的字节边界以在并行处理数据库系统中进行快速扫描,所述介质包括被配置成接收具有字段的逻辑顺序的表定义的计算机可读指令;以及被配置成重新排序所述字段以创建字段的物理顺序的计算机可读指令,其中所述字段的物理顺序使具有相同字节对齐要求的固定长度字段按从最大大小到 最小大小的降序彼此邻近定位,并且其中所述物理顺序中的第一固定长度字段被对齐在正 确的字节边界上。
7.根据权利要求6所述的介质,其中字节对齐要求需要将字段的开始对齐到2N字节边 界,其中N是整数。
8.根据权利要求6所述的介质,其中管理字段被定位在记录的开始处,并且在存储记 录时,对其添加零填充以对齐所述第一固定长度字段。
9.根据权利要求6所述的介质,其中在具有字节对齐要求的最后的固定长度字段之后 定位可变长度字段。
10.根据权利要求6所述的介质,其中在存储记录时,如果需要的话,在最后的可变长 度字段之后添加零填充,以便使下一记录对齐在正确的字节边界上。
11.一种被配置成使列值对齐到正确的字节边界以在并行处理数据库系统中进行快速 扫描的计算机装置,所述装置包括用于执行计算机可读指令的多个处理器;以及被配置成存储所述计算机可读指令和数据的存储器,其中所述计算机可读指令被配置成接收具有字段的逻辑顺序的表定义并且重新排序 所述字段以创建字段的物理顺序,此外所述字段的物理顺序使具有相同字节对齐要求的固定长度字段按从最大大小到 最小大小的降序彼此邻近定位,并且其中所述物理顺序中的第一固定长度字段被对齐在正 确的字节边界上。
12.根据权利要求11所述的计算机装置,其中字节对齐要求需要将字段的开始对齐到 2N字节边界,其中N是整数。
13.根据权利要求11所述的计算机装置,其中管理字段被定位在记录的开始处,并且 在存储记录时,对其添加零填充以对齐所述第一固定长度字段。
14.根据权利要求11所述的计算机装置,其中在具有字节对齐要求的最后的固定长度 字段之后定位可变长度字段。
15.根据权利要求14所述的计算机装置,其中在存储记录时,如果需要的话,在最后的 可变长度字段之后添加零填充,以便使下一记录对齐在正确的字节边界上。
全文摘要
一种用于使列值对齐到正确的字节边界以在并行处理数据库系统中进行快速扫描的自动化方法。接收(201)具有字段的逻辑顺序的表定义。重新排序(206-220)所述字段以创建字段的物理顺序。字段的物理顺序使具有相同字节对齐要求的固定长度字段按从最大大小到最小大小的降序彼此邻近定位,并且其中所述物理顺序中的第一固定长度字段被对齐在正确的字节边界上。还公开了其他实施例、方面和特征。
文档编号G06F9/44GK101868782SQ200880116980
公开日2010年10月20日 申请日期2008年11月13日 优先权日2007年11月21日
发明者A·沙马, B·S·维克里, V·苏布拉马尼安 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1