片上执行查询或应避开特定碎片。提示还可表明查询需要跨多个碎片的执行,向人员建议需要查询的重新制定。
[0079]图10描绘这种方法的实施方案。虽然被描绘为操作序列,但是本领域一般技术人员将了解,操作顺序可能改变且可添加、修改或移除操作。
[0080]在操作1000中,基于碎片的系统接收并且处理来自客户端应用程序的查询。随后在操作1002中产生全局优化执行计划。但是,取代直接促使碎片采用查询,系统可能将有关全局优化执行计划的信息发送给工程人员(操作1004)。信息可包括足以允许工程师对应用程序进行期望修改的执行计划的描述或说明。它可例如包括优化执行计划的指令集和相关成本的描述。
[0081]在操作1006中,系统接收到根据操作1004中提供的信息修改的查询。随后针对经修改查询产生新的查询计划(操作1008)。由于对查询进行的修改,以与期望的全局优化计划一致的方式产生新的执行计划。为了进一步说明,即使未修改计划在其被查询优化器处理时导致索引扫描,提示仍可指示全局优化执行计划将使用全表扫描而非索引扫描。经修改查询包括向查询优化器指示全表扫描是优选的指令。因此,查询优化器使用全表扫描产生执行计划且所得查询与期望的全局优化计划一致。在新计划产生后,可使用所述计划执行查询(操作1010)。
[0082]为了说明的目的,本文中描述的一些实施方案涉及具有水平分区数据的数据管理系统。但是,本领域技术人员将了解,本公开的方面可应用于未涉及传统数据库的系统。实例包括但不限于状态机和工作流程引擎。图11描绘可应用本文中描述的全局优化技术的实施方案。第一计算节点和第二计算节点1100能够接收并且处理共同命令1120。命令可为任意类型,前提是它能够在域中的多个计算节点上执行且可分解为总成本可被估计的步骤序列。状态机和工作流程引擎是处理符合这些标准的命令的系统的实例。两者由具有相关转换的一组状态组成。执行查询包括从当前状态至已执行命令的状态的一个转换集。能够达到命令完成状态的任意碎片能够处理命令且可基于达到所述状态所需的所有转换的估计成本估计这样做的成本。执行引擎可通过遵从例如由查询优化器选择的优化或其它优选计划促使期望的转换集发生而执行查询。每个碎片管理的数据可管理经分区数据集的分区,使得碎片的域共同管理整个集合。分区可能重叠,使得一些或甚至所有数据在碎片之间重复。数据集可包括任意类型的数据,包括但不限于表、矢量、阵列、曲线图等。
[0083]通过本地优化器1102确定步骤序列和预测成本。比较模块1130参考诸如执行统计数据、相对软件性能特性和每个系统执行共同命令的相对频率的因素而比较两个计划的预测成本。比较结果是优选的执行计划1140,其可如优选执行计划1140与执行引擎1104之间的连接箭头所描绘由执行引擎1104利用。也可采用诸如结合供应提示给应用程序或技术支持人员使用优选计划的其它各种实施方案。
[0084]先前段落中描述的每个过程、方法和算法可体现在由一个或多个计算机或计算机处理器执行的代码模块中且完全或部分通过所述代码模块而自动化。代码模块可存储在任意类型的非暂时性计算机可读介质或计算机存储装置上,诸如硬盘驱动器、固态存储器、光盘和/或类似物。过程和算法可部分或完全实施在专用电路中。所公开过程和过程步骤的结果可永久或以其它方式存储在任意类型的非暂时性计算机存储器中,诸如,例如易失性或非易失性存储器。
[0085]此外,可参考下列条款了解一个或多个上述实施方案:
[0086]1.一种系统,其包括:
[0087]第一计算节点,其被配置来操作第一执行引擎,所述第一执行引擎包括经分区数据集的第一分区;
[0088]所述第一计算节点被配置来操作第一查询优化器,所述第一查询优化器可操作以确定在所述第一执行引擎上执行查询的第一计划,所述查询涉及所述经分区数据集;
[0089]第二计算节点,其被配置来操作第二执行引擎,所述第二执行引擎包括所述经分区数据集的第二分区;
[0090]所述第二计算节点被配置来操作第二查询优化器,所述第二查询优化器可操作以确定在所述第二执行引擎上执行所述查询的第二计划;和
[0091]优化器,其被配置来确定是否应将执行所述查询的所述第一计划或执行所述查询的所述第二计划用于在所述第一执行引擎和所述第二执行引擎上执行所述查询。
[0092]2.根据条款I所述的系统,其中所述执行引擎是数据库。
[0093]3.根据条款I所述的系统,其中所述优化器被配置来通过比较执行执行查询的第一计划的第一成本与使用执行查询的第二计划的第二成本而确定是否应使用执行所述查询的所述第一计划或所述第二计划。
[0094]4.根据条款3所述的系统,其中所述优化器被配置来通过基于所述第一计算节点和所述第二计算节点的特性调整所述第一成本和所述第二成本而确定是否应使用执行查询的所述第一计划或所述第二计划。
[0095]5.根据条款I所述的系统,其中所述第二节点被配置来接收指示执行所述查询的所述第一计划的信息。
[0096]6.根据条款I所述的系统,其中所述第二计算节点被配置来基于所述优化器的所述确定而使用执行所述查询的所述第一计划执行所述查询。
[0097]7.根据条款I所述的系统,其中所述查询是参数化查询。
[0098]8.根据条款I所述的系统,其中所述优化器被配置来基于从所述查询的先前执行和所收集的性能度量确定的统计数据中的一个或多个确定是否应将所述第一执行计划或所述第二执行计划用于执行所述查询。
[0099]9.一种用于执行数据库查询的方法,其包括:
[0100]接收指示执行用于在第一计算节点上执行所述数据库查询的第一指令集的第一估计成本的信息,所述第一指令集以由所述第一计算节点确定的方式执行所述数据库查询;
[0101]接收指示执行用于在第二计算节点上执行所述数据库查询的第二指令集的第二估计成本的信息,所述第二指令集以由所述第二计算节点确定的方式执行所述数据库查询;和
[0102]通过比较所述第一估计成本和所述第二估计成本确定是否将所述第一指令集或所述第二指令集用于在所述第一计算节点和所述第二计算节点中的至少一个上执行所述数据库查询。
[0103]10.根据条款9所述的方法,其中比较所述第一估计成本和所述第二估计成本还包括针对所述第一计算节点和所述第二计算节点的性能特性进行调整。
[0104]11.根据条款10所述的方法,其中所述性能特性包括下列一个或多个项目:处理器速度、存储装置速度、可用内存、工作集、CPU利用率、平均磁盘队列深度、缓存一致性测量、用户会话的平均数和事件日志项。
[0105]12.根据条款9所述的方法,其中比较所述第一估计成本和所述第二估计成本包括针对由所述第一计算节点和所述第二计算节点管理的数据的特性进行调整。
[0106]13.根据条款12所述的方法,其中所述数据特性包括数据行数和数据重复频率的一个或多个。
[0107]14.根据条款9所述的方法,其中比较所述第一估计成本和所述第二估计成本包括基于所述第一计算节点或所述第二计算节点的特性相对于所述至少一个指令的所述估计成本调整所述第一指令集或所述第二指令集中的至少一个指令的估计成本。
[0108]15.根据条款9所述的方法,其中所述第一计算节点向所述第二计算节点传输指示执行所述第一指令集的估计成本的信息。
[0109]16.根据条款9所述的方法,其中由所述第一计算节点或所述第二计算节点中的至少一个执行确定是否使用所述第一指令集或所述第二指令集。
[0110]17.根据条款9所述的方法,其中所述查询涉及分区表且查询优化器确定所述第一指令集。
[0111]18.根据条款9所述的方法,其中所述成本依据下列各项中的至少一个:计算能力、CPU速度、内存容量、缓存容量、存储装置读取性能、存储装置写入性能、存储装置写入性能、存储装置寻道时间、行数和数据复制。
[0112]19.根据条款9所述的方法,其中在触发事件之后执行确定是否使用所述第一指令集或所述第二指令集。
[0113]20.根据条款19所述的方法,其中所述触发事件包括下列各项中的一个或多个:周期事件、硬件组件的变更、硬件配置的变更和存储在系统上的数据的变更。
[0114]21.一种非暂时性计算机可读存储介质,其具有在其上存储的计算机指令,所述计算机指令在由计算装置执行时,促使所述计算装置至少:
[0115]接收执行查询的第一成本的估计,所述第一成本包括在第一计算节点中执行第一指令集的估计成本的确定;
[0116]估计执行所述查询的第二成本,所述第二估计成本包括在第二计算节点上执行第二指令集的估计成本的确定;
[0117]在针对所述第一计算节点和所述第二计算节点的相对特性调整后将所述第一成本与所述第二成本比较,且确定所述第一指令集优选用于在所述第一计算节点和所述第二计算节点上执行所述查询。
[0118]22.根据条款21所述的非暂时性计算机可读存储介质,其具有在其上存储的指令,所述指令在由计算装置执行时,促使所述计算装置至少:
[0119]将所述第一指令集与所述查询关联,使得所述查询,在所述第二计算节点上执行时使用所述第一指令集执行。
[0120]23.根据条款21所述的非暂时性计算机可读存储介质,其具有在其上存储的指令,所述指令在由计算装置执行时,促使所述装置至少:
[0121]将所述第一指令集与所述查询关联,使得所述查询在于第三计算节点上执行时使用所述第一指令集执行。
[0122]24.一种非暂时性计算机可读存储介质,其具有在其上存储的指令,所述指令在由计算装置执行时,促使所述计算装置至少:
[0123]从查询优化器获得用于在第一计算节