[发明专利]并行数据库中算子复用的实现方法有效
申请号: | 201110259524.9 | 申请日: | 2011-09-05 |
公开(公告)号: | CN102323946A | 公开(公告)日: | 2012-01-18 |
发明(设计)人: | 李阳;何清法;顾云苏;冯柯;蒋志勇;徐岩;饶路;李晓鹏;刘荣;赵婧 | 申请(专利权)人: | 天津神舟通用数据技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 300384 天津市华苑产业区*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 数据库 算子 实现 方法 | ||
技术领域
本发明涉及一种数据库系统,尤其是涉及一种并行数据库的算子复用的实现方法。
背景技术
随着信息技术的发展和普及,数据正在以指数速度迅速膨胀,处理海量数据越来越成为计算机领域面临的重要问题。数据库领域兴起的对OLAP、DSS、数据挖掘等的研究本质上都是对海量数据处理的研究。
目前解决海量数据处理问题比较流行的技术是并行查询技术和集群技术。并行查询技术一直以来都是数据库领域的研究热点,学术界提出了多种并行查询的体系架构:Share-Everything(完全共享)架构、Share-Memory(共享内存)架构、Share-Disk(共享磁盘)架构以及Share-Nothing(无共享)架构。Share-Memory架构和Share-Everything架构都会共享主存储器,进程或线程会通过内存交换数据。但是目前流行的Share-Memory和Share-Everything架构的并行数据库系统都是使用共享内存进行通信和数据交换,而没有利用多个并行进程或线程之间的算子复用。在基于分区的并行架构下,多个线程或进程独立的执行各自的任务,同一条查询语句的查询内并行往往是多个进程或线程执行结构几乎完全相同的语句,所不同的只是其中涉及到的部分表不同。
在这种情况下,各个进程或线程都把各自的查询执行一遍,而不考虑算子的复用是对资源的极大浪费。
发明内容
为了解决上述问题,本发明提供了一种在SM架构的并行数据库中通过实现算子复用技术来提高系统的资源利用率和性能。
本发明采用如下的技术方案:
步骤1、使用普通的查询规划方法,为查询生成串行的查询计划,所述查询计划是一个二叉树结构;
步骤2、自顶向下扫描执行所述查询计划,寻找可复用的物化类算子,并更改查询计划结构,将线程级物化算子改为全局复用的物化算子;
步骤3、对步骤2生成的更改后的查询计划进行并行化处理,生成用于多个线程并行执行的计划森林;
步骤4、对步骤3生成的计划森林进行全局复用算子合并处理,生成用于可供多个线程并行执行且可复用物化算子的有向图计划;
步骤5、各个线程并行执行所述有向图中的各自的计划部分,第一个执行到全局复用算子的线程称之为主线程,由主线程锁住该全局复用算子并真正执行该算子及其以下的计划,其他线程等待;
步骤6、所述主线程执行完该算子之后解锁,其他线程开始从该全局复用算子中读取数据并继续各自的计划树;
步骤7、所述主线程等待所有的计划都读取完毕全局复用算子的数据之后释放该算子物化的数据。
本发明是对SM架构的并行数据库查询执行流程的优化,关键特点在于对多个线程中相同的物化算子进行共享。和普通的并行查询执行流程相比,不仅节省CPU和内存资源,还将少了IO读取,不增加任何成本。
附图说明
下面结合附图和具体实施方式对本发明作进一步的说明。
图1示出了步骤1生成的计划树结构的示意图;
图2示出了步骤2的计划树结构的示意图;
图3示出了步骤3的计划森林结构的示意图;
图4示出了步骤4的有向图计划结构的示意图;
图5示出了计划执行阶段的数据流程图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的详细描述:
通过在数据库的查询优化阶段对多线程的并行计划进行扫描从中寻找可供复用的算子,将可供复用的算子修改为全局共享算子,并更改计划结构,将计划树变成计划森林,并进一步改写成有向图。通过并行执行该有向图计划,在计划执行过程中复用物化算子的中间结果。
本方法主要包括以下步骤:
计划生成阶段:
步骤一:
使用普通的查询规划方法,为查询生成串行的查询计划,该查询计划是一个二叉树结构。其中查询涉及到分区表,因此部分叶节点是对分区表的扫描。如图1所示,某一个查询为select*from A,B,P where A.a=B.b and A.a=P.p;其中A、B不是分区表,P为分区表,子分区为P1,P2。该计划树表明在该查询中,首先对B表创建Hash表,由A和B表通过HashJoin方式进行连接,然后对A、B的连接的结果创建Hash表,再和P表通过HashJoin方式进行连接。
步骤二:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津神舟通用数据技术有限公司,未经天津神舟通用数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110259524.9/2.html,转载请声明来源钻瓜专利网。