面向数据库管理系统的计划树优化方法和装置.pdf

上传人:柴****2 文档编号:1639124 上传时间:2018-06-30 格式:PDF 页数:21 大小:1.13MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510060935.3

申请日:

2015.02.05

公开号:

CN104657447A

公开日:

2015.05.27

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20150205|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

上海达梦数据库有限公司

发明人:

张钦; 汪龙重

地址:

201203上海市浦东新区博霞路50号403室

优先权:

专利代理机构:

北京品源专利代理有限公司11332

代理人:

邓猛烈; 孟金喆

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种面向数据库管理系统的计划树优化方法和装置。所述方法包括:根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。本发明解决了现有的流水线机制需要逐条生成记录并在子树中重复地传输相同的记录数据,因而造成极大资源浪费的技术问题,实现了有效地精简了计划树,避免了相同子树的重复计算处理,提高了数据库管理系统的性能的技术效果。

权利要求书

权利要求书
1.  一种面向数据库管理系统的计划树优化方法,其特征在于,包括:
根据计划树中的重复子树,生成以链表树TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;
使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;
根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。

2.  根据权利要求1所述的方法,其特征在于,根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树包括:
获取所述计划树中根节点相同的至少两个相等树作为重复子树;
在所述重复子树中,添加TTAB节点作为新的根节点,生成TTAB子树。

3.  根据权利要求1或2所述的方法,其特征在于,获取所述TTAB子树中TTAB节点的依赖关系包括:
在所述TTAB子树中,如果确定第一TTAB子树中重复子树为第二TTAB子树中重复子树的子树,则标记第二TTAB节点依赖于第一TTAB节点。

4.  根据权利要求1所述的方法,其特征在于,使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表包括:
S01、初始化TTAB链表;
S02、将所述计划树的根节点设为当前节点;
S03、从所述当前节点开始,前序遍历所述计划树,如果获取到一个重复子树的根节点,执行S04;否则,结束流程;
S04、将获取的所述重复子树作为操作子树,并在所述计划树中,将所述操作子树使用对应的TTAB子树的TTAB节点代替;
S05、如果所述TTAB节点未记录于所述TTAB链表中,则将所述TTAB节点添加于所述TTAB链表中,执行S06;否则,直接执行S06;
S06、如果所述TTAB节点对应的TTAB子树包括下一级重复子树,则以前序遍历的方式获取所述下一级重复子树的根节点,返回S04;否则,执行S07;
S07、将所述操作子树的根节点设为当前节点,返回S03。

5.  根据权利要求1所述的方法,其特征在于,根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序包括:
S001、构造辅助结构表,以标识所述TTAB链表中TTAB节点的位置调整属性,其中,所述位置调整属性包括待调整属性和已调整属性,且所述辅助结构表中的各TTAB节点的位置调整属性初始化为待调整属性;
S002、根据所述TTAB节点在所述TTAB链表中顺序,计算各TTAB节点的当前位置值;
S003、根据所述辅助结构表,顺序获取所述TTAB链表中的一个待调整属性的TTAB节点,作为当前操作节点;
S004、根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合;
S005、在所述TTAB依赖节点集合中,删除已调整属性的TTAB节点,生成TTAB调整范围集合;
S006、如果所述TTAB调整范围集合为空集合,则将当前操作节点的位置调整属性修改为已调整属性,返回S003;否则,执行S007;
S007、在所述的调整范围集合中,找到当前位置值最大的TTAB节点作为最大位置节点;
S008、如果当前操作节点的当前位置值大于最大位置节点的当前位置值, 则将当前操作节点的位置调整属性修改为已调整属性,返回S003;否则,在所述TTAB链表中,将当前操作节点的位置调整至最大位置节点的位置之后,返回S002。

