CN107688660B - 并行执行计划的执行方法及装置 - Google Patents

并行执行计划的执行方法及装置 Download PDF

Info

Publication number
CN107688660B
CN107688660B CN201710804522.0A CN201710804522A CN107688660B CN 107688660 B CN107688660 B CN 107688660B CN 201710804522 A CN201710804522 A CN 201710804522A CN 107688660 B CN107688660 B CN 107688660B
Authority
CN
China
Prior art keywords
node
parallel
operator
execution plan
operator node
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.)
Active
Application number
CN201710804522.0A
Other languages
English (en)
Other versions
CN107688660A (zh
Inventor
郭振岗
王海龙
韩朱忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN201710804522.0A priority Critical patent/CN107688660B/zh
Publication of CN107688660A publication Critical patent/CN107688660A/zh
Application granted granted Critical
Publication of CN107688660B publication Critical patent/CN107688660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

本发明公开了一种并行执行计划的执行方法及装置。该方法包括:在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到并行执行计划之外的其他操作符节点发送来的数据;如果接收到,则将当前操作符节点作为回跳指针保存在并行操作符节点上,并跳转到并行操作符节点;在并行操作符节点接收到数据后,将该数据向根节点的方向传送;在控制流再次流动至所述并行操作符节点时,根据并行操作符节点上的回跳指针,跳转到回跳指针指向的操作符节点,并清空所述回跳指针。本发明减少了内存和磁盘资源的占用,提高了执行的输出效率和资源利用率,避免了引发执行性能的问题。

Description

并行执行计划的执行方法及装置
技术领域
本发明实施例涉及数据库技术,尤其涉及一种并行执行计划的执行方法及装置。
背景技术
在数据库系统中,当用户输入需要执行的SQL(Structured Query Language,结构化查询语言)语句时,数据库中的优化器解析该SQL语句,根据数据库中预先存储的数据库对象统计信息,选择数据库对象的访问路径和执行过程,这个访问路径和执行过程就是执行计划。
当前主流的商用关系型数据库管理系统生成的执行计划都是树形结构,具有多个层次,树的每个节点由一个操作符构成。执行计划执行时,数据从执行计划的叶子节点经执行计划树各层次节点的处理,流向根节点;控制流则由根节点流向叶子节点,根据每个操作符节点的不同,向对应的孩子节点获取数据。在这个过程中,无论是数据流还是控制流都是逐层进行的,不存在跨层传递。
执行计划在执行时控制流与数据流的流动过程大致如下:
1)控制流将执行计划树的根节点置为当前节点;
2)若当前节点有子节点且子节点还没有执行完毕,将控制流当前节点设置到当前节点的子节点(若当前节点有两个子节点,则根据当前节点操作符不同,选择一个子节点置为当前节点),转步骤2);
3)若当前节点无子节点或所有的子节点都已执行完毕且当前节点不是根节点,执行当前节点,将当前节点获取的数据,按控制流的反序将数据一层层向根节点传递;
3.1)若数据向上传递过程中遇到需要所有数据都获取完全后才能处理的操作符(如排序SORT操作符等),则数据缓存在此操作符,控制流将该节点置为当前节点,转步骤2)执行;
3.2)若数据向上传递过程中没有遇到需要所有数据都获取完全后才能处理的操作符,则数据流将数据传送到根节点,将此批数据返回给用户,并将根节点置为控制流当前节点,转步骤2)执行;
4)若当前节点所有的子节点都已执行完毕且当前节点是根节点,执行结束。
在普通的执行计划中,数据流路径是从叶子节点流向根节点,不存在跨层流动,这种机制在单站点数据库系统中是适用的。而在包含了具有通讯功能的并行操作符节点的并行执行计划中,数据的来源并不单一,除了从本站点的叶子节点获取,还可以从其他站点的并行计划的并行操作符节点获取。例如在附图1的并行执行计划中,包含了一个GATHER并行操作符节点,在执行过程中,其数据来源除了本站点的孩子节点PROJECT操作符的输出数据,还会从其他并行站点上的GATHER操作符节点接收数据。依照传统的数据逐层传递方法,可能站点A还在执行SCAN操作符(表扫描)节点时,其祖先的GATHER操作符节点已经收到了站点B发来的数据。由于控制流和数据流必须逐层传递,此时站点A正在处理叶子节点的SCAN操作,因此GATHER操作符节点无法处理站点B发来的数据,只能等待本站点的控制流和数据流处理完SCAN和PROJECT操作符节点后,处理到GATHER操作符节点时才能处理。在并行执行计划处理中发生这种情况时,别的站点发来的数据可能会产生堆积,数据量大时还需要保存到磁盘,等处理到此并行操作符节点时再从磁盘读出,占用大量内存或磁盘资源,引发资源紧张及执行性能问题。
发明内容
有鉴于此,本发明实施例提供一种并行执行计划的执行方法及装置,以减少内存和磁盘资源的占用,避免引发执行性能的问题。
第一方面,本发明实施例提供了一种并行执行计划的执行方法,所述方法包括:
在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据;
如果所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据;
在所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动;
在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
第二方面,本发明实施例还提供了一种并行执行计划的执行装置,所述装置包括:
节点检查模块,用于在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据;
第一跳转模块,用于如果所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据;
数据传送模块,用于在所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动;
第二跳转模块,用于在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
本发明实施例的技术方案,通过在执行每个操作符节点前检查其对应的祖先并行操作符节点是否接收到其他站点发送来的数据,如果接收到则将当前操作符节点保存到该并行操作符节点的回跳指针上,并跳转到并行操作符去接收数据,并将数据向根节点的方向传送,传送完成控制流继续向下流动,再次流动至该并行操作符节点时,根据并行操作符节点的回跳指针跳转到回跳指针指向的操作符节点去执行,解决了并行执行的站点间执行不同步导致的数据堆积而占用系统内存或磁盘空间的问题,减少了内存和磁盘资源的占用,提高了执行的输出效率和资源利用率,避免了引发执行性能的问题。
附图说明
图1是现有技术中的并行执行计划的示例图;
图2是本发明实施例一提供的一种并行执行计划的执行方法的流程图;
图3是本发明实施例二提供的一种并行执行计划的执行方法的流程图;
图4是本发明实施例三提供的一种并行执行计划的执行方法的流程图;
图5是本发明实施例提供的并行执行计划的执行方法中的并行执行计划的示例图;
图6是本发明实施例四提供的一种并行执行计划的执行装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
图2是本发明实施例一提供的一种并行执行计划的执行方法的流程图,本实施例可适用于执行具有通信功能的并行操作符节点的并行执行计划的情况,该方法可以由并行执行计划的装置来执行,该装置可以由软件和/或服务器来实现,一般可集成于数据库服务器中,该方法具体包括如下步骤:
步骤101,在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据。
其中,并行执行计划是指在支持并行查询或分布式的数据库系统中,可在各站点(对于并行查询,执行计划是在各线程并行执行;对于分布式系统,执行计划在各站点并行执行。为简单起见,以下统称为站点)并行执行的执行计划。并行执行计划是在普通执行计划的基础上,加入具有通讯功能的并行操作符(也可以称为MOTION操作符)节点,包括收集(GATHER)、分发(DISTRIBUTE)、发散(SCATTER)等。并行执行计划被发送到每个站点并行执行,通过其中的并行操作符节点,可以控制数据在站点间移动和同步,最后汇总到进行查询的主站点上传给客户端。
将树型结构的执行计划中操作符节点使用祖先、父亲及孩子等亲属关系来表达,存在直接关系的上下层的上层称为父亲,下层称为孩子(包括左孩子和/或右孩子),根节点是所有节点的祖先,每个叶子节点都有一条路径到达根节点,除自身外,此路径上的所有节点都是叶子节点的祖先。
执行当前操作符节点是指根据该节点上的操作符收集或处理当前操作符节点的数据。
控制流从根节点向下流动,流动至的节点为当前操作符节点,在执行当前操作符节点之前,首先检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据。一个操作符节点有可能有多个祖先并行操作符节点,这时可以按照从根节点往下的顺序依次检查每个祖先并行操作符节点是否接收到其他站点发送来的数据,即优先执行距离用户输出端(即执行计划的根节点)最近的并行操作符节点,可以快速释放资源。
步骤102,如果所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据。
如果当前操作符节点的祖先并行操作符节点接收到其他站点发送来的数据,则将当前操作符节点作为回跳指针保存在该并行操作符节点上,并跳转到该并行操作符节点去接收并处理数据。
步骤103,在所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动。
其中,相应的节点为根节点或需要所有数据都获取完全后才能处理的祖先操作符节点。
在所述并行操作符节点接收完其他站点发送来的数据后,将该数据向根节点的方向传送,直至根节点或需要所有数据都获取完全后才能处理的操作符节点,并将根节点或该操作符节点设置为控制流的当前操作符节点,将控制流从当前操作符节点再次向下流动。
步骤104,在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
在控制流再次流动至所述并行操作符节点时,经判断该并行操作符节点的回跳指针不为空,则跳转到回跳指针执行的操作符节点去执行,并清空该并行操作符节点的回跳指针。
本实施例的技术方案,通过在执行每个操作符节点前检查其对应的祖先并行操作符节点是否接收到其他站点发送来的数据,如果接收到则将当前操作符节点保存到该并行操作符节点的回跳指针上,并跳转到并行操作符去接收数据,并将数据向根节点的方向传送,传送完成控制流继续向下流动,再次流动至该并行操作符节点时,根据并行操作符节点的回跳指针跳转到回跳指针指向的操作符节点去执行,解决了并行执行的站点间执行不同步导致的数据堆积而占用系统内存或磁盘空间的问题,减少了内存和磁盘资源的占用,提高了执行的输出效率和资源利用率,避免了引发执行性能的问题。
在上述实施例的基础上,在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据,之前,还可选包括:
接收所述并行执行计划;
按照所述并行执行计划中根节点开始的顺序,记录每个操作符节点对应的祖先并行操作符节点。
数据库服务器根据SQL语句生成并行执行计划,并将并行执行计划分发到各个并行站点去并行执行,站点接收并行执行计划,按照并行执行计划中根节点开始的顺序,记录每个操作符节点对应的祖先并行操作符节点,便于后续检查当前操作符节点对应的祖先并行操作符节点是否接收到数据。
在上述技术方案的基础上,在接收所述并行执行计划之后,还可选包括:
初始化所述并行执行计划运行环境;
在执行计划执行完毕时,销毁所述运行环境。
每个并行站点接收到并行执行计划后,先初始化并行执行计划的运行环境,便于并行执行计划在该运行环境中运行。并在执行计划执行完毕时,销毁所述运行环境,释放资源。
在上述实施例的基础上,在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据,可选包括:
在执行并行执行计划时,将根节点设置为控制流的当前操作符节点,将控制流从当前操作符节点向下流动,并将流动至的操作符节点设置为当前操作符节点;
在当前操作符节点为并行操作符节点时,判断该并行操作符节点的回跳指针是否为空,如果为空,则控制控制流继续向下流动,直至当前操作符节点无子节点或所有的子节点都已执行完毕;
检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据。
在控制流从根节点向下流动的过程中,在流动至一个操作符节点时,判断该操作符节点是否是并行操作符节点,如果是,再判断该并行操作符节点的回跳指针是否为空,如果为空,则控制控制流继续向下流动,直至当前操作符节点无子节点或所有的子节点都已执行完毕,如果不为空,则跳转到回跳指针指向的操作符节点去执行;在流动至每个操作符节点时,还需要检查该操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据,便于并行操作符节点优先处理其他站点发送来的数据,避免数据堆积。
在上述技术方案的基础上,在检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据之后,还可选包括:
如果当前操作符节点对应的祖先并行操作符节点没有接收到所述并行执行计划之外的其他操作符节点发送来的数据,则执行当前操作符节点;
在当前操作符节点执行完毕并且所有数据已获取或处理完毕时,将当前操作符节点的状态设置为执行完毕,将当前操作符节点获取的数据按照数据流的方向向根节点的方向传递,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点。
通过设置状态便于确定操作符节点是否执行完毕,及并行执行计划是否执行完毕。
实施例二
图3是本发明实施例二提供的一种并行执行计划的执行方法的流程图,本实施例是在上述实施例的基础上的一个优选实例,该方法具体包括如下步骤:
步骤201,数据库服务器生成并行执行计划,分发给各并行站点并行执行;
步骤202,各并行站点初始化并行执行计划运行环境,对并行执行计划中的每个操作符节点,按照从计划树根节点开始的顺序,为该操作符节点将其所有的祖先并行操作符节点记录在一个数组中;
步骤203,执行计划开始执行,将控制流根节点设置为并行执行计划的当前操作符节点;
步骤204,控制流从当前操作符节点开始向下流动,判断流动至的当前操作符节点是否为并行操作符节点,如果是则执行步骤210,如果否则执行步骤205;
步骤205,控制控制流继续向下流动,直至当前操作符节点无子节点或当前操作符节点的所有子节点都已执行完毕,执行步骤206,若当前操作符节点是根节点,则执行步骤212;
步骤206,执行当前操作符节点前,根据所述数组,依次检查当前操作符节点的所有祖先并行操作符节点是否接收到其他站点发送来的数据,如果是则执行步骤208,如果否则执行步骤207;
步骤207,执行当前操作符节点,当前操作符节点执行完毕时,将当前操作符节点的状态设置为“已执行完毕”,并将当前节点获取的数据,按照数据流方向向根节点一层层传递,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点,将控制流的当前操作符节点设置为根节点或该祖先操作符节点,之后执行步骤204;
步骤208,将当前操作符节点作为回跳指针保存在该并行操作符节点上,设置该并行操作符节点为当前操作符节点,跳转到该并行操作符节点去接收数据;
步骤209,跳转后的并行操作符节点接收完其他站点发来的数据后,数据流按照向根节点的方向传送数据,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点(如排序节点),将控制流当前节点设置为根节点或该操作符节点,之后执行步骤204;
步骤210,判断该并行操作符节点的回跳指针是否为空,如果是则执行步骤204,如果否则执行步骤211;
步骤211,将回跳指针指向的操作符节点设置为当前操作符节点,并清空回跳指针,之后执行步骤207;
步骤212,执行计划执行完毕,销毁运行环境。
本实施例的技术方案支持跨层跳转机制,优先执行已经收到数据的祖先并行操作符节点,在有多个祖先并行操作符节点都收到数据时,优先执行离用户输出端(即计划的根节点)最近的并行操作符节点,这样做的好处是如果这个并行操作符节点的祖先节点中没有需要所有数据都获取完全后才能处理的操作符,则这个并行操作符节点的数据可以直接传到根节点返回给用户,释放资源,有效避免了并行执行的站点间执行不同步导致的数据堆积而占用系统的内存或磁盘空间的问题,提高了执行的输出效率和资源利用率。
实施例三
图4是本发明实施例三提供的一种并行执行计划的执行方法的流程图,本实施例是在上述实施例的基础上的一个优选实例,本实施例以图5所示的并行执行计划为例,该方法具体包括如下步骤:
步骤301,接收到并行执行计划,对并行执行计划中的每个操作符节点,按照从计划树根节点开始的顺序,为该操作符节点将其所有的祖先MOTION节点记录在一个数组中;
表1操作符节点与其祖先并行操作符节点的数组
节点 祖先MOTION数组
NSET {}
GATHER {}
HASH JOIN {GATHER}
SCAN(1) {GATHER}
DISTRIBUTE {GATHER}
SCAN(2) {GATHER,DISTRIBUTE}
表1为记录操作符节点与其并行操作符节点的对应关系的数组。
步骤302,开始执行并行执行计划,控制流从根节点NSET向下流动;
步骤303,控制流处理到GATHER节点,发现该节点属于MOTION节点,检查其回跳指针,为空,控制流继续向下流动,直至SCAN(1)节点;
步骤304,执行SCAN(1)节点前,根据记录的数组,确定SCAN(1)节点的祖先MORION节点为GATHER节点,此时GATHER节点还未接收到其他站点发来的数据,执行SCAN(1),将获得的数据流向上传递到HASH JOIN节点;
其中,HASH JOIN节点为需要所有数据都获取完全后才能处理的节点。
步骤305,将控制流的当前操作符节点设置为HASH JOIN节点,控制流向下流动至DISTRIBUTE节点,发现该节点属于MOTION节点,且回跳指针为空,控制流继续向下流动至SCAN(2)节点;
步骤306,在执行SCAN(2)节点前,根据记录的数组,确定SCAN(2)节点的祖先MORION节点为GATHER节点和DISTRIBUTE节点,发现此时GATHER节点已收到其他并行站点发来的数据,则将SCAN(2)节点作为GATHER节点的回跳指针,将当前操作符节点设置为GATHER节点,跳转到GATHER节点去执行;
步骤307,GATHER节点接收并处理完其他站点发来的数据后,将数据传送给父亲节点NSET节点,NSET节点是计划树的根节点,此时可以把这部分数据先返回给用户,将NSET节点设置为控制流当前操作符节点;
步骤308,控制流向下流动到GATHER节点,由于GATHER节点是MOTION节点,检查其回跳指针,发现不为空,将控制流当前操作符节点设置为回跳指针指向的SCAN(2)节点,清空GATHER节点的回跳指针;
步骤309,在执行SCAN(2)节点前,再次检查其祖先MOTION数组中的节点,跳过已处理的GATHER节点,DISTRIBUTE节点还没有接收到别的站点发来的数据,执行SCAN(2)节点,将获得的数据按数据流方向一层层向上传递至HASH JOIN节点;
步骤310,将控制流的当前操作符节点设置为HASH JOIN节点,执行HASH JOIN节点,将数据按数据流方向一层层向上传递。
步骤311,将HASH JOIN节点的数据传送至GATHER节点,执行GATHER节点,将获得的数据按数据流方向向上传递,传递至NSET节点,把数据返回给用户,将NSET节点设置为控制流当前操作符节点,发现其所有子节点都已执行完毕。
本实施例的技术方案,以图5所示的并行执行计划为例,具体介绍了跨层跳转的执行方式,由于跳转先执行了GATHER节点,提前处理了GATHER节点接收到的别的站点发来的数据,且数据可直接向上传递给用户并释放资源,避免了数据堆积而占用系统的内存或磁盘空间的问题,提高了执行的输出效率和资源利用率。
实施例四
图6是本发明实施例四提供的一种并行执行计划的执行装置的结构示意图,如图6所示,本实施例所述的并行执行计划的执行装置包括:节点检查模块401、第一跳转模块402、数据传送模块403和第二跳转模块404。
其中,节点检查模块401,用于在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据;
第一跳转模块402,用于如果所述并行操作符节点接收到所述并行执行计划之外的其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据;
数据传送模块403,用于在所述并行操作符节点接收到所述并行执行计划之外的其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动;
第二跳转模块404,用于在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
可选的,还包括:
并行计划接收模块,用于接收所述并行执行计划;
对应祖先节点记录模块,用于按照所述并行执行计划中根节点开始的顺序,记录每个操作符节点对应的祖先并行操作符节点。
可选的,还包括:
运行环境初始化模块,用于在接收所述并行执行计划之后,初始化所述并行执行计划运行环境;
运行环境销毁模块,用于在执行计划执行完毕时,销毁所述运行环境。
可选的,所述节点检查模块包括:
当前节点设置单元,用于在执行并行执行计划时,将根节点设置为控制流的当前操作符节点,将控制流从当前操作符节点向下流动,并将流动至的操作符节点设置为当前操作符节点;
控制流流动单元,用于在当前操作符节点为并行操作符节点时,判断该并行操作符节点的回跳指针是否为空,如果为空,则控制控制流继续向下流动,直至当前操作符节点无子节点或所有的子节点都已执行完毕;
节点检查单元,用于检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据。
可选的,还包括:
当前节点执行模块,用于在检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据之后,如果当前操作符节点对应的祖先并行操作符节点没有接收到所述并行执行计划之外的其他操作符节点发送来的数据,则执行当前操作符节点;
当前节点状态修改模块,用于在当前操作符节点执行完毕并且所有数据已获取或处理完毕时,将当前操作符节点的状态设置为执行完毕,将当前操作符节点获取的数据按照数据流的方向向根节点的方向传递,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点。
上述并行执行计划的执行装置可执行本发明任意实施例所提供的并行执行计划的执行方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的并行执行计划的执行方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种并行执行计划的执行方法,其特征在于,所述方法包括:
在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据;
如果所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据;
在所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动;
在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
2.根据权利要求1所述的方法,其特征在于,在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,之前,还包括:
接收所述并行执行计划;
按照所述并行执行计划中根节点开始的顺序,记录每个操作符节点对应的祖先并行操作符节点。
3.根据权利要求2所述的方法,其特征在于,在接收所述并行执行计划之后,还包括:
初始化所述并行执行计划运行环境;
在执行计划执行完毕时,销毁所述运行环境。
4.根据权利要求1所述的方法,其特征在于,在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,包括:
在执行并行执行计划时,将根节点设置为控制流的当前操作符节点,将控制流从当前操作符节点向下流动,并将流动至的操作符节点设置为当前操作符节点;
在当前操作符节点为并行操作符节点时,判断该并行操作符节点的回跳指针是否为空,如果为空,则控制控制流继续向下流动,直至当前操作符节点无子节点或所有的子节点都已执行完毕;
检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据。
5.根据权利要求1所述的方法,其特征在于,在检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据之后,还包括:
如果当前操作符节点对应的祖先并行操作符节点没有接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则执行当前操作符节点;
在当前操作符节点执行完毕并且所有数据已获取或处理完毕时,将当前操作符节点的状态设置为执行完毕,将当前操作符节点获取的数据按照数据流的方向向根节点的方向传递,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点。
6.一种并行执行计划的执行装置,其特征在于,所述装置包括:
节点检查模块,用于在执行并行执行计划的当前操作符节点前,检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的其他操作符节点发送来的数据;
第一跳转模块,用于如果所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则将当前操作符节点作为回跳指针保存在所述并行操作符节点上,并跳转到所述并行操作符节点去接收数据;
数据传送模块,用于在所述并行操作符节点接收到所述并行执行计划之外的所述其他操作符节点发送来的数据后,将该数据向根节点的方向传送,在数据传送至相应的节点后,控制流再次向下流动;
第二跳转模块,用于在控制流再次流动至所述并行操作符节点时,根据所述并行操作符节点上的回跳指针,跳转到所述回跳指针指向的操作符节点,并清空所述回跳指针。
7.根据权利要求6所述的装置,其特征在于,还包括:
并行计划接收模块,用于接收所述并行执行计划;
对应祖先节点记录模块,用于按照所述并行执行计划中根节点开始的顺序,记录每个操作符节点对应的祖先并行操作符节点。
8.根据权利要求7所述的装置,其特征在于,还包括:
运行环境初始化模块,用于在接收所述并行执行计划之后,初始化所述并行执行计划运行环境;
运行环境销毁模块,用于在执行计划执行完毕时,销毁所述运行环境。
9.根据权利要求6所述的装置,其特征在于,所述节点检查模块包括:
当前节点设置单元,用于在执行并行执行计划时,将根节点设置为控制流的当前操作符节点,将控制流从当前操作符节点向下流动,并将流动至的操作符节点设置为当前操作符节点;
控制流流动单元,用于在当前操作符节点为并行操作符节点时,判断该并行操作符节点的回跳指针是否为空,如果为空,则控制控制流继续向下流动,直至当前操作符节点无子节点或所有的子节点都已执行完毕;
节点检查单元,用于检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据。
10.根据权利要求6所述的装置,其特征在于,还包括:
当前节点执行模块,用于在检查当前操作符节点对应的祖先并行操作符节点是否接收到所述并行执行计划之外的所述其他操作符节点发送来的数据之后,如果当前操作符节点对应的祖先并行操作符节点没有接收到所述并行执行计划之外的所述其他操作符节点发送来的数据,则执行当前操作符节点;
当前节点状态修改模块,用于在当前操作符节点执行完毕并且所有数据已获取或处理完毕时,将当前操作符节点的状态设置为执行完毕,将当前操作符节点获取的数据按照数据流的方向向根节点的方向传递,直至根节点或需要所有数据都获取完全后才能处理的祖先操作符节点。
CN201710804522.0A 2017-09-08 2017-09-08 并行执行计划的执行方法及装置 Active CN107688660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710804522.0A CN107688660B (zh) 2017-09-08 2017-09-08 并行执行计划的执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710804522.0A CN107688660B (zh) 2017-09-08 2017-09-08 并行执行计划的执行方法及装置

