首页> 中国专利> 用于针对矢量化查询执行的自适应矢量大小选择的系统和方法

用于针对矢量化查询执行的自适应矢量大小选择的系统和方法

摘要

本发明提供了用于针对矢量化查询执行的自适应矢量大小选择的系统和方法实施例。所述自适应矢量大小选择在两个阶段中实施。在查询计划阶段中,由查询计划器针对查询估计合适的矢量大小。所述计划阶段包括分析查询计划树、将所述树分段成不同片段,以及为所述查询执行计划向每个片段分配初始矢量大小。在后续查询执行阶段中,执行引擎监测硬件性能指标,并根据所述监测到的硬件性能指标调整所述矢量大小。调整所述矢量大小包括尝试不同的矢量大小并观察相关处理器计数器以增大或减小所述矢量大小,其中根据所述处理器计数器增大所述矢量大小以提高硬件性能,并且当所述处理器计数器指示硬件性能降低时减小所述矢量大小。

著录项

  • 公开/公告号CN105122239A

    专利类型发明专利

  • 公开/公告日2015-12-02

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201480012872.8

  • 发明设计人 周庆庆;张国根;

    申请日2014-03-12

  • 分类号G06F17/30;

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 12:26:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-26

    授权

    授权

  • 2015-12-30

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140312

    实质审查的生效

  • 2015-12-02

    公开

    公开

说明书

相关申请案交叉申请

本发明要求2013年3月13日递交的发明名称为“用于针对矢量化查 询执行的自适应矢量大小选择的系统和方法(SystemandMethodfor AdaptiveVectorSizeSelectionforVectorizedQueryExecution)”的第 13/798,680号美国专利申请案的在先申请优先权,该在先申请的内容以引 入的方式并入本文本中,如全文再现一般。

技术领域

本发明总体上涉及数据库系统和方法,在具体实施例中,涉及一种用 于针对矢量化查询执行的自适应矢量大小选择的系统和方法。

背景技术

矢量化查询执行是对一些传统数据库所使用的当前行流水线执行引擎 的一项显著的性能改进。在传统的流水线执行引擎中,每个迭代器之间的 数据单元是一行,而矢量化查询执行则使用矢量。使用矢量作为数据单元 的一个益处在于将每行开销分摊至行矢量。矢量化查询执行的一个关键因 素是矢量长度或大小,过小和过大的大小都会损害性能。一般而言,矢量 大小越大,可以分摊的每行开销越多,从而使得性能更好。然而,较大大 小的矢量需要更多的内存来存储它,这可能导致缓存未命中并因此损害性 能。不存在针对矢量大小的唯一最佳设置,因为它还涉及到查询和硬件设 置。对于不同的查询和不同的硬件设置,最优长度可以是不同的。例如, 较大的L1缓存允许更大大小的矢量。需要一种根据软件和硬件需求选择 最优矢量大小以获得性能的方法。

发明内容

根据实施例,一种用于针对矢量化查询执行的自适应矢量大小选择的 方法包括:在查询计划时间期间在查询计划器模块处确定适于查询计划树 的矢量大小,在用于所述查询计划树的查询执行时间期间在查询执行引擎 处监测硬件性能指标,以及根据所述监测到的硬件性能指标调整所述矢量 大小。

根据另一实施例,一种用于针对矢量化查询执行的自适应矢量大小选 择的方法包括:在用于查询计划树的矢量化查询执行期间在查询执行引擎 处收集处理单元计数器;根据所述收集到的处理单元计数器修改用于处理 所述矢量化查询执行的矢量的矢量大小;以及在确定所述矢量化查询执行 的令人满意的性能或者所述矢量化查询执行超时时,确定所述修改后矢量 大小是否与在所述矢量化查询执行的开始时所使用的初始矢量大小明显不 同。所述方法还包括:在确定所述修改后矢量大小与所述初始矢量大小明 显不同时,向优化器发送所述修改后矢量大小以便执行类似于所述查询计 划树的后续查询计划树。

在又一实施例中,一种用于针对矢量化查询执行的自适应矢量大小选 择的装置包括处理器以及存储用于由所述处理器执行的程序的计算机可读 存储介质。所述程序包括用于执行以下操作的指令:在用于查询计划树的 矢量化查询执行期间在运行时间时收集处理器计数器;根据所述收集到的 处理器计数器修改用于处理所述矢量化查询执行的矢量的矢量大小;以及 在确定所述矢量化查询执行的令人满意的性能或者所述矢量化查询执行超 时时,确定所述修改后矢量大小是否与在所述矢量化查询执行的开始时所 使用的初始矢量大小明显不同。所述指令还包括:在确定所述修改后矢量 大小与所述初始矢量大小明显不同时,选择所述修改后矢量大小以开始执 行类似于所述查询计划树的后续查询计划树。

附图说明

为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描 述,其中:

图1示出用于查询分段和初始矢量大小设置的实施例方法;

