针对分布式数据库的查询方法及装置制造方法及图纸

技术编号:34433429 阅读:18 留言:0更新日期:2022-08-06 16:13
本说明书实施例提供一种针对分布式数据库的查询方法及装置,在查询方法中,根据对分布式数据库的查询语句,生成查询计划对应的数据流操作DFO关系树,其中的单个DFO包括查询计划中的一组算子。基于DFO关系树,执行查询计划,其中包括,在多调度模式下调度多个DFO后,判断多个DFO中是否存在满足第一预定条件的目标DFO,若存在目标DFO,将多调度模式修改为单调度模式。其中,第一预定条件包括,目标DFO嵌套在其他DFO中,且其中包含的协调者算子所调度的各子DFO用于进行分布式重扫处理。度的各子DFO用于进行分布式重扫处理。度的各子DFO用于进行分布式重扫处理。

【技术实现步骤摘要】
针对分布式数据库的查询方法及装置


[0001]本说明书一个或多个实施例涉及数据库领域,尤其涉及一种针对分布式数据库的查询方法及装置。

技术介绍

[0002]数据库的总体性能在很大程度上取决于数据库的查询处理代价和效率。为了减少计算量,提高查询效率,在数据库查询过程中,解析器会先对查询语句进行词法分析语义分析形成查询树;查询树被送入优化器经过逻辑优化和物理优化,输出查询计划给执行器,执行器执行查询计划以获取查询结果。

技术实现思路

[0003]本说明书一个或多个实施例描述了一种针对分布式数据库的查询方法及装置,在执行查询计划的过程中,可以灵活切换调度模式,进而可以大大提升分布式数据库的查询性能。
[0004]第一方面,提供了一种针对分布式数据库的查询方法,包括:根据对所述分布式数据库的查询语句,生成查询计划对应的数据流操作DFO关系树,其中的单个DFO包括所述查询计划中的一组算子;基于所述DFO关系树,执行所述查询计划,其中包括,在多调度模式下调度多个DFO后,判断所述多个DFO中是否存在满足第一预定条件的目标DFO,若存在所述目标DFO,将所述多调度模式修改为单调度模式;其中,所述第一预定条件包括,所述目标DFO嵌套在其他DFO中,且其中包含的协调者算子所调度的各子DFO用于进行分布式重扫处理。
[0005]第二方面,提供了一种针对分布式数据库的查询装置,包括:生成单元,用于根据对所述分布式数据库的查询语句,生成查询计划对应的数据流操作DFO关系树,其中的单个DFO包括所述查询计划中的一组算子;执行单元,用于基于所述DFO关系树,执行所述查询计划,其中包括,在多调度模式下调度多个DFO后,判断所述多个DFO中是否存在满足第一预定条件的目标DFO,若存在所述目标DFO,将所述多调度模式修改为单调度模式;其中,所述第一预定条件包括,所述目标DFO嵌套在其他DFO中,且其中包含的协调者算子所调度的各子DFO用于进行分布式重扫处理。
[0006]第三方面,提供了一种计算机存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
[0007]第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
[0008]本说明书一个或多个实施例提供的针对分布式数据库的查询方法及装置,在执行查询计划的过程中,可以结合实际情况,灵活地切换DFO的调度模式,比如,将多调度模式修
改为单调度模式。由于多调度模式和单调度模式各自具有优缺点,从而本方案结合两种调度模式,执行查询计划时,可以大大提升查询计划的执行性能,进而可以提升数据库的查询性能。
附图说明
[0009]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0010]图1示出在一个示例中的分布式数据库示意图;图2a示出在一个示例中的查询语句示意图;图2b示出图2a中的查询语句对应的查询计划示意图;图3示出图2b中的查询计划对应的算子树示意图;图4示出在一个示例中的DFO关系树示意图;图5示出根据一个实施例的针对分布式数据库的查询方法流程图;图6示出根据一个实施例的针对分布式数据库的查询装置示意图。
具体实施方式
[0011]下面结合附图,对本说明书提供的方案进行描述。
[0012]图1示出在一个示例中的分布式数据库示意图。图1中,分布式数据库可以包括存储节点A

D。存储节点A