6.  根据权利要求5所述的方法,其特征在于,根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合包括:
S0041、将当前操作节点所依赖的TTAB依赖节点集合初始化为空集合,并将当前操作节点作为待查找节点;
S0042、如果根据所述TTAB节点的依赖关系,获取所述待查找节点所依赖的TTAB节点,执行S0043;否则,直接获取所述TTAB依赖节点集合,结束流程;
S0043、将获取的所述TTAB节点添加于所述TTAB依赖节点集合中,并将所述TTAB依赖节点作为新的待查找节点,返回S0042。

7.  一种面向数据库管理系统的计划树优化装置,其特征在于,包括:
TTAB子树生成模块,用于根据计划树中的重复子树,生成以链表树TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;
TTAB链表建立模块,用于使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;
TTAB节点顺序调整模块,用于根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。

8.  根据权利要求7所述的装置,其特征在于,所述TTAB子树生成模块用于:
获取所述计划树中根节点相同的至少两个相等树作为重复子树;
在所述重复子树中,添加TTAB节点作为新的根节点,生成TTAB子树。

9.  根据权利要求7或8所述的装置,其特征在于,所述TTAB子树生成模块还用于:
在所述TTAB子树中,如果确定第一TTAB子树中重复子树为第二TTAB子树中重复子树的子树,则标记第二TTAB节点依赖于第一TTAB节点。

10.  根据权利要求7所述的装置,其特征在于,所述TTAB链表建立模块具体包括:
初始化子模块,用于初始化TTAB链表;
第一当前节点设置子模块,用于将所述计划树的根节点设为当前节点;
前序遍历子模块,用于从所述当前节点开始,前序遍历所述计划树,如果获取到一个重复子树的根节点,触发TTAB节点代替子模块;
所述TTAB节点代替子模块,用于将获取的所述重复子树作为操作子树,并在所述计划树中,将所述操作子树使用对应的TTAB子树的TTAB节点代替;
TTAB链表添加子模块,用于如果所述TTAB节点未记录于所述TTAB链表中,则将所述TTAB节点添加于所述TTAB链表中,触发下一级子树遍历子模块;否则,直接触发所述下一级子树遍历子模块;
所述下一级子树遍历子模块,用于如果所述TTAB节点对应的TTAB子树包括下一级重复子树,则以前序遍历的方式获取所述下一级重复子树的根节点,触发所述TTAB节点代替子模块;否则,触发第二当前节点设置子模块;
所述第二当前节点设置子模块,用于将所述操作子树的根节点设为当前节点,触发前序遍历子模块。

11.  根据权利要求7所述的装置,其特征在于,所述TTAB节点顺序调整模块具体包括:
辅助结构表构建子模块,用于构造辅助结构表,以标识所述TTAB链表中TTAB节点的位置调整属性,其中,所述位置调整属性包括待调整属性和已调整属性,且所述辅助结构表中的各TTAB节点的位置调整属性初始化为待调整属性;
当前位置计算子模块,用于根据所述TTAB节点在所述TTAB链表中顺序,计算各TTAB节点的当前位置值;
当前操作节点获取子模块,用于根据所述辅助结构表,顺序获取所述TTAB链表中的一个待调整属性的TTAB节点,作为当前操作节点;
TTAB依赖节点集合获取子模块,用于根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合;
TTAB调整范围集合生成子模块,用于在所述TTAB依赖节点集合中,删除已调整属性的TTAB节点,生成TTAB调整范围集合;
第一属性调整子模块,用于如果所述TTAB调整范围集合为空集合,则将当前操作节点的位置调整属性修改为已调整属性,触发所述当前操作节点获取子模块;否则,触发最大位置节点获取子模块;
所述最大位置节点获取子模块,用于在所述的调整范围集合中,找到当前位置值最大的TTAB节点作为最大位置节点;
第二属性调整子模块,用于如果当前操作节点的当前位置值大于最大位置节点的当前位置值,则将当前操作节点的位置调整属性修改为已调整属性,触发所述当前操作节点获取子模块;否则,在所述TTAB链表中,将当前操作节点的位置调整至最大位置节点的位置之后,触发所述当前位置计算子模块。