图2示出计划分段的示例;

图3示出用于执行时间时自适应矢量大小选择的实施例方法;

图4为可以用于实施各种实施例的处理系统的方框图。

具体实施方式

下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发 明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具 体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的 范围。

提供了用于针对矢量化查询执行的自适应矢量大小选择的系统和方法 实施例。自适应矢量大小选择在两个阶段中实施。在查询计划阶段中,针 对查询估计合适的矢量大小,例如,通过查询计划器。计划阶段包括分析 查询计划树、将树分段成不同片段,以及为查询执行计划向每个片段分配 初始矢量大小,例如基于经验性公式。在后续查询执行阶段中,执行引擎 调整所估计的值以提高性能。在执行阶段中,利用计划阶段的所估计的矢 量大小开始查询计划执行。在最初的若干执行循环中,使用这些矢量用于 测试:通过尝试不同的矢量大小并观察相关处理器(或CPU)计数器来增 大或减小矢量大小,并因此实现最优大小。

在计划阶段中,计划器可以分析查询(执行)计划树,将树拆分成不 同片段,并基于经验公式向每个片段分配初始矢量大小。例如,当计划器 获得查询计划树时,计划器将计划树拆分成片段,其中片段之间的边界可 以由计划树中的任何相邻的非流水线迭代器决定。然后计划器决定用于每 个片段的最佳的或合适的矢量大小。

图1示出用于查询或计划分段和初始矢量大小设置的实施例方法 100。方法100在查询执行阶段之前的计划阶段中实施,并且可以包括生 成查询执行计划。在方框110处,矢量化计划器生成用于查询102的计划 树104。在判断方框120处,方法100(例如,计划器)确定查询是否是 相对短的查询。如果查询是短查询,那么方法100前进至方框125,在方 框125处使用默认矢量大小用于最终计划树108。这种对“短运行查询”的 检查是为了防止小查询上的回归。否则,方法100前进至方框130,在方 框130处实施查询计划分段以提供分段后计划树106。接下来,在方框 140处,基于反馈和/或经验性公式为计划树的每个片段计算出最佳的或最 优的矢量大小以提供最终计划树108。反馈可以包括先前针对类似的查询 计划、片段、硬件、或其组合确定并使用的矢量大小。

图2示出计划分段200的示例。计划可以在计划阶段期间进行分段, 例如作为方法100的一部分。计划由两个非流水线迭代器I3和I5根据下 表1拆分成四个片段。迭代器I5也是连接点,其中每个分支对应于不同片 段。表1示出可以针对用于查询执行的计划树使用的一些示例性迭代器的 一些特性。整数N表示矢量大小。对于属性“流水线式”,“无”表示相应的 迭代器在该迭代器可以输出之前可能不会消耗子迭代器的所有输出。流水 线式迭代器示例包括扫描、流聚集、过滤器、适配器和其它。非流水线式 迭代器示例包括哈希聚集和哈希连接(或哈希连接建立,如果哈希连接被 拆分成建立迭代器和探测迭代器的话)。图2中计划的四个片段包括片段 1(具有I1、I2和I5)、片段2(具有I1、I3和I5)、片段3(具有I4和 I5)、和片段4(具有I3和I4)。

表1.计划迭代器特性

迭代器 输入大小 输出大小 处理大小 其它开销 流水线式 I1 N N P1 0 I2 N N 0 O2 I3 N N P3 0 I4 N N 0 O4 I5 2*N N P5 O5

在实施例中,每个迭代器的内存占用率可以基于某一公式,诸如:

内存占用率(迭代器)=输入大小+输出大小+处理大小+开销。(1) 根据该公式,子迭代器的输出是当前迭代器的输入,因此迭代器的片段的 整体内存占用率可以是:

片段内存占用率(迭代器)= 输入大小+SUM(输出大小+处理大小+开销)。(2) 为了实现最佳的或最优的性能,最佳或最优的片段内存占用率值可以小于 L1缓存大小,如果可能的话。如果不是,那么该值可以与最小可能的缓 存级匹配。根据以上公式,可以确定初始矢量大小:最佳适合大小。矢量 大小可以是至少某一值(常数)以分摊每行开销的成本。因此,最终格式 可以如下:

最佳矢量大小=MAX(常数,最佳适合大小)。(3)

在以上公式(1)中,存在一些计划器估计的内存占用率,如哈希表 大小。如果哈希表大于所估计的大小,那么利用当前所估计的矢量大小的 查询执行可能最终颠簸缓存。因此,需要某种执行阶段反馈以在执行阶段 期间监测性能特性。

图3示出用于执行时间时自适应矢量大小选择的实施例方法300。方 法300在紧接计划阶段的执行阶段中实施,例如,在实施方法100之后。 方法300包括根据处理器或CPU执行时间反馈来调谐或调整例如在方法 100中(在计划阶段期间)选择的初始矢量大小。CPU建立计数器