Publications (2)

Publication Number Publication Date
CN107688660A CN107688660A (zh) 2018-02-13
CN107688660B true CN107688660B (zh) 2020-03-13

Family

ID=61156142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710804522.0A Active CN107688660B (zh) 2017-09-08 2017-09-08 并行执行计划的执行方法及装置

Country Status (1)

Country Link
CN (1) CN107688660B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829735B (zh) * 2018-05-21 2021-06-29 上海达梦数据库有限公司 并行执行计划的同步方法、装置、服务器及存储介质
CN109522326B (zh) * 2018-10-18 2021-06-29 上海达梦数据库有限公司 数据分发方法、装置、设备及存储介质
CN110555032A (zh) * 2019-09-09 2019-12-10 北京搜狐新媒体信息技术有限公司 一种基于元数据的数据血缘关系分析方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425091A (zh) * 2008-12-05 2009-05-06 中国工商银行股份有限公司 一种数据库访问路径效率分析处理方法、服务器及系统
CN103136260A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 评估过滤因子用于数据库中访问路径优化的方法和装置
CN104216894A (zh) * 2013-05-31 2014-12-17 国际商业机器公司 用于数据查询的方法和系统
CN105550274A (zh) * 2015-12-10 2016-05-04 曙光信息产业(北京)有限公司 双副本并行数据库的查询方法和装置
CN106446153A (zh) * 2016-09-21 2017-02-22 广州特道信息科技有限公司 一种分布式newSQL数据库系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425091A (zh) * 2008-12-05 2009-05-06 中国工商银行股份有限公司 一种数据库访问路径效率分析处理方法、服务器及系统
CN103136260A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 评估过滤因子用于数据库中访问路径优化的方法和装置
CN104216894A (zh) * 2013-05-31 2014-12-17 国际商业机器公司 用于数据查询的方法和系统
CN105550274A (zh) * 2015-12-10 2016-05-04 曙光信息产业(北京)有限公司 双副本并行数据库的查询方法和装置
CN106446153A (zh) * 2016-09-21 2017-02-22 广州特道信息科技有限公司 一种分布式newSQL数据库系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种实时数据库查询执行方法的设计;刘云生 等;《计算机应用》;20050210(第2005年02期);第279-282页 *
达梦嵌入式数据库的执行计划缓存研究;王竹峰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120615(第2012年第06期);第I138-1546页 *

