CN110100241A - 一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 - Google Patents
一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 Download PDFInfo
- Publication number
- CN110100241A CN110100241A CN201780077377.9A CN201780077377A CN110100241A CN 110100241 A CN110100241 A CN 110100241A CN 201780077377 A CN201780077377 A CN 201780077377A CN 110100241 A CN110100241 A CN 110100241A
- Authority
- CN
- China
- Prior art keywords
- executive plan
- data base
- parallel
- base querying
- serial
- 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.)
- Pending
Links
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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
-
- 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/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Abstract
处理设备将数据库查询解析为树结构。此外,所述处理设备利用所述树结构为所述数据库查询编译串行执行计划和并行执行计划。所述处理设备还确定了用于执行所述数据库查询的资源量。所述处理设备基于所确定的资源量来选择所述串行执行计划和/或所述并行执行计划。为此,所述处理设备利用所选择的串行执行计划和/或并行执行计划来执行所述数据库查询。
Description
相关申请案
本发明要求2017年1月24日递交的发明名称为“一种用于编译串行和并行数据库查询执行计划的数据库系统和方法”的第15/414,560号美国非临时申请案的在先申请优先权,其又要求2016年12月16日递交的发明名称为“一种用于编译串行和并行数据库查询执行计划的数据库系统和方法”的第62/435,592号美国临时申请案的在先申请优先权,这两份专利申请案的全部内容以引入的方式并入本文中。
技术领域
本发明涉及数据库系统,更具体地,涉及编译和执行查询执行计划。
背景技术
数据库系统通常先建立用于处理数据库查询的数据库查询执行计划,再处理所述数据库查询,以检索所请求的数据。此类执行计划通常在没有任何可用于执行所述查询执行计划的处理资源的先验知识的情况下进行编译。通过在不考虑资源可用性的情况下编译此类查询执行计划,此类查询执行计划通常呈现效率低和/或有效性不足的问题。这是因为此类静态查询执行计划可能不一定适应将执行相同计划的节点处的特定资源可用性。
发明内容
本发明提供了一种用于编译串行和并行数据库查询执行计划的装置、方法和非瞬时性计算机可读介质。
本发明提供了一种用于编译串行和并行数据库查询执行计划的装置,包括包含指令的非瞬时性存储器以及与所述存储器通信的一个或多个处理器。所述一个或多个处理器执行所述指令以将数据库查询解析为树结构。此外,利用所述树结构为所述数据库查询编译串行执行计划和并行执行计划。确定用于执行所述数据库查询的资源量。此外,基于所确定的资源量来选择所述串行执行计划和/或所述并行执行计划。为此,利用所选择的串行执行计划和/或并行执行计划来执行所述数据库查询。
本发明提供了一种用于编译串行和并行数据库查询执行计划的方法。在使用中,处理设备将数据库查询解析为树结构。此外,所述处理设备利用所述树结构为所述数据库查询编译串行执行计划和并行执行计划。所述处理设备还确定了用于执行所述数据库查询的资源量。所述处理设备基于所确定的资源量来选择所述串行执行计划和/或所述并行执行计划。为此,所述处理设备利用所选择的串行执行计划和/或并行执行计划来执行所述数据库查询。
本发明还提供了一种用于存储计算机指令的非瞬时性计算机可读介质,所述计算机指令在由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:将数据库查询解析为树结构;利用所述树结构编译用于所述数据库查询的串行执行计划;利用所述树结构编译用于所述数据库查询的并行执行计划;确定用于执行所述数据库查询的资源量;基于所确定的资源量来选择至少一个所述串行执行计划或所述并行执行计划;利用所选择的串行执行计划和/或并行执行计划来执行所述数据库查询。
在一些处理设备、方法或计算机可读介质实施例中,可以确定所述串行执行计划和所述并行执行计划共同的信息。此外,此类信息可以存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构中。
在一些处理设备、方法或计算机可读介质实施例中,在选择所述并行执行计划的情况下,可以基于所确定的资源量来确定所述并行执行计划的并行度。所述并行度小于所述数据库查询的条目数。此外,在选择所述并行执行计划的情况下,可以利用具有所确定的并行度的所述并行执行计划来执行所述数据库查询。
在一些处理设备、方法或计算机可读介质实施例中,在选择所述并行执行计划的情况下,可以利用轮询程序来执行所述数据库查询。
在一些处理设备、方法或计算机可读介质实施例中,可以确定所述资源量的变化。此外,可以基于所确定的资源量变化来调整所述并行度。可选地,完成与所述数据库查询的其中一个条目相关的执行之后,可以确定所述资源量的所述变化。此外,可以在运行时确定所述并行执行计划的所述并行度。
在一些处理设备、方法或计算机可读介质实施例中,所述数据库查询可以包括联合算子、全联合算子、除法算子和/或交叉算子。
在一些处理设备、方法或计算机可读介质实施例中,所述执行可能发生在多个数据存储节点中的每个节点上。
在一些处理设备、方法或计算机可读介质实施例中,所确定的资源量可以包括处理线程的数量、处理核的数量或处理时间量中的至少一个。
在一些处理设备、方法或计算机可读介质实施例中,基于所确定的资源量,通过以下方式选择至少一个所述串行执行计划或所述并行执行计划:将所确定的资源量与阈值进行比较;基于所述比较,选择至少一个所述串行执行计划或所述并行执行计划。
为此,在一些可选实施例中,可以基于特定资源可用性来选择数据库查询执行计划。此外,这种选择可以在执行时实时进行,使得具有此类资源可用性的任何指示都尽可能精确。这反过来可以提高处理查询执行计划时的性能,以及提高资源使用率,否则,在缺乏此类特征的系统中会摒弃所述资源。应该注意的是,前述的潜在优点仅出于说明的目的而进行阐述,不应被解释为以任何方式进行限制。
附图说明
图1A示出了一实施例提供的一种用于执行串行和并行查询执行计划的数据库系统;
图1B示出了一实施例提供的一种用于编译串行和并行执行计划并在运行时执行所述串行和并行执行计划的方法的流程图;
图2示出了另一实施例提供的一种用于执行串行和并行查询执行计划的数据库系统;
图3示出了另一实施例提供的一种用于基于可用资源来选择串行或并行查询执行计划的方法的流程图;
图4示出了一实施例提供的一种用于执行并行执行计划的方法的流程图;
图5示出了一实施例提供的用于将串行和并行执行计划共同的信息存储在共享数据结构中的技术;
图6示出了一实施例提供的一种用于执行串行和并行查询执行计划的系统;
图7是一实施例提供的网络架构的示图;
图8是一实施例提供的示例性处理设备的示图。
具体实施方式
图1A示出了一实施例提供的一种用于执行串行和并行查询执行计划的数据库系统100。如图所示,所述数据库系统100包括与协调节点104通信的应用102,所述协调节点104又经由一个或多个通信网络108与多个数据存储节点106A-106N通信。此外,每个所述数据存储节点106A-106N都包括多个相应的计算机可读存储器107A-107N、处理器108A-108N和执行引擎110A-110N。
在一实施例中,数据以数据库表的形式存储于所述存储器107A-107N。此外,在各种实施例中,在某些用例场景中,所述存储器107A-107N的不同存储器可以存储此类数据库表的不同分区。此外,在采用较小表的用例中,相应数据可以复制并存储于多个(或全部)存储器107A-107N。
在一个可能的实施例中,所述数据库系统100可以包括数据库管理系统(databasemanagement system,简称DBMS)。此外,此类DBMS可以包括大规模并行处理(massivelyparallel processing,简称MPP)数据库,进行优化以并行处理多个查询(或部分查询)。在此类可选实施例中,每个前述处理器108A-108N都可以配备专用的、单独的操作系统和存储器,并进一步配备多个内核以提高并行处理能力。现在将阐述关于所述数据库系统100的每个前述组件及其互操作的更多信息。
在本说明书上下文中,所述应用102可以包括任何本地或远程软件程序,所述本地或远程软件程序能够发出数据库查询109,以便最终检索存储在所述数据存储节点106A-106N上的数据。此外,每个前述查询109都可以包括任何数据结构,其中所述数据结构可以用于实现或支持检索所述数据存储节点106A-106N上存储的数据。此外,所述协调节点104可以包括硬件和软件的任何组合,用于生成所述查询109的查询执行计划111,进一步将所述查询执行计划111分发到所述数据存储节点106A-106N,使得此类查询执行计划111可以由所述相应的执行引擎110A-110N执行,用于检索所需数据并经由所述协调节点104将所需数据返回到所述应用102。
在使用中,所述程序102向所述协调节点104发出所述查询109,所述协调节点104转而处理所述查询109,以便生成用于分发到所述存储节点106A-106N以供执行的所述执行计划111。具体地,所述协调节点104生成串行和并行执行计划111,所述串行和并行执行计划111传送至所述数据存储节点106A-106N。接收到所述串行和并行执行计划111时,所述数据存储节点106A-106N将利用所述相应的执行引擎110A-110N对其进行处理,其方法是:确定与所述相应存储器107A-107N和处理器108A-108N相关的可用资源量,然后基于所述可用资源,执行至少一个所述串行和/或并行执行计划111。
在本说明书上下文中,确定所述资源量可以指资源的任何测量。例如,在一实施例中,确定所述资源量可以包括可用处理线程的数量。在另一实施例中,确定所述资源量可以包括可用处理核的数量。在另一实施例中,确定可用处理时间可以包括确定所述资源量。在其它实施例中,处理器可用的一个或多个存储器资源也可以视为资源。在其它实施例中,可以间接地确定前述资源量确定。例如,可以通过测量处理器负载来推断出可用处理线程和/或可用处理核的所述数量。
此外,此类资源的所述测量可以以任何期望的方式进行。仅仅通过示例,基于线程分配,可用处理线程可以是每个数据库实例的预定数量。此外,当使用一个处理线程时,此类可用线程数量可以减少一个。为此,所述可用线程的数量在任何给定时间总是已知的。此外,关于处理器内核数量,此类参数可以由操作系统提供,以响应相应系统调用。
通过该设计,所述数据存储节点106A-106N能够基于所述数据存储节点106A-106N处的资源的实时可用性在运行时在所述串行与并行执行计划111之间进行选择。此外,很快就可看出,就选择所述并行执行计划111进行执行来说,可以结合该并行执行计划111来确定并行度,其中所述并行度也基于所述数据存储节点106A-106N处的资源的可用性。
图1B示出了一实施例提供的一种用于编译串行和并行执行计划并在运行时执行所述串行和并行执行计划的方法150的流程图。可选地,所述方法150可以在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的上下文中实现。例如,所述方法150可以在图1A的数据库系统100的上下文中实现。然而,应该理解,所述方法150可以在其它合适的环境中实现。
如图所示,数据库查询152由应用(例如,图1A的应用102)发出。在各种实施例中,所述数据库查询152可以包括结构化查询语言(structured query language,简称SQL)查询,其可以包括各种类型的任何所需数量的组件(例如,子查询、语句、算子、数据参数、条目等)。例如,在使用算子的情况下,此类部件可以包括但不限于联合算子、全联合算子、除法算子和/或交叉算子。示例性查询在下表1中进行了阐述。应该注意的是,表1中的此类查询仅出于说明的目的而进行阐述,不应被解释为以任何方式进行限制。
表1
SELECT C11,C12,...Cln
FROM table_l
[WHERE conditions]
UNION ALL
SELECT C21,C22,...C2n FROM table_2
[WHERE conditions]
UNION ALL
SELECT Cml,Cm2,...Cmn FROM table_m
[WHERE conditions];
继续参考图1B,向数据库系统的节点(例如,图1A的数据库系统100的所述协调节点104)发送所述数据库查询152,用于生成能够执行以检索所述数据库查询中概述的所述数据的执行计划。如图所示,编译串行执行计划154和并行执行计划156。
在本说明书上下文中,所述串行执行计划154指在启动所述数据库查询152的一个或多个组件之前完成所述数据库查询152的其它一个或多个组件的执行的任何计划。例如,在一个可能的实施例中,所述串行执行计划154可以包括条目阵列,其中所述条目以规定逐个处理所述阵列条目的顺序的方式排序。此外,所述阵列的每个条目都可以对应于所述数据库查询152的一个或多个组件。通过该设计,此类串行计划可以包括指示/跟踪初始/当前阵列条目、操作顺序以及任何其它附加信息(例如,规定使用数据缓冲器等)的信息。
应该注意的是,在所述串行计划中,每个阵列条目都彼此独立,使得所述处理顺序可以由所述串行计划以任何期望的方式决定。例如,如上所述,所述串行计划可以简单地基于关联阵列中条目的顺序来规定该处理顺序。在使用中,在执行所述串行计划时使用所述计划的前述信息,使得可以处理子查询阵列的第一条目,然后返回结果。在完成所述第一条目的处理之后,所述串行计划指示要处理的第二条目以返回其它结果。可以重复进行该操作,直到所述阵列的所有条目都已处理且结果已返回至请求应用。
此外,所述并行执行计划156指在完成所述数据库查询152的一个或多个组件之前启动所述数据库查询152的其它一个或多个组件的执行的任何计划,使得同时以并行方式执行至少部分不同组件。例如,在一个可能的实施例中,除指示可以以并行方式处理阵列条目的信息外,所述并行执行计划156还可以包括所述条目阵列。
通过该设计,该并行计划可以包括支持并行执行的信息。此外,在一个可能的实施例中,所述并行计划可以用于在执行时动态确定前述并行度。确定所述平行度时,可以创建相应数量的线程,其中每个线程同时处理所述阵列的一个条目。完成每个线程时,所述并行计划将指导处理下一个未处理的阵列条目等等,直到所述阵列中的每一个条目都已被处理。应该注意的是,在一些实施例中,串行计划可以通过添加上述并行计划相关信息来转换为并行计划,以便支持并行处理。
在涉及诸如表1中查询的特定可选实施例的上下文中,查询可以涉及采用选择语句的形式的多个子查询,所述选择语句是全联合算子的主项。在该实施例中,不同子查询(由选择语句表示)的阵列条目可以并行运行。为此,在本实施例中,可以在选择语句/子查询级别应用上述并行度。
很快就可看出,所述串行和并行执行计划154/156可以进行编译以使用附加算子。该附加算子可以构建以表示查询组件(例如,子查询等)列表,其结果可以合并、附加以及返回到查询操作的下一阶段。具体地,每个子查询可以插入到阵列中,使得当在执行时间执行时,所述阵列可以在串行执行期间进行处理,一次处理一个条目,或者在并行执行期间针对不同子查询使用不同线程以并行方式处理。
为此,将所述串行和并行执行计划154/156分配到适当的节点(例如,图1A的数据存储节点106A-106N),使得相应的执行引擎(例如,图1A的执行引擎110A-110N)可以在所述串行和并行执行计划154/156中选择用于执行所述串行和并行执行计划154/156并检索相应数据的执行引擎。通过生成所述串行和并行执行计划154/156并将其分配到存储所需数据的适当节点,在操作158中可以在此类节点处做出以下决定:在考虑任何底层资源实时状态的情况下,所述串行计划和所述并行计划哪一个更适合,其中将依据所述底层资源的实时状态来执行所选计划。
例如,在一个可能的实施例中,可以结合使用所述串行或并行执行计划的决定使用阈值。在本说明书上下文中,前述阈值可以指可与可用资源量相比较的任何静态或动态值。
具体地,在一可选实施例中,上述阈值可对应于在所述并行执行计划156下执行最小数量的条目(例如,子查询)所必需的线程的数量。在该实施例中,执行引擎可以确定可用于执行特定查询的处理器(例如,图1的处理器108A-108N)的线程的数量。如果该线程数低于阈值,则可以选择所述串行执行计划154来执行。
另一方面,如果该线程数高于前述阈值,则可以选择所述并行执行计划156来执行。此外,与所述并行执行计划156执行相关的并行度可以基于可用线程的数量。例如,如果没有足够数量的线程来以并行方式运行所有条目,则可以最初执行此类条目的子集,完成此类条目的执行时,可以重新评估所述特定数据存储节点的资源,以确定随后要执行的条目的下一个子集的大小。
在上述实施例中,可用线程的数量可以是随时间变化的主体。因此,在运行时/执行时,例如,可以通过对可用CPU内核进行计数,然后(假定恒定的线程-内核比率)计算所述可用线程的相应数量来实时动态确定该数量。或者,如果满足所述阈值,则上述确定的可用线程的数量也可以推动要使用的并行度。为此,在一些实施例中,所述并行度可以动态确定。
在另一可选实施例中,前述阈值可对应于CPU内核的数量。在此类实施例中,可以确定系统具有X个内核,还可以预先确定只有一半的此类X个内核可以用于并行执行(以避免资源过载)。在这种情况下,所述阈值将是X/2,系统将防止经确定超出该阈值(单个或总和)的任何并行处理。
在又一可选实施例中,前述阈值可对应于处理器可用的存储器资源量。在该实施例中,可以确定系统具有X GB存储器,还可以预先确定所述X GB存储器中仅百分之二(20%)可用于并行执行(使得具有足够的存储器可有效用于其它目的)。在这种情况下,所述阈值将是X*0.2,系统将防止经确定超出该阈值(单个或总和)的任何并行处理。
图2示出了另一实施例提供的一种用于执行串行和并行查询执行计划的数据库系统200。可选地,所述数据库系统200可以在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的上下文中实现。例如,所述数据库系统200可以在图1A的数据库系统100的上下文中实现,还能够执行图1B的方法150。然而,应该理解,所述数据库系统200可以在所述其它合适的环境中实现。
与图1A的数据库系统100类似,所述数据库系统200包括与协调节点204通信的应用202,所述协调节点204又经由一个或多个通信网络208与多个数据存储节点206A-206N通信。此外,每个所述数据存储节点206A-206N都包括多个相应的存储器207A-207N、处理器208A-208N和执行引擎220A-220N。
此外,所述数据库系统200的所述协调节点204包括解析器205和数据库查询规划器/优化器210。此外,所述数据存储节点206A-206N的每个所述执行引擎220A-220N都配备资源调节器222A-222N和动态调度器224A-224N。此外,每个执行引擎220A-220N用于处理一个或多个附加算子226A-226N,所述附加算子226A-226N包括在由所述协调节点204分配并由所述执行引擎220A-220N执行的计划中。
在使用中,所述应用202向所述协调器节点204的所述解析器205发出所述查询,所述解析器205转而将所述查询解析为至少一个树结构。在本说明书上下文中,所述树结构可以包括任何数据结构,包括分级组织的组件(例如,反映各种操作的条目和/或子查询)。在使用中,所述树结构用于经处理以产生用于所述相应查询的执行计划。在一实施例中,所述解析器205可以包括SQL解析器。此外,所述树结构可以采用二叉树形式,其中,所述二叉树的每个节点都表示从前述查询解析的一个或多个操作。
因此,所述协调节点204的所述查询规划器/优化器210随后处理所述树结构以生成和优化多个执行计划,即前述串行执行计划和并行执行计划。如上所述,在涉及所述串行执行计划的一个实施例中,可以按照与前述分级组织相对应的预定串行顺序来组织上述条目。此外,在涉及所述并行执行计划的另一实施例中,上述条目可以组织成不存在任何相关性的条目组,否则会妨碍以并行方式处理条目组。
在任何情况下,两个执行计划都编译并分配到每个所述数据存储节点206A-206N,使得每个所述相应数据存储节点206A-206N可以利用所述执行引擎220A-220N中的一个相应的执行引擎来选择并执行所述执行计划中的一个适当的执行计划。具体地,为响应接收一对相应的执行计划,所述执行引擎220A-220N的每个所述资源调节器222A-222N确定所述处理器208A-208N的线程,所述线程当前在所述相应数据存储节点206A-206N处可用。考虑到资源可用性的此类计算,所述执行引擎220A-220N的每个所述动态调度器224A-224N选择所述相应数据存储节点206A-206N的所述串行或并行执行计划,执行所述串行或并行执行计划以从所述相应数据存储节点206A-206N的所述适当相应存储器207A-207N检索所请求的数据。
此外,在执行所述并行执行计划的情况下,系统基于可用处理线程的数量选择并行度。在本说明书上下文中,所述并行度可以是多个处理元件(例如,线程、内核、单元等),将同时(至少部分)用于以并行方式处理数据库查询的组件(例如,条目、子查询)。就以下两点来说:1)所述并行度小于并行执行计划中的条目数,以及2)在一个或多个其它条目的处理完成后,仍保留未处理的条目;所述资源调节器222A-222N和所述动态调度器224A-224N可以重复上述流程,即确定可用资源并相应地设置更新后的并行度。
在一个可能的实施例中,所述并行度可以指可同时调度以处理阵列条目的多个线程。此外,所述并行度可以基于多个因素来选择。例如,所述并行度可以基于可用CPU内核的数量、可用存储器资源量乃至用户指定内容来选择。具体地,在预先确定每个物理CPU内核最多可运行两(2)个线程的CPU内核的情况下,为了确定所述并行度,可以将所述可用CPU内核的数量乘以二(2)。
在另一实施例中,可用存储器资源量决定了所述并行度,所述并行度可以通过将可用总内存量除以支持一(1)并行度所需的内存量来计算。在另一实施例中,所述并行度由用户选择,所述用户运行了查询,可能希望指定最大并行度为十六(16)或一些其它数字,以限制并行度,使得其不会消耗所有可用资源。在又一实施例中,可以考虑上述各个因素,还可以使用此类因素的最小值或平均值作为所述平行度。
图3示出了另一实施例提供的一种用于基于可用资源来选择串行或并行查询执行计划的方法300的流程图。可选地,所述方法300可以在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的上下文中实现。例如,所述方法300可以在图1A-2的数据库系统100/200的上下文中实现。然而,应该理解,所述方法300可以在其它合适的环境中实现。
如图所示,在操作302中,在接收到数据库查询之后,将所述数据库查询解析为树结构。在一个可能的实施例中,此类查询可以从应用(例如,图1A-2的应用102/202)接收,由解析器(例如,图2的解析器205)解析。此外,在本实施例上下文中,所述解析可以包括任何处理,所述处理致使组件(例如,条目、子查询)以允许编译执行计划的方式在所述数据库查询中进行确定。
在操作304中,利用所述树结构编译用于所述数据库查询的串行执行计划。类似地,在操作306中,利用所述树结构编译用于所述数据库查询的并行执行计划。在各种实施例中,此类计划编译可以包括以串行或并行方式组织所述条目,包括用于允许相应地执行相应计划的关联代码或指令。此外,在一个可能的实施例中,上述两个执行计划都可以由数据库查询规划器/优化器(例如,图2的查询规划器/优化器210)生成。
在一些实施例中,在操作308中可以确定所述串行执行计划和所述并行执行计划共同的信息。在一个可能的实施例中,此类共同信息包括所述组件(例如,条目、子查询)本身以及所述串行执行计划和所述并行执行计划所需的任何其它数据和/或代码。此外,在操作309中,此类信息存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构中。为此,在编译期间,可以减少在关联协调节点处存储所述串行和并行执行计划所需的存储容量,因为相同信息的多个实例不一定需要单独、冗余地存储。
在计划完成之后,所述两个执行计划随后分配到不同数据存储节点的多个执行引擎(例如,图2的数据存储节点206A-206N的所述执行引擎220A-220N)。同样,在已执行操作308-309的条件下,在所述计划期间,还可以减少在所述不同数据存储节点处存储所述串行和并行执行计划所需的存储容量。
继续参考图3,然后在操作310中确定用于执行所述数据库查询的资源量。在本说明书上下文中,确定所述资源量可以指资源的任何测量。例如,在一实施例中,确定所述资源量可以包括可用处理线程的数量。在另一实施例中,确定所述资源量可以包括可用处理核的数量。在另一实施例中,确定可用处理时间可以包括确定所述资源量。甚至在其它实施例中,确定所述资源量可以包括处理器负载的测量。
在使用中,此类资源量可以以任何期望的方式确定。例如,在一个可能的实施例中,所述操作310可以利用执行引擎的资源调节器(例如,图2的执行引擎220A-220N的所述资源调节器222A-222N)来执行。此外,操作310可以在运行期间的任何时刻(例如,在执行计划的执行操作准备就绪、即将进行和/或已经进行的任何时刻)执行。
在任何情况下,基于在操作310中确定的资源量来在操作312中选择所述串行执行计划或所述并行执行计划。如上所述,此类选择可以利用任何技术进行,所述技术作为在操作310中所确定的资源量的函数。例如,如上所述,所述选择可能涉及比较所述可用资源量与最小阈值。具体地,此类阈值可以进行设置,使得只有在可用资源无法切实支持并行执行和/或会过度使用资源的情况下,才可以选择串行执行。否则,选择并行执行。在其它实施例中,算法、查找表或其它逻辑可用于确定串行或并行执行计划在给定可用资源量的情况下是否高效和/或有效地使用此类资源。
因此,利用所选择的串行执行计划或并行执行计划来在操作314中执行所述数据库查询。在一个可能的实施例中,所述操作312-314可以利用执行引擎的资源调节器(例如,图2的执行引擎220A-220N的所述资源调节器224A-224N)来执行。
为此,在一些可选实施例中,可以基于特定资源可用性来选择数据库查询执行计划。此外,这种选择可以在执行时实时进行,使得具有此类资源可用性的任何指示都尽可能精确。这反过来可以提高处理查询执行计划时的性能,以及提高资源使用率,否则,在缺乏此类特征的系统中会摒弃所述资源。根据用户的需求,现在将阐述关于在各种可选结构和应用中可以或不可以实现所述方法的更多说明性信息。应该注意的是,下面的信息是为了说明的目的而提出的,不应该被解释为以任何方式进行限制。任何以下特征可以可选地进行合并,而不管其它特征是否描述。
图4示出了一实施例提供的一种用于执行并行执行计划的方法400的流程图。可选地,所述方法400可以在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的上下文中实现。例如,在一实施例中,在执行并行执行计划的情况下,可以在图3的操作314的上下文中执行所述方法400。然而,应该理解,所述方法400可以在其它环境中实现。
在决策402中确定是否选择了并行执行计划。在一实施例中,可以根据图3的操作312执行此类选择。为响应未根据决策402选择的所述并行执行计划,在操作403中执行串行执行计划。
另一方面,如果根据决策402选择了所述并行执行计划,则基于所确定的资源量来确定操作404中的所述并行执行计划的并行度。如上所述,所述并行度可以是多个处理元件(例如,线程、内核、单元等),将同时(至少部分)用于以并行方式处理数据库查询的组件(例如,条目、子查询)。此外,(处理元件的)该数量设置为小于或等于所述数据库查询的组件数,因为这是以并行方式运行所有数据库查询组件所必需的处理元件的最大数量。换言之,如果存在X个数据库查询组件并且所述X个数据库查询组件都能够经由X个处理元件以并行方式执行,则不需要分配超出X的任何数量的处理元件。此外,可以在运行时执行所述操作404。
继续参考图4,如图所示,将利用具有所确定的并行度的所述并行执行计划来在操作406中执行所述数据库查询。可选地,可以利用轮询程序来执行所述数据库查询。例如,在一个可能的实施例中,在给定执行计划的X个查询组件(例如,条目)的情况下,所述X个查询组件置于队列中以由Y个诸如线程之类的处理元件进行处理(其中X>Y),Z个查询组件(其中Z<X)可以分配给所述Y个处理元件,完成时,所述Y个可用处理元件中的任一个分配给下一个可用查询组件,直到X个查询组件全部被处理。
在所述数据库查询的整个执行期间,根据决策408确定资源量是否发生了变化(例如,参见图3的操作310)。特别地,确定是否有更多的资源可用(未分配给其它任务)。若是,则调整(例如,提高)所述并行度,按照操作404-406继续执行。在可能的实施例中,在完成所述数据库查询的每个所述组件之后,可以确定所述资源量的上述变化。
图5示出了一实施例提供的用于将串行和并行执行计划共同的信息存储在共享数据结构中的技术500。可选地,所述技术500可以在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的上下文中实现。例如,所述技术500可以在图3的操作308-309的上下文中实现。然而,应该理解,所述技术500可以在其它合适的环境中实现。
如上所述,例如,可以结合附加算子来确定串行执行计划504和并行执行计划506共同的信息501。此外,此类信息可以存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构510中。例如,在一个可能的实施例中,所述公共数据结构510可以存储由查询处理产生的信息以及需要返回到另一级别的任何数据(例如,中间结果)。例如,这可以是在处理多个选择算子时的情况,如上文结合表1所阐述的那样。为此,在计划期间,可以减少在关联协调节点处存储所述串行和并行执行计划所需的存储容量。
此外,可选地,可以在协调节点(例如,图1A-2的协调器104/204)和/或存储节点(例如,图1A-2的存储节点106A-106N/206A-206N)处分配缓冲器,用于存储所述串行执行计划和所述并行执行计划的任何数据/代码。在这种情况下,由于使用了前述公共数据结构510,因此可以减小此类缓冲器的大小和/或数量,这是因为需要存储的数据较少。
图6示出了一实施例提供的一种用于执行串行和并行查询执行计划的系统600。可选地,所述数据库查询执行系统600可以利用在任何先前和/或随后的附图和/或其描述中阐述的任何一个或多个实施例的一个或多个特征来实现。然而,应该理解,所述数据库查询执行系统600可以在所述其它合适的环境中实现。
如图所示,提供一种解析器模块602形式的解析器装置,用于根据例如图3的操作302将数据库查询解析为树结构。在各种实施例中,所述解析器模块602可以包括但不限于图2的解析器205、至少一个处理器(将稍后描述)和控制其的任何软件和/或能够实现前述功能的任何其它电路。
还包括一种编译模块604形式的编译装置,与所述解析器模块602通信,用于根据例如图3的操作304-306,利用所述树结构分别编译串行执行计划和所述数据库查询的串行执行计划。在各种实施例中,所述编译模块604可以包括但不限于图2的规划器/优化器210、至少一个处理器(将稍后描述)和控制其的任何软件和/或能够实现前述功能的任何其它电路。
还提供一种执行计划选择器模块606形式的执行计划选择器装置,与所述编译模块604通信,用于根据例如图3的操作312,基于确定的资源量来选择至少一个所述串行执行计划或所述并行执行计划。在各种实施例中,所述执行计划选择器模块606可以包括但不限于图2的资源调节器222A、至少一个处理器(将稍后描述)和控制其的任何软件和/或能够实现前述功能的任何其它电路。
还包括一种执行模块608形式的执行装置,与所述执行计划选择器模块606通信,用于根据例如图3的操作314,利用所选择的至少一个所述串行执行计划或所述并行执行计划来执行所述数据库查询。在各种实施例中,所述执行模块608可以包括但不限于图2的动态调度器224A、至少一个处理器(将稍后描述)和控制其的任何软件和/或能够实现前述功能的任何其它电路。
图7是一实施例提供的网络架构700的示图。如图所示,提供至少一个网络702。在各种实施例中,可以结合耦合到所述至少一个网络702的任何一个或多个组件704-712来实现在任何先前的附图描述期间阐述的任何一个或多个特征。例如,在各种实施例中,所述组件704-712中的任何一个都可以配备图1的协调节点104和/或图1的一个或多个数据节点106A-N,用于编译和/或执行串行和并行数据库查询执行计划。
在本网络架构700的上下文中,所述网络702可以采取任何形式,包括但不限于电信网络、局域网(local area network,简称LAN)、无线网络、诸如因特网的广域网(widearea network,简称WAN)、对等网络、有线网络等。虽然仅示出了一个网络,但是应当理解的是,可以提供两个或更多个类似或不同的网络702。
多个设备耦合到所述网络702。例如,服务器712和计算机708可能耦合到所述网络702,用于进行通信。此类计算机708可以包括台式计算机、膝上型计算机和/或任何其它类型的逻辑。此外,各种其它设备可以耦合到所述网络702,包括个人数字助理(personaldigital assistant,简称PDA)设备710、移动电话设备706、电视704等。
图8是一实施例提供的示例性处理设备800的示图。可选地,所述处理设备800可以在图7的网络架构700的任何设备的上下文中实现。然而,应该理解,所述处理设备800可以在其它合适的环境中实现。例如,在各种实施例中,图1的协调节点104和/或图1的一个或多个数据节点106A-N可以在所述处理设备800上实现,用于编译和/或执行串行和并行数据库查询执行计划。
如图所示,所述处理设备800包括连接到总线812的至少一个处理器802,用于处理数据(例如,参见图3的步骤302-314)。所述处理设备800还包括耦合到所述总线812的存储器804(例如,硬盘驱动器、固态驱动器、随机存取存储器(random access memory,简称RAM)等)。所述存储器804可以包括一个或多个存储器组件,甚至可以包括不同类型的存储器。还包括通信接口808(例如,网络适配器、调制解调器等)和输入/输出(input/output,简称I/O)接口810(例如,显示器、扬声器、麦克风、触摸屏、触摸板和鼠标接口等)。
所述处理设备800还可以包括辅助存储器806。所述辅助存储器806耦合到所述总线812和/或所述处理设备800的其它组件。所述辅助存储器806可以包括例如硬盘驱动器和/或可移动存储驱动器,比如软盘驱动器、磁带驱动器和光盘驱动器等。所述可移动存储驱动器以众所周知的方式从可移动存储单元读取和/或向可移动存储单元写入。
就此而言,计算机程序或计算机控制逻辑算法可以存储于所述存储器804、所述辅助存储器806和/或任何其它存储器中。所述计算机程序在被执行时使所述处理设备800能够执行(例如,如上所述的)各种功能。存储器804、辅助存储器806和/或任何其它存储包括非瞬时性计算机可读介质。
在一实施例中,所述至少一个处理器802执行所述存储器804或所述辅助存储器806中的指令以编译/执行串行和并行数据库查询执行计划,其方法是:将数据库查询解析为树结构;利用所述树结构编译用于所述数据库查询的串行执行计划;利用所述树结构编译用于所述数据库查询的并行执行计划;确定用于执行所述数据库查询的资源量;基于所确定的资源量来选择至少一个所述串行执行计划或所述并行执行计划;利用所选择的串行执行计划和/或并行执行计划来执行所述数据库查询。
在一些实施例中,可以确定所述串行执行计划和所述并行执行计划共同的信息。此外,所述信息可以存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构中。
在一些实施例中,在选择所述并行执行计划的情况下,可以基于所确定的资源量来确定所述并行执行计划的并行度。所述并行度小于所述数据库查询的条目数。此外,在选择所述并行执行计划的情况下,可以利用具有所确定的并行度的所述并行执行计划来执行所述数据库查询。
在一些实施例中,在选择所述并行执行计划的情况下,可以利用轮询程序来执行所述数据库查询。
在一些实施例中,可以确定所述资源量的变化。此外,可以基于所确定的资源量变化来调整所述并行度。可选地,完成与所述数据库查询的其中一个条目相关的执行之后,可以确定所述资源量的所述变化。此外,可以在运行时确定所述并行执行计划的所述并行度。
在一些实施例中,所述数据库查询可以包括联合算子、全联合算子、除法算子和/或交叉算子。
在一些实施例中,所述执行可能发生在多个数据存储节点中的每个节点上。
应当注意,在一个方面中,此处描述的技术在存储在计算机可读介质中的可执行指令中体现,以供指令执行机器、装置或设备使用或与其结合使用,例如,基于计算机的或包括处理器的机器、装置或设备。本领域技术人员将认识到,对于一些实施例,包括其它类型的计算机可读介质,可存储计算机可访问的数据,比如磁带盒、闪存卡、数字视频光盘、伯努利盒、随机存取存储器(random access memory,简称RAM)和只读存储器(read-onlymemory,简称ROM)等。
如这里所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适介质中的一个或多个,使得指令执行机器、系统、装置或设备可以读取(或取出)来自计算机可读介质的指令并执行用于执行所述方法的指令。合适的存储格式包含电子、磁性、光和电磁格式中的一个或多个。常规的示例性计算机可读介质的非穷举清单包括:诸如便携式计算机磁盘、RAM、ROM、可擦除可编程只读存储器(EPROM或闪存)以及光存储设备,其中包括便携式光盘(compact disc,简称CD)、便携式数字视频光盘(digital video disc,简称DVD)、高清晰度DVD(high definition digital video disc,简称HD-DVD)和蓝光光碟。
应理解,所描述的图中示出的组件的布置是示例性的,并且可能有其它布置。还应理解,由权利要求书界定的、下文描述的并且在各种框图中所说明的各种系统组件表示根据本文中所公开的主题配置的一些系统中的逻辑组件。
例如,这些系统组件中的一个或多个可以整体或部分地通过所描述的图中示出的布置中示出的至少部分组件实现。另外,尽管这些组件中的至少一个至少部分地实现于电子硬件组件并因此构成机器,但是其它组件可以实现于软件,当包含于执行环境中时所述组件构成机器、硬件或软件和硬件的组合。
更具体地,由权利要求书界定的至少一个组件至少部分实现于电子硬件组件,例如指令执行机器(例如,基于处理器的或包含处理器的机器),和/或实现于专用电路或电路系统(例如,互连以执行专用功能的离散逻辑门)。其它组件可以实现于软件、硬件或软件和硬件的组合中。此外,可以组合这些其它组件中的一些或全部组件,可以完全省略一些组件并且可以添加其它组件,同时仍实现本文中描述的功能。因此,本文中描述的主题可以许多不同变化形式体现,且所有此类变化形式涵盖在权利要求书的范围内。
在以上描述中,除非另外指明,否则参考动作和由一个或多个设备执行的操作的符号表示来描述主题。因而,应理解,有时被称为计算机执行动作和操作的此类动作和操作包含构造形式的数据处理器的操作。这种操作对数据进行变换或将该数据保持在计算机的内存系统中各个位置,以本领域技术人员容易理解的方式重新配置或改变设备的操作。数据作为数据结构保存在内存的物理位置处,数据结构具有由数据格式限定的特定性质。然而,虽然在前文上下文中描述了主题,但这并不表示对所述主题的限制,因为所属领域的技术人员将了解,下文中描述的各种动作和操作也可以实施于硬件中。
为便于对本文中描述的主题的理解,根据动作顺序描述许多方面。由权利要求限定的这些方面中的至少一个方面由电子硬件组件执行。例如,将认识到,可通过专用电路或电路系统,通过正由一个或多个处理器执行的程序指令或通过这两者的组合执行各个动作。本文中对任何动作顺序的描述并不意图暗示必须遵循用于执行此顺序而描述的特定次序。本文所描述的所有方法可以以任何适当的次序来执行,除非本文中另有说明或上下文另有清楚否定。
在描述主题(特别是在下面的权利要求的上下文中)中使用术语“一”、“一个”和“所述”以及类似的指示物将被解释为涵盖单数和复数,除非本文另有说明或与上下文明显矛盾。在此引证数值的范围仅旨在用作单独地提及每个单独的数值落在所述范围内描述的方法,除非在此另有说明,并且每个单独的数值并入到本说明书中就像它被单独地在此引证一样。此外,上述描述仅出于说明的目的,而不是出于限制的目的,寻求保护的范围由附属权利要求及其任何等效物来限定。本文提供的任何和所有示例或示例性语言(例如,“比如”)的使用仅旨在更好地说明主题,并且不会对主题的范围提出限制,除非另有声明。使用术语“基于”和其它类似短语指示在附属权利要求和书面描述中产生结果的条件,并不旨在排除产生所述结果的其它条件。本说明书中的任何语言都不应理解为指示实践本发明所必需的任何非声明的要素。
本文中描述的实施例包含发明人实施所要求的主题已知的一个或多个模式。应理解,所属领域的普通技术人员读了上述描述将明显了解上述实施例的变化形式。本发明人期望熟练的业内人士适当时采用此类变化,本发明人想以不同于本文中特定描述的其它方式来实践本发明所主张的主题。因此,所主张的主题包含可适用法律所准许的在附属权利要求中叙述的主题的所有变化和等效物。此外,除非本文另外指示或以其它方式明确指出与内容相矛盾,否则本发明涵盖上述要素以其所有可能的变化形式的任何组合。
Claims (23)
1.一种处理设备,其特征在于,包括:
包含指令的非瞬时性存储器;
一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令以:
将数据库查询解析为树结构;
利用所述树结构编译用于所述数据库查询的串行执行计划;
利用所述树结构编译用于所述数据库查询的并行执行计划;
确定用于执行所述数据库查询的资源量;
基于所确定的所述资源量来选择至少一个所述串行执行计划或所述并行执行计划;
利用所选择的至少一个所述串行执行计划或所述并行执行计划来执行所述数据库查询。
2.根据权利要求1所述的处理设备,其特征在于,所述一个或多个处理器进一步执行所述指令以:
确定所述串行执行计划和所述并行执行计划共同的信息;
将所述信息存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构中。
3.根据权利要求1所述的处理设备,其特征在于,所述一个或多个处理器进一步执行所述指令以:
在选择所述并行执行计划的情况下,基于所确定的所述资源量来确定所述并行执行计划的并行度,其中所述并行度小于所述数据库查询的条目数;
在选择所述并行执行计划的情况下,利用具有所确定的并行度的所述并行执行计划来执行所述数据库查询。
4.根据权利要求3所述的处理设备,其特征在于,在选择所述并行执行计划的情况下,利用轮询程序来执行所述数据库查询。
5.根据权利要求3所述的处理设备,其特征在于,所述一个或多个处理器进一步执行所述指令以:
确定所述资源量的变化;
基于所确定的所述资源量的变化来调整所述并行度。
6.根据权利要求5所述的处理设备,其特征在于,在完成与所述数据库查询的其中一个条目相关的执行之后,确定所述资源量的变化。
7.根据权利要求3所述的处理设备,其特征在于,在运行时确定所述并行执行计划的所述并行度。
8.根据权利要求1所述的处理设备,其特征在于,所述数据库查询包括联合算子、全联合算子、除法算子或交叉算子中的至少一个算子。
9.根据权利要求1所述的处理设备,其特征在于,所述执行发生在多个数据存储节点中的每个节点上。
10.根据权利要求1所述的处理设备,其特征在于,所确定的所述资源量包括处理线程的数量、处理核的数量或处理时间量中的至少一个。
11.根据权利要求1所述的处理设备,其特征在于,基于所确定的所述资源量,通过以下方式选择至少一个所述串行执行计划或所述并行执行计划:
将所确定的所述资源量与阈值进行比较;
基于所述比较,选择至少一个所述串行执行计划或所述并行执行计划。
12.一种计算机实现方法,其特征在于,包括:
将数据库查询解析为树结构;
利用所述树结构编译用于所述数据库查询的串行执行计划;
利用所述树结构编译用于所述数据库查询的并行执行计划;
确定用于执行所述数据库查询的资源量;
基于所确定的所述资源量来选择至少一个所述串行执行计划或所述并行执行计划;
利用所选择的至少一个所述串行执行计划或所述并行执行计划来执行所述数据库查询。
13.根据权利要求12所述的方法,其特征在于,还包括:
确定所述串行执行计划和所述并行执行计划共同的信息;
将所述信息存储在由所述串行执行计划和所述并行执行计划共享的公共数据结构中。
14.根据权利要求12所述的方法,其特征在于,还包括:
在选择所述并行执行计划的情况下,基于所确定的所述资源量来确定所述并行执行计划的并行度,其中所述并行度小于所述数据库查询的条目数;
在选择所述并行执行计划的情况下,利用具有所确定的并行度的所述并行执行计划来执行所述数据库查询。
15.根据权利要求14所述的方法,其特征在于,在选择所述并行执行计划的情况下,利用轮询程序来执行所述数据库查询。
16.根据权利要求14所述的方法,其特征在于,还包括:
确定所述资源量的变化;
基于所确定的所述资源量的变化来调整所述并行度。
17.根据权利要求16所述的方法,其特征在于,在完成与所述数据库查询的其中一个条目相关的执行之后,确定所述资源量的变化。
18.根据权利要求14所述的方法,其特征在于,在运行时确定所述并行执行计划的所述并行度。
19.根据权利要求12所述的方法,其特征在于,所述数据库查询包括联合算子、全联合算子、除法算子或交叉算子中的至少一个算子。
20.根据权利要求12所述的方法,其特征在于,所述执行发生在多个数据存储节点中的每个节点上。
21.根据权利要求12所述的方法,其特征在于,所确定的所述资源量包括处理线程的数量、处理核的数量或处理时间量中的至少一个。
22.根据权利要求12所述的方法,其特征在于,基于所确定的所述资源量,通过以下方式选择至少一个所述串行执行计划或所述并行执行计划:
将所确定的所述资源量与阈值进行比较;
基于所述比较,选择至少一个所述串行执行计划或所述并行执行计划。
23.一种存储计算机指令的非瞬时性计算机可读介质,其特征在于,所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下步骤:
将数据库查询解析为树结构;
利用所述树结构编译用于所述数据库查询的串行执行计划;
利用所述树结构编译用于所述数据库查询的并行执行计划;
确定用于执行所述数据库查询的资源量;
基于所确定的资源量来选择至少一个所述串行执行计划或所述并行执行计划;
利用所选择的至少一个所述串行执行计划或所述并行执行计划来执行所述数据库查询。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662435592P | 2016-12-16 | 2016-12-16 | |
US62/435,592 | 2016-12-16 | ||
US15/414,560 US20180173753A1 (en) | 2016-12-16 | 2017-01-24 | Database system and method for compiling serial and parallel database query execution plans |
US15/414,560 | 2017-01-24 | ||
PCT/CN2017/114649 WO2018108000A1 (en) | 2016-12-16 | 2017-12-05 | Database system and method for compiling serial and parallel database query execution plans |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110100241A true CN110100241A (zh) | 2019-08-06 |
Family
ID=62559837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780077377.9A Pending CN110100241A (zh) | 2016-12-16 | 2017-12-05 | 一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180173753A1 (zh) |
EP (1) | EP3545435B1 (zh) |
CN (1) | CN110100241A (zh) |
WO (1) | WO2018108000A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795445A (zh) * | 2019-10-29 | 2020-02-14 | 北京字节跳动网络技术有限公司 | 并发任务的处理方法、装置、服务器设备及介质 |
CN111767304A (zh) * | 2020-09-01 | 2020-10-13 | 北京安帝科技有限公司 | 一种跨数据库的数据查询方法、查询装置及可读介质 |
CN112035523A (zh) * | 2020-08-25 | 2020-12-04 | 上海达梦数据库有限公司 | 一种并行度的确定方法、装置、设备及存储介质 |
CN112783922A (zh) * | 2021-02-01 | 2021-05-11 | 广州海量数据库技术有限公司 | 一种基于关系数据库的查询方法及装置 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
WO2020220216A1 (en) * | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11609911B2 (en) * | 2019-12-19 | 2023-03-21 | Ocient Holdings LLC | Selecting a normalized form for conversion of a query expression |
US11281687B2 (en) * | 2020-01-17 | 2022-03-22 | Sigma Computing, Inc. | Compiling a database query |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11586624B2 (en) * | 2020-09-28 | 2023-02-21 | Databricks, Inc. | Integrated native vectorized engine for computation |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US11379480B1 (en) * | 2021-12-17 | 2022-07-05 | Snowflake Inc. | Parallel execution of query sub-plans |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060218123A1 (en) * | 2005-03-28 | 2006-09-28 | Sybase, Inc. | System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning |
CN102118264A (zh) * | 2010-12-20 | 2011-07-06 | 大唐移动通信设备有限公司 | 一种生成性能报表的方法和装置 |
US20140114952A1 (en) * | 2012-10-23 | 2014-04-24 | Microsoft Corporation | Optimizing queries of parallel databases |
CN103927331A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据查询方法、装置及系统 |
CN104885078A (zh) * | 2012-12-29 | 2015-09-02 | 华为技术有限公司 | 用于大规模并行处理数据库集群中的两阶段查询优化的方法 |
US20160078090A1 (en) * | 2012-12-11 | 2016-03-17 | Microsoft Technology Licensing, Llc | Optimizing parallel queries using interesting distributions |
CN105518674A (zh) * | 2013-09-05 | 2016-04-20 | 华为技术有限公司 | 优化对称资源上的并行查询执行的机制 |
CN105550274A (zh) * | 2015-12-10 | 2016-05-04 | 曙光信息产业(北京)有限公司 | 双副本并行数据库的查询方法和装置 |
US20160350375A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Optimizing execution plans for in-memory-aware joins |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813054B2 (en) * | 2010-12-13 | 2014-08-19 | Hewlett-Packard Development Company, L. P. | Sequential-code optimization of parallel code based on identifying siloed program references |
CN102323946B (zh) * | 2011-09-05 | 2013-03-27 | 天津神舟通用数据技术有限公司 | 并行数据库中算子复用的实现方法 |
US8954419B2 (en) * | 2012-05-22 | 2015-02-10 | Oracle International Corporation | Method for serial and condition-based execution of operators by parallel processes |
CN103678619B (zh) * | 2013-12-17 | 2017-06-30 | 北京国双科技有限公司 | 数据库索引处理方法和装置 |
-
2017
- 2017-01-24 US US15/414,560 patent/US20180173753A1/en not_active Abandoned
- 2017-12-05 WO PCT/CN2017/114649 patent/WO2018108000A1/en unknown
- 2017-12-05 CN CN201780077377.9A patent/CN110100241A/zh active Pending
- 2017-12-05 EP EP17880301.1A patent/EP3545435B1/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060218123A1 (en) * | 2005-03-28 | 2006-09-28 | Sybase, Inc. | System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning |
CN102118264A (zh) * | 2010-12-20 | 2011-07-06 | 大唐移动通信设备有限公司 | 一种生成性能报表的方法和装置 |
US20140114952A1 (en) * | 2012-10-23 | 2014-04-24 | Microsoft Corporation | Optimizing queries of parallel databases |
US20160078090A1 (en) * | 2012-12-11 | 2016-03-17 | Microsoft Technology Licensing, Llc | Optimizing parallel queries using interesting distributions |
CN104885078A (zh) * | 2012-12-29 | 2015-09-02 | 华为技术有限公司 | 用于大规模并行处理数据库集群中的两阶段查询优化的方法 |
CN105518674A (zh) * | 2013-09-05 | 2016-04-20 | 华为技术有限公司 | 优化对称资源上的并行查询执行的机制 |
CN103927331A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据查询方法、装置及系统 |
US20160350375A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Optimizing execution plans for in-memory-aware joins |
CN105550274A (zh) * | 2015-12-10 | 2016-05-04 | 曙光信息产业(北京)有限公司 | 双副本并行数据库的查询方法和装置 |
Non-Patent Citations (2)
Title |
---|
JINGREN ZHOU ET AL.: "Incorporating partitioning and parallel plans into the SCOPE optimizer", 《2010 IEEE 26TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE 2010)》 * |
MICROSOFT: "understanding and controlling parallel query processing in sql server technical reviews applies to sql server 2008 r2", 《HTTP://DOWNLOAD.MICROSOFT.COM/DOWNLOAD/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SQL2008R2_PARALLEL_QP_UNDERSTANDING_AND_CONTROLLING.DOCX》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795445A (zh) * | 2019-10-29 | 2020-02-14 | 北京字节跳动网络技术有限公司 | 并发任务的处理方法、装置、服务器设备及介质 |
CN110795445B (zh) * | 2019-10-29 | 2022-08-05 | 北京字节跳动网络技术有限公司 | 并发任务的处理方法、装置、服务器设备及介质 |
CN112035523A (zh) * | 2020-08-25 | 2020-12-04 | 上海达梦数据库有限公司 | 一种并行度的确定方法、装置、设备及存储介质 |
CN111767304A (zh) * | 2020-09-01 | 2020-10-13 | 北京安帝科技有限公司 | 一种跨数据库的数据查询方法、查询装置及可读介质 |
CN112783922A (zh) * | 2021-02-01 | 2021-05-11 | 广州海量数据库技术有限公司 | 一种基于关系数据库的查询方法及装置 |
CN112783922B (zh) * | 2021-02-01 | 2022-02-25 | 广州海量数据库技术有限公司 | 一种基于关系数据库的查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3545435A1 (en) | 2019-10-02 |
US20180173753A1 (en) | 2018-06-21 |
EP3545435B1 (en) | 2022-10-26 |
WO2018108000A1 (en) | 2018-06-21 |
EP3545435A4 (en) | 2019-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110100241A (zh) | 一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 | |
US11797496B2 (en) | System and method for parallel support of multidimensional slices with a multidimensional database | |
US11922221B2 (en) | System and method for automatic dependency analysis for use with a multidimensional database | |
US10747765B2 (en) | System and method for optimizing large database management systems with multiple optimizers | |
EP2608066B1 (en) | Many core algorithms for in-memory column store databases | |
Husain et al. | Data intensive query processing for large RDF graphs using cloud computing tools | |
US20070112795A1 (en) | Scalable retrieval of data entries using an array index or a secondary key | |
US20160246842A1 (en) | Query optimization adaptive to system memory load for parallel database systems | |
CN108363746A (zh) | 一种支持多源异构数据的统一sql查询系统 | |
US10885062B2 (en) | Providing database storage to facilitate the aging of database-accessible data | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
CN109408493A (zh) | 一种数据源的迁移方法及系统 | |
Zhang et al. | Towards efficient join processing over large RDF graph using mapreduce | |
WO2016177405A1 (en) | Systems and methods for transformation of a dataflow graph for execution on a processing system | |
CN114090695A (zh) | 分布式数据库的查询优化的方法和装置 | |
US8312008B2 (en) | Docbase management system and implementing method thereof | |
US8280869B1 (en) | Sharing intermediate results | |
US10324927B2 (en) | Data-driven union pruning in a database semantic layer | |
CN115391424A (zh) | 数据库查询的处理方法、存储介质与计算机设备 | |
US10949431B2 (en) | Ranking operations in query processing | |
Pan et al. | Implementing and Optimizing Multiple Group by Query in a MapReduce Approach | |
Vijay | Developing an efficient query processing technique in cloud based MapReduce system | |
Zhang | Multi-relational data mining based on higher-order inductive logic programming | |
CN102043844B (zh) | 虚拟计算环境中资源视图信息处理的方法及系统 | |
Wells et al. | Extending the matching facilities of Linda |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190806 |
|
RJ01 | Rejection of invention patent application after publication |