(PMC)用于提供针对执行性能的反馈。可以存在可以为了该目的进行监 测的若干计数器(例如,数百个计数器)。例如,下表2示出可以监测的 计数器的某一选择。

表2.可以在执行阶段期间监测的CPU计数器

当矢量长度N对于执行查询过大时,预期会有更高的缓存未命中,但 更少的指令可能失效。当矢量长度N对于执行查询过小时,预期会有更少 的缓存未命中,但更多的指令可能失效。因此,针对矢量大小调谐采用的 规则是增大矢量大小直至观察到过量缓存未命中。为了减少缓存未命中, 如果缓存未命中可以减少,那么减小矢量大小。例如,用于增大或减小矢 量大小的步长单位可以设置为当前大小的10%。

在判断方框310处,方法300(例如,在计划执行期间)确定查询是 否是相对短的查询。如果查询是短查询,那么方法300前进至方框315, 在方框315处优化处理(或方法300)结束。这种对“短运行查询”的检查 是为了防止小查询上的回归。否则,方法300前进至方框320,在方框 320处收集用于若干矢量的CPU计数器。接着,在方框330处,基于所收 集的计数器状态修改矢量大小。该大小可以增大,除非计数器指示性能降 低(相比于先前收集的计数器状态)。如果性能降低,那么减小大小以提 高性能。在判断方框340处,方法300(基于所监测的计数器)确定性能 是否足够好,或者监视是否超时。方法300返回至方框320以继续监视计 数器,并相应地修改矢量大小,直至方框34中的任一条件得到满足。然 后,方法300前进至判断方框350,在判断方框350处方法300确定修改 后矢量大小是否与初始值(例如,来自计划阶段)明显不同。如果修改后 矢量大小与初始大小明显不同,那么方法300前进至方框360,在方框 360处将该信息(与修改后矢量大小一起)发送至优化器。否则,方法 300前进至方框315以结束优化处理。然后,优化器可以相应地调整矢量 大小,例如,以用于下一轮查询运行。因此,在后序的类似查询计划执行 中处理的矢量可以使用修改后矢量大小。

下面是用于执行时间时自适应矢量大小选择的实施例算法(例如,利 用C编程)。例如,该算法可以作为方法300的一部分实施。

图4为可用于实施各种实施例的处理系统400的方框图。例如,处理 系统400可以是网络组件的一部分或耦合至网络组件,网络组件诸如路由 器、服务器、或任何其它合适的网络组件或装置。特定设备可利用所有所 示的组件或所述组件的仅一子集,且设备之间的集成程度可能不同。此 外,设备可以包括部件的多个实例,例如多个处理单元、处理器、存储 器、发射器、接收器等。处理系统400可以包括配备一个或多个输入/输出 设备,例如扬声器、麦克风、鼠标、触摸屏、按键、键盘、打印机、显示 器等的处理单元401。处理单元401可包括中央处理器(CPU)410、存储 器420、大容量存储设备430、视频适配器440,以及连接到总线的I/O接 口460。所述总线可以为任何类型的若干总线架构中的一个或多个,包括 存储总线或者存储控制器、外设总线等等。

所述CPU410可包括任何类型的电子数据处理器。存储器420可包括 任意类型的系统存储器,例如静态随机存取存储器(SRAM)、动态随机 存取存储器(DRAM)、同步DRAM(SDRAM)、只读存储器(ROM) 或其组合等等。在实施例中,存储器420可包括在开机时使用的ROM以 及在执行程序时使用的存储程序和数据的DRAM。在实施例中,存储器 420是非瞬时的。大容量存储器设备430可包括任意类型的存储设备,其 用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总 线访问。大容量存储器设备430可包括如下项中的一种或多种:固态磁 盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。

视频适配器440以及I/O接口460提供接口以将外部输入以及输出设 备耦合到处理单元上。如图所示,输入输出设备的示例包括耦合至视频适 配器440的显示器490和耦合至I/O接口470的鼠标/键盘/打印机460的任 意组合。其它设备可以耦合至处理单元401,可以利用附加的或更少的接 口卡。举例来说,串行接口卡(未图示)可以用于为打印机提供串行接 口。

处理单元401还包括一个或多个网络接口450,网络接口450可包括 以太网电缆等有线链路,和/或到接入节点或者一个或多个网络480的无线 链路。网络接口450允许处理单元401通过网络480与远程单元通信。例 如,网络接口450可以通过一个或多个发射器/发射天线以及一个或多个接 收器/接收天线提供无线通信。在一个实施例中,处理单元401耦合到局域 网或广域网上以用于数据处理以及与远程设备通信,所述远程设备例如其 它处理单元、因特网、远程存储设施或其类似者。

虽然已参考说明性实施例描述了本发明,但此描述并不意图限制本发 明。所属领域的技术人员在参考该描述后,将会明白说明性实施例的各种 修改和组合,以及本发明其他实施例。因此,所附权利要求书意图涵盖任 何此类修改或实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号