Also Published As

Publication number Publication date
CN107688660A (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN107239335B (zh) 分布式系统的作业调度系统及方法
CN107679192B (zh) 多集群协同数据处理方法、系统、存储介质及设备
CN107688660B (zh) 并行执行计划的执行方法及装置
US8788660B2 (en) Query execution and optimization with autonomic error recovery from network failures in a parallel computer system with multiple networks
CN104885078B (zh) 用于大规模并行处理数据库集群中的两阶段查询优化的方法
US10120901B2 (en) System and program for joining source table rows with target table rows
US6477523B1 (en) Selectivity prediction with compressed histograms in a parallel processing database system
US7340452B2 (en) Parallel single cursor model on multiple-server configurations
US8090710B2 (en) Index maintenance in a multi-node database
US20150248462A1 (en) Dynamically improving streaming query performance based on collected measurement data
US9576026B2 (en) System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams
CN104111958A (zh) 一种数据查询方法及装置
CN104620239A (zh) 自适应查询优化
JP2014232483A (ja) データベースシステム、検索方法およびプログラム
CN110740054B (zh) 一种基于强化学习的数据中心虚拟化网络故障诊断方法
US8688819B2 (en) Query optimization in a parallel computer system with multiple networks
CN101996102A (zh) 数据关联规则挖掘实现方法与系统
CN104881581A (zh) 物联网数据高效分析方法
US20190220820A1 (en) Nested hierarchical rollups by level using a normalized table
CN103686865A (zh) 网络资源使用的决策装置和方法
US20230146912A1 (en) Method, Apparatus, and Computing Device for Constructing Prediction Model, and Storage Medium
CN113392123A (zh) 一种sql语句处理方法及装置
CN109308303A (zh) 一种基于马尔可夫链的多表连接在线聚集方法
CN114756629A (zh) 基于sql的多源异构数据交互分析引擎及方法
CN112182031B (zh) 数据查询方法及装置、存储介质、电子装置

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
GR01 Patent grant
GR01 Patent grant