12.  根据权利要求11所述的装置,其特征在于,所述TTAB依赖节点集合获取子模块具体包括:
初始化子单元,用于将当前操作节点所依赖的TTAB依赖节点集合初始化为空集合,并将当前操作节点作为待查找节点;
依赖节点获取子单元,用于如果根据所述TTAB节点的依赖关系,获取所述待查找节点所依赖的TTAB节点,触发节点添加子单元;否则,直接获取所述TTAB依赖节点集合;
所述节点添加子单元,用于将获取的所述TTAB节点添加于所述TTAB依赖节点集合中,并将所述TTAB依赖节点作为新的待查找节点,触发所述依赖节点获取子单元。

说明书

说明书面向数据库管理系统的计划树优化方法和装置
技术领域
本发明实施例涉及数据库管理技术,尤其涉及一种面向数据库管理系统的计划树优化方法。
背景技术
数据库管理系统根据用户输入的SQL(Structured Query Language,结构化查询语言)语句生成对应的计划树。计划树是一个由各种执行操作符作为节点的树状结构,不同的数据库管理系统可能包含不同的操作符,但都遵循数据库的基本原理,一条SQL语句中所包含的视图和子查询块被处理为计划树中的一个子树,且这些子树通常以同一个操作符作为根节点。计划树在很大程度上决定了一个数据库管理系统执行语句的效率,精简计划树可以有效地提高数据库管理系统的性能。
在现有技术中,数据库管理系统在执行与计划树对应的数据检索操作时都采用了同样的技术,即流水线机制。所述流水线机制,是指系统每次调用一个执行节点,就从其下的子节点获取一条记录或者一个空记录而叶节点则直接对数据库基表进行访问操作。
现有技术的主要缺陷在于:在计划树中由若干节点构成的子树重复出现时,由于这些子树返回的均是相同的记录数据,采用流水线机制时依旧需要逐条生成记录并在子树中重复地传输相同的记录数据,这会造成极大的资源浪费。
发明内容
有鉴于此,本发明实施例提供一种面向数据库管理系统的计划树优化方法和装置,以减少相同的记录数据的生成、处理以及在流水线中的传输,有效地提高数据库管理系统的性能。
在第一方面,本发明实施例提供了一种面向数据库管理系统的计划树优化方法,包括:
根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;
使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;
根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
在第二方面,本发明实施例还提供了一种面向数据库管理系统的计划树优化装置,包括:
TTAB子树生成模块,用于根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;
TTAB链表建立模块,用于使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;
TTAB节点顺序调整模块,用于根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
本发明实施例通过根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表; 根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序的技术手段,解决了现有的流水线机制需要逐条生成记录并在子树中重复地传输相同的记录数据,因而造成极大资源浪费的技术问题,实现了有效地精简了计划树,避免了相同子树的重复计算处理,提高了数据库管理系统的性能的技术效果。
附图说明
图1是本发明第一实施例的一种面向数据库管理系统的计划树优化方法的流程图;
图2是本发明第一实施例的一种计划树的结构示意图;
图3是本发明第一实施例的一种TTAB子树的结构示意图;
图4是本发明第一实施例的一种描述TTAB节点之间依赖关系的示意图;
图5是本发明第一实施例的一种使用TTAB节点优化计划树的示意图;
图6是本发明第二实施例的一种面向数据库管理系统的计划树优化方法的流程图;
图7是本发明第二实施例的一种建立与TTAB节点对应的TTAB链表的实现示意图;
图8是本发明第三实施例的一种面向数据库管理系统的计划树优化方法的流程图;
图9是本发明第三实施例的一种TTAB链表调整顺序的示意图;
图10是本发明第四实施例的一种面向数据库管理系统的计划树优化装置的结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
第一实施例
图1是本发明第一实施例的一种面向数据库管理系统的计划树优化方法的流程图,本实施例的方法可以由面向数据库管理系统的计划树优化装置来执行,该装置可通过硬件和/或软件的方式实现,一般可集成于用于提供计划树优化服务的服务器中。本实施例的方法具体包括如下操作:
110、根据计划树中的重复子树,生成以TTAB(链表树)节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系。
在本实施例中,服务器根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系。
在本实施例中,计划树是指根据用户输入的SQL语言生成的,由各种执行操作符作为节点的树状结构。其中,在图2中示出了一种计划树的结构示意图。
计划树中的重复子树,具体是指以所述计划树中的一个节点作为根节点的至少两个相等树。所谓相等树具体是指所有对应节点上的属性均相等的子树。如图2所示,子树21和子树22为所述计划树中的重复子树。
在本实施例中,获取计划树中的全部重复子树后,为每一个重复子树增加一个TTAB节点作为根节点,即可生成TTAB子树。换句话说,TTAB子树为根节点为TTAB节点的一个子树;重复子树为根节点为P(计划树中的一个具体节 点)的一个子树,在重复子树中增加TTAB节点的根节点就变成TTAB子树,反过来,TTAB子树去掉TTAB根节点就变回成一个重复子树。
在图2所示的计划树中,共有7个重复子树。其中,搜集重复子树的过程可以使用各种已知算法和数据结构实现,不再赘述。对这7个重复子树加上不同的TTAB根节点,就变为7个TTAB子树。在图3中示出了上述7个重复子树,及其对应的7个TTAB子树,其中的Tn,n∈[1,7]表示不同的TTAB根节点。
在本实施例中,服务器在生成以TTAB节点为根节点的TTAB子树之后,还获取所述TTAB子树中各个TTAB节点的依赖关系。
其中,如果第一重复子树是第二重复子树的子树,那么表示第二重复子树的根节点依赖第一重复子树的根节点。具体的,如图3所示,以T2为根节点的重复子树是以T1为根节点的重复子树的子树,则可确定T1依赖于T2。其中,在图4中示出了计划树中各个TTAB节点的依赖关系。
120、使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表。
在本实施例中,服务器使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表。
其中,通过使用所述TTAB节点代替所述计划树中的重复子树,可以实现对所述计划树中的重复子树的优化。在图5中示出了一种使用TTAB节点代替所述计划树中的重复子树。
在本实施例中,在使用所述TTAB节点优化所述计划树中的重复子树的同时,还要建立与TTAB节点对应的TTAB链表。所述TTAB链表中存储有各个TTAB节点。
其中,所述TTAB链表可以在使用TTAB节点优化计划树的同时,同步建 立,也可以在用TTAB节点优化计划树之后,根据优化后的计划树中包括的TTAB节点建立,对此并不进行限制。
130、根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
在本实施例中,服务器根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
其中,TTAB链表中TTAB节点顺序的调整为了保证一个TTAB节点所依赖的全部TTAB节点排在该TTAB节点之前。这样设置的原因是:保证了在计划树的执行过程中,被依赖的TTAB节点的计算被优先处理,确保了计划树的顺利执行。
本发明实施例通过根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序的技术手段,解决了现有的流水线机制需要逐条生成记录并在子树中重复地传输相同的记录数据,因而造成极大资源浪费的技术问题,实现了有效地精简了计划树,避免了相同子树的重复计算处理,提高了数据库管理系统的性能的技术效果。
在上述各实施例的基础上,所述根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树可以包括:
获取所述计划树中根节点相同的至少两个相等树作为重复子树;
在所述重复子树中,添加TTAB节点作为新的根节点,生成TTAB子树。
在上述各实施例的基础上,所述获取所述TTAB子树中TTAB节点的依赖 关系具体可以包括:
在所述TTAB子树中,如果确定第一TTAB子树中重复子树为第二TTAB子树中重复子树的子树,则标记第二TTAB节点依赖于第一TTAB节点。
第二实施例
图6是本发明第二实施例的一种面向数据库管理系统的计划树优化方法流程图。本实施例以上述实施例为基础进行优化,在本实施例中,优选的对操作使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表进行优化。
相应的,本实施例的方法包括如下操作:
610、根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系。
620、初始化TTAB链表。
在本实施例中,服务器首先初始化TTAB链表,将所述TTAB链表中的内容清空。
630、将所述计划树的根节点设为当前节点。
640、从所述当前节点开始,前序遍历所述计划树。
650、判断是否获取到一个重复子树的根节点:若是,执行660;否则,执行6120。
660、将获取的所述重复子树作为操作子树,并在所述计划树中,将所述操作子树使用对应的TTAB子树的TTAB节点代替。
670、判断所述TTAB节点是否记录于所述TTAB链表中,若是,直接执行690;否则,执行680。
680、将所述TTAB节点添加于所述TTAB链表中,执行690。
690、判断所述TTAB节点对应的TTAB子树是否包括下一级重复子树:若是,执行6100;否则,执行6110。
6100、以前序遍历的方式获取所述下一级重复子树的根节点,返回660。
6110、将所述操作子树的根节点设为当前节点,返回640。
6120、根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
在一个具体例子中,计划树如图2所示,在图7中示出了一种建立与TTAB节点对应的TTAB链表的实现示意图,其中计划树的前序序列在横行表示。
首先获取到第一个重复子树的根节点P4,增加一个TTAB节点T4,加入TTAB链表中;此重复子树还有下一级重复子树,获取下一级重复子树根节点P5,增加一个TTAB节点T5,将T5加入TTAB链表;
返回计划树,获取下一个重复子并树根节点P7,增加一个TTAB节点T7,将T7加入TTAB链表中;
返回计划树,获取下一个重复子树根节点P1,增加一个TTAB节点T1,将T1加入TTAB链表;此重复子树还有下一级重复子树,前序遍历该重复子树,获取下一个重复子树根节点P2增加一个TTAB节点T2,将T2加入TTAB链表;
继续前序遍历,获取下一个重复子树根节点P4,与P4对应的TTAB节点T4已在TTAB链表中,无需加入;
继续前序遍历,将T6加入TTAB链表;
继续前序遍历,将T3加入TTAB链表;
继续前序遍历,发现T5已在TTAB链表中,无需加入,至此,整个P1重复子树处理完毕;
返回计划树,继续获取后续重复子树根节点,发现T3,T1,T7都已经在TTAB链表中,所有重复子树均已转换,获得TTAB链表为T4、T5、T7、T1、T2、T6和T3。
本发明实施例通过根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序的技术手段,解决了现有的流水线机制需要逐条生成记录并在子树中重复地传输相同的记录数据,因而造成极大资源浪费的技术问题,实现了有效地精简了计划树,避免了相同子树的重复计算处理,提高了数据库管理系统的性能的技术效果。
第三实施例
图8是本发明第三实施例的一种面向数据库管理系统的计划树优化方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,将操作根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序进行优化。
相应的,本实施例的方法包括如下操作:
810、根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系。
820、使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表。
830、构造辅助结构表,以标识所述TTAB链表中TTAB节点的位置调整属 性。
在本实施例中,所述位置调整属性包括待调整属性和已调整属性,且所述辅助结构表中的各TTAB节点的位置调整属性初始化为待调整属性。
840、根据所述TTAB节点在所述TTAB链表中顺序,计算各TTAB节点的当前位置值。
850、判断所述辅助结构表中是否包括待调整属性的TTAB节点:若是,执行860;否则,结束流程。
860、根据所述辅助结构表,顺序获取所述TTAB链表中的一个待调整属性的TTAB节点,作为当前操作节点。
870、根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合。
在本实施例中,所述根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合具体可以包括:
8701、将当前操作节点所依赖的TTAB依赖节点集合初始化为空集合,并将当前操作节点作为待查找节点;
8702、如果根据所述TTAB节点的依赖关系,获取所述待查找节点所依赖的TTAB节点,执行8703;否则,直接获取所述TTAB依赖节点集合,结束870。
8703、将获取的所述TTAB节点添加于所述TTAB依赖节点集合中,并将所述TTAB依赖节点作为新的待查找节点,返回8702。
880、在所述TTAB依赖节点集合中,删除已调整属性的TTAB节点,生成TTAB调整范围集合。
890、判断所述TTAB调整范围集合是否为空集合,若是,执行8100;否则,执行8110。
8100、将当前操作节点的位置调整属性修改为已调整属性,返回850。
8110、在所述的调整范围集合中,找到当前位置值最大的TTAB节点作为最大位置节点。
8120、判断当前操作节点的当前位置值是否大于最大位置节点的当前位置值,若是,执行8130;否则,执行8140。
8130、将当前操作节点的位置调整属性修改为已调整属性,返回850。
8140、在所述TTAB链表中,将当前操作节点的位置调整至最大位置节点的位置之后,返回840。
续前例,TTAB链表中TTAB节点的初始顺序为T4、T5、T7、T1、T2、T6、和T3。在图9所示一种TTAB链表调整顺序的示意图。
表1中示出了调整过程的每个调整状态下,辅助结构表中各TTAB节点的位置调整属性(“Y”表示待调整状态,“N”表示已调整状态)的变化;表2示出了在每个调整状态下,每个TTAB节点的当前位置值(Location)的变化;表3表明在每个调整状态下,需要调整的TTAB节点、TTAB节点的依赖节点集合和TTAB节点的调整范围集合。
表1
T4YYYNNNNNNNNT5YYNNNNNNNNNT7YYYYNNNNNNNT1YYYYYYYYYYNT2YYYYYYYYNNNT6YYYYYYYNNNNT3YYYYYYYYYNN
表2
LOCATIONB1B2B3B4B5B6B7B8B9B10T41222222222T52111111111T73333333333T14444477777T25555545555T66666654444T37777766666
表3
状态需要调整的TTAB依赖节点集合调整范围集合B1T4T5T5B2T5NNB3T4T5NB4T7NNB5T1T5、T4、T2、T6、T3T2、T6、T3B6T2T6T6B7T6NNB8T2T5T4T6NB9T3T5NB10T1T5T4T2T6T3N
开始调整时,TTAB链表的顺序为T4、T5、T7、T1、T2、T6和T3,在辅助结构表中,所有的TTAB节点都初始化为待调整状态:
第一调整状态:选取第一个需要调整的T4(表1),获取调整范围集合T5(表3),由于Location(T4)<Location(T5)(表2),在TTAB链表中,调整T4的位置到T5之后。
第二调整状态:选取T5需要调整,获取调整范围集合为空,确定在TTAB链表中,T5调整完毕,将表1中T5的位置调整属性设置为“N”。
第三调整状态:选取T4需要调整,获取调整范围集合为空,确定在TTAB链表中,T4调整完毕,将表1中T4的位置调整属性设置为“N”。
第四调整状态:选取T7需要调整,获取调整范围集合为空,确定在TTAB链表中,T7调整完毕,将表1中T7的位置调整属性设置为“N”。
第五调整状态:选取T1需要调整,获取调整范围集合为{T2、T6、T3},选取LOCATION最大的节点为T3,由于Location(T1)<Location(T3),在TTAB链表中,调整T1的位置到T3之后。
第六调整状态:选取T2需要调整,获取调整范围集合为{T6},由于Location(T2)<Location(T6),在TTAB链表中,调整T2的位置到T6之后。
第七调整状态:选取T6需要调整,获取调整范围集合为空,确定在TTAB链表中,T6调整完毕,将表1中T6的位置调整属性设置为“N”。
第八调整状态:选取T2需要调整,获取调整范围集合为空,确定在TTAB链表中,T2调整完毕,将表1中T2的位置调整属性设置为“N”。
第九调整状态:选取T3需要调整,获取调整范围集合为空,确定在TTAB链表中,T3调整完毕,将表1中T3的位置调整属性设置为“N”。
第十调整状态:选取T1需要调整,获取调整范围集合为空,确定在TTAB链表中,T1调整完毕,将表1中T1的位置调整属性设置为“N”。
至此,TTAB链表调整完成。在执行计划树时,就可以将TTAB链表中的所有TTAB节点全部按顺序提前计算生成并作为临时表进行缓存。TTAB链表顺序的调整保证了某个TTAB节点生成时,其依赖的其他TTAB节点已经生成了,只需要从这些依赖TTAB节点中获取数据即可。
续前例,子树P4、P5重复出现了三次,若按照传统的流水线处理机制,每次都需要计算生成P5节点的数据,传输给P4节点,P4节点再计算生成数据传输给上一层节点。而使用本实施例的方法,P5和P4、P5对应的TTAB节点T5和T4都已在计划树处理的最初就作为临时表生成备用,执行计划树时碰到P4、P5子树只需要直接获取T4中的数据即可,因此省去了两次计算生成的时间。
本实施例的方法在计划树中重复子树重复出现的次数越多时性能提高效果越明显。在大数据量分析型数据库中,SQL语句常常非常复杂,数据库管理系统生成的执行计划树中重复子树个数及重复出现的次数都较多,使用本实施例的方法可以大幅提升系统性能。
第四实施例
在图10中示出了本发明第四实施例的一种面向数据库管理系统的计划树优化装置的结构图,如图10所示,所述装置包括:
TTAB子树生成模块101,用于根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系。
TTAB链表建立模块102,用于使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表。
TTAB节点顺序调整模块103,用于根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。
本发明实施例通过根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序的 技术手段,解决了现有的流水线机制需要逐条生成记录并在子树中重复地传输相同的记录数据,因而造成极大资源浪费的技术问题,实现了有效地精简了计划树,避免了相同子树的重复计算处理,提高了数据库管理系统的性能的技术效果。
在上述各实施例的基础上,所述TTAB子树生成模块可以用于:
获取所述计划树中根节点相同的至少两个相等树作为重复子树;
在所述重复子树中,添加TTAB节点作为新的根节点,生成TTAB子树。
在上述各实施例的基础上,所述TTAB子树生成模块还可以用于:
在所述TTAB子树中,如果确定第一TTAB子树中重复子树为第二TTAB子树中重复子树的子树,则标记第二TTAB节点依赖于第一TTAB节点。
在上述各实施例的基础上,所述TTAB链表建立模块具体可以包括:
初始化子模块,用于初始化TTAB链表;
第一当前节点设置子模块,用于将所述计划树的根节点设为当前节点;
前序遍历子模块,用于从所述当前节点开始,前序遍历所述计划树,如果获取到一个重复子树的根节点,触发TTAB节点代替子模块;
所述TTAB节点代替子模块,用于将获取的所述重复子树作为操作子树,并在所述计划树中,将所述操作子树使用对应的TTAB子树的TTAB节点代替;
TTAB链表添加子模块,用于如果所述TTAB节点未记录于所述TTAB链表中,则将所述TTAB节点添加于所述TTAB链表中,触发下一级子树遍历子模块;否则,直接触发所述下一级子树遍历子模块;
所述下一级子树遍历子模块,用于如果所述TTAB节点对应的TTAB子树包括下一级重复子树,则以前序遍历的方式获取所述下一级重复子树的根节点,触发所述TTAB节点代替子模块;否则,触发第二当前节点设置子模块;
所述第二当前节点设置子模块,用于将所述操作子树的根节点设为当前节点,触发前序遍历子模块。
在上述各实施例的基础上,所述TTAB节点顺序调整模块具体可以包括:
辅助结构表构建子模块,用于构造辅助结构表,以标识所述TTAB链表中TTAB节点的位置调整属性,其中,所述位置调整属性包括待调整属性和已调整属性,且所述辅助结构表中的各TTAB节点的位置调整属性初始化为待调整属性;
当前位置计算子模块,用于根据所述TTAB节点在所述TTAB链表中顺序,计算各TTAB节点的当前位置值;
当前操作节点获取子模块,用于根据所述辅助结构表,顺序获取所述TTAB链表中的一个待调整属性的TTAB节点,作为当前操作节点;
TTAB依赖节点集合获取子模块,用于根据所述TTAB节点的依赖关系,获取当前操作节点所依赖的TTAB依赖节点集合;
TTAB调整范围集合生成子模块,用于在所述TTAB依赖节点集合中,删除已调整属性的TTAB节点,生成TTAB调整范围集合;
第一属性调整子模块,用于如果所述TTAB调整范围集合为空集合,则将当前操作节点的位置调整属性修改为已调整属性,触发所述当前操作节点获取子模块;否则,触发最大位置节点获取子模块;
所述最大位置节点获取子模块,用于在所述的调整范围集合中,找到当前位置值最大的TTAB节点作为最大位置节点;
第二属性调整子模块,用于如果当前操作节点的当前位置值大于最大位置节点的当前位置值,则将当前操作节点的位置调整属性修改为已调整属性,触发所述当前操作节点获取子模块;否则,在所述TTAB链表中,将当前操作节 点的位置调整至最大位置节点的位置之后,触发所述当前位置计算子模块。
在上述各实施例的基础上,所述TTAB依赖节点集合获取子模块具体可以包括:
初始化子单元,用于将当前操作节点所依赖的TTAB依赖节点集合初始化为空集合,并将当前操作节点作为待查找节点;
依赖节点获取子单元,用于如果根据所述TTAB节点的依赖关系,获取所述待查找节点所依赖的TTAB节点,触发节点添加子单元;否则,直接获取所述TTAB依赖节点集合;
所述节点添加子单元,用于将获取的所述TTAB节点添加于所述TTAB依赖节点集合中,并将所述TTAB依赖节点作为新的待查找节点,触发所述依赖节点获取子单元
本发明实施例所提供的面向数据库管理系统的计划树优化装置可用于执行本发明任意实施例提供的面向数据库管理系统的计划树优化方法,具备相应的功能模块,实现相同的有益效果。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以通过如上所述的服务器和客户端实施。可选地,本发明实施例可以用计算机装置可执行的程序来实现,从而可以将它们存储在存储装置中由处理器来执行,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等;或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

面向数据库管理系统的计划树优化方法和装置.pdf_第1页
第1页 / 共21页
面向数据库管理系统的计划树优化方法和装置.pdf_第2页
第2页 / 共21页
面向数据库管理系统的计划树优化方法和装置.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《面向数据库管理系统的计划树优化方法和装置.pdf》由会员分享,可在线阅读,更多相关《面向数据库管理系统的计划树优化方法和装置.pdf(21页珍藏版)》请在专利查询网上搜索。

本发明实施例公开了一种面向数据库管理系统的计划树优化方法和装置。所述方法包括:根据计划树中的重复子树,生成以TTAB节点为根节点的TTAB子树,并获取所述TTAB子树中TTAB节点的依赖关系;使用所述TTAB节点优化所述计划树中的重复子树,并建立与TTAB节点对应的TTAB链表;根据所述TTAB节点的依赖关系,调整所述TTAB链表中TTAB节点的顺序。本发明解决了现有的流水线机制需要逐条生成记录并。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1