D均为分布式存储节点,每个存储节点包括SQL引擎和存储引擎。
[0013]需要说明,图1只是一种示例性说明,在实际应用中,分布式数据库还可以包括更多或更少的存储节点。
[0014]分布式数据库例如可以采用share nothing架构,比如,OceanBase数据库。在这种分布式数据库中,数据分布式地存储在各个存储节点的存储引擎中,并且存储引擎本身不提供跨存储节点的数据访问能力。例如,数据可以被分割为多个数据分区(也可以称为数据分块),所分割出的数据分区分别存储到不同的存储引擎中。每个存储引擎可以存储一个或多个数据分区。每个存储节点上涉及的数据访问所需要的CPU资源和IO资源都发生在本地,由该存储节点上的SQL引擎执行。
[0015]图1中,任一存储节点可以从客户端接收查询语句,之后该存储节点中的SQL引擎可以进行查询处理。具体地,可以先通过SQL引擎中的解析器对查询语句进行词法分析语义分析形成查询树。之后,查询树被送入SQL引擎中的优化器经过逻辑优化和物理优化,输出查询计划给SQL引擎中的执行器,执行器执行查询计划以获取查询结果(以下也称最终执行结果)。
[0016]多数情况下,执行器在接收到查询计划之后,会将查询计划拆分为若干数据流操作(Data Flow Operation,DFO),之后调度执行该若干DFO。
[0017]以下对查询计划以及DFO等概念进行解释说明。
[0018]图2a示出在一个示例中的查询语句示意图。图2a中,查询语句具体为结构化查询语言(Structured Query Language,SQL)语句。图2b示出图2a中的查询语句对应的查询计
划示意图。图2b中,查询计划包括具有层级关系的多个算子(operator),每个算子所执行的操作对应的操作类型是确定的,其是构成查询计划的基本组成单元。
[0019]基于查询计划中具有层级关系的算子,可以构建得到算子树。该算子树中的每个算子可以用来描述与具体的SQL语义对应的基础操作。比如,协调者(PX COORDINATOR)算子(以下简称PX算子)、表扫描(TABLE SCAN)算子、传输数据(EXCHANGE OUT)算子(以下简称EXCHANGE算子)、表连接(JOIN)算子、表删除(TABLE DELETE)算子以及分组(GROUP BY)算子等。
[0020]图3示出图2b中的查询计划对应的算子树示意图。图3中,算子树中的每个圆圈表示一个算子,该算子例如可以为上述TABLE SCAN算子等。
[0021]在一个示例中,可以以EXCHANGE算子为边界,将图3示出的算子树划分为多个子算子树,或者说划分为多个分组;其中的每个子算子树(或每个分组)中的各算子构成一个数据流操作(Data Flow Operation,DFO)。比如,1

3号算子和24

25号算子构成一个DFO子计划(一种逻辑计划),简称DFO;再比如,4

9号算子和13

14号算子可以构成另一个DFO等等。
[0022]对于图3示出的算子树,在将划分到同一分组的各算子通过一个DFO表示之后,可本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对分布式数据库的查询方法,包括:根据对所述分布式数据库的查询语句,生成查询计划对应的数据流操作DFO关系树,其中的单个DFO包括所述查询计划中的一组算子;基于所述DFO关系树,执行所述查询计划,其中包括,在多调度模式下调度多个DFO后,判断所述多个DFO中是否存在满足第一预定条件的目标DFO,若存在所述目标DFO,将所述多调度模式修改为单调度模式;其中,所述第一预定条件包括,所述目标DFO嵌套在其他DFO中,且其中包含的协调者算子所调度的各子DFO用于进行分布式重扫处理。2.根据权利要求1所述的方法,其中,所述执行所述查询计划还包括:在多调度模式下调度多个DFO前,判断第二预定条件是否满足,并且在所述第二预定条件满足的情况下,将所述多调度模式修改为单调度模式;其中,所述第二预定条件包括:所述分布式数据库的资源占用率大于预定占比;或者,多个DFO中的若干DFO的处理耗时大于预定时长。3.根据权利要求1所述的方法,其中,所述查询计划包括具有层级关系的多个算子,且所述多个算子包括传输数据算子;所述生成查询计划对应的数据流操作DFO关系树,包括:基于所述具有层级关系的多个算子,构建算子树;以传输数据算子为边界,将所述算子树拆分为若干子算子树,并将其中的每个子算子树所包含的各算子作为一个DFO;将各DFO分别作为节点,并基于所述各DFO各自对应的各子算子树之间的层级关系,构建所述DFO关系树。4.根据权利要求1所述的方法,其中,所述多个DFO是根据调度并行度以及预设的遍历算法,从所述DFO关系树中确定出的;所述调度并行度基于所述DFO关系树的形态而确定。5.根据权利要求4所述的方法,其中,在所述DFO关系树为左深树的情况下,所述调度并行度为2;在所述DFO关系树为右深树或者bushy树的情况下,所述调度并行度为3。6.根据权利要求1所述的方法,其中,所述分布式数据库包括多个存储节点,所述方法通过所述多个存储节点中任意的第一存储节点执行;所述调度多个DFO包括:将所述多个DFO分别发送给各自对应的各目标存储节点,使得所述目标存储节点执行其接收的DFO,并流式地向执行该DFO的父DFO的存储节点发送对应的执行结果,以实时消费该执行结果。7.根据权利要求1所述的方法,其中,所述执行所述查询计划,还包括:在所述单调度模式下,串行调度所述目标DFO中包含的协调者算子所调度的各子DFO,并在调度所述各子DFO后,将所述单调度模式恢复为所述多调度模式。8.根据权利要求7所述的方法,其中,所述分布式数据库包括多个存储节点,所述方法通过所述多个存储节点中任意的第一存储节点执行;所述串行调度所述目标DFO中包含的协调者算子所调度的各子DFO,包括:依次将所述各子DFO发送给各自对应的各目标存储节点,使得所述目标存储节点执行
接收的子DFO,并向执行该子DFO的父DFO的存储节点发送对应的执行结果,以将该执行结果缓存为中间结果。9.根据权利要求1所述的方法,还包括:在执行所述查询计划后,向客户端返回所述查询计划的最终执行结果;所述最终执行结果至少基于所述DFO关系树中最上层的DFO的执行结果而确定。10.一种针对分布式数据库的查询装置,包括:生成单元,用于根据对所述分布式数据库的查询语句,生成查询计划对应的数据流操作DFO关系树,其中的单个DFO包括所述查询计划中的一组算子;执行单元,用于基...

【专利技术属性】
技术研发人员:唐铭豆潘毅余璜
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

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

1