[发明专利]基于任务驱动和双缓冲机制的并行排序方法有效

专利信息
申请号: 201210510033.1 申请日: 2012-12-04
公开(公告)号: CN102968496A 公开(公告)日: 2013-03-13
发明(设计)人: 王效忠;冯柯;蒋志勇;赵殿奎;杨永亮;张巍;关刚;孟勃荣 申请(专利权)人: 天津神舟通用数据技术有限公司
主分类号: G06F17/30 分类号: G06F17/30;G06F9/38
代理公司: 天津盛理知识产权代理有限公司 12209 代理人: 王利文
地址: 300384 天津市南开*** 国省代码: 天津;12
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 任务 驱动 缓冲 机制 并行 排序 方法
【说明书】:

技术领域

发明属于数据库技术领域,特别涉及一种基于任务驱动和双缓冲机制的并行排序方法。

背景技术

排序是计算机中经常进行的操作之一,其目的是将“无序”的记录调整为根据排序键“有序”的记录。排序分为内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序为内部排序;反之,若排序的记录数量很大,整个排序过程无法在内存中完成,则称此类排序为外部排序。

排序也是数据库中非常重要的功能,其在数据库中的作用不可替代,使用非常普遍。除了用户指定的排序操作外,建立索引和对表进行聚簇都离不开排序,有些连接、聚集函数甚至集合操作的实现都需要借助排序。大数据时代已经到来,数据库中存储的数据量越来越大,对数据排序的时间也越来越长。当数据量大到一定程度以后,使用水平分区、垂直分区和压缩等技术,都无法将数据量降低到可以进行内部排序的程度。目前普通的排序算法对1GB的数据排序可以在内存中进行,只需要几秒钟时间;对于10GB的数据排序,因无法全部装入内存而只能进行外部排序,时间就会增加到几分钟;对于100GB的数据排序需要数小时甚至更多的时间。

一些在线交易系统一天就能产生几GB或者更多的数据,为了不影响在线应用的性能和保存历史数据,必须在交易系统压力不大时将在线数据导入结算系统中。以防在线交易系统受到影响,一般会选择某个晚上将一周或者一月的在线数据导入到结算系统中。结算系统为了提高查询性能,在数据入库前都需要建立聚簇索引,建立聚簇索引就需要排序,目前大部分数据库对几百GB数据排序都需要几小时,再加上数据入库的时间,难以保证在交易系统空闲时间内完成,这对于在线交易系统来说是致命的。

因内存大小限制,大数据无法全部装入内存进行内部排序,因而需要外部排序。和内部排序相比,外部排序时,磁盘读写速度太低,整个排序过程中输入输出成为瓶颈。目前所有的数据库都有数据缓冲区和排序缓冲区,数据必须先从磁盘读入数据缓冲区,再从数据缓冲区拷贝到排序缓冲区才能进行排序,排序结束后再次拷贝到数据缓冲区才能写出到外存中,因拷贝动作都由排序线程完成,发生两次内存拷贝直接导致性能降低。更重要的是大部分数据库都是一次性将排序缓冲区填满以后再进行内存排序,导致中央处理器大部分时间都要等待输入输出完成,当中央处理器进行内存排序时输入输出又处于空闲状态,无法充分利用中央处理器和输入输出资源,以致排序性能低下。

发明内容

本发明的目的在于克服现有技术的不足,提供一种设计合理、速度快、效率高的基于任务驱动和双缓冲机制的并行排序方法。

本发明解决其技术问题是采取以下技术方案实现的:

一种基于任务驱动和双缓冲机制的并行排序方法,包括以下步骤:

步骤1:分块内存排序步骤:将外存文件划分成一定大小的微小桶并读入内存,每读入一个微小桶就对其进行快速排序,当没有更多内存可用或者没有更多数据时,对所有微小桶进行内存归并,然后写出到外存中,形成一个有序的桶;

步骤2:外存归并步骤:对外存中的桶进行归并,并将归并结果输出到最终有序的文件中,生成有序的排序结果。

而且,所述步骤1包括的具体步骤为:

⑴根据文件大小生成一个磁盘读任务,用于读取一个微小桶的数据到内存对应的排序缓冲区中,将此磁盘读任务添加到磁盘读线程的任务队列的队尾;

⑵再生成一个磁盘读任务,添加到磁盘读线程的任务队列的队尾;

⑶等待前一个磁盘读任务的完成;

⑷分析读入内存排序缓冲区的微小桶的数据,生成元组结构和指向元组的指针数组,产生一个快速排序任务,并添加到快速排序线程组任务队列的队尾;

⑸循环执行⑵到⑷,直到没有更多的磁盘读任务或者没有更多的内存;

⑹等待最后一个磁盘读任务的完成,然后分析最后一个微小桶的数据,再产生一个快速排序任务,并添加到快速排序线程组任务队列的队尾;

⑺等待所有的快速排序任务完成;

⑻生成一个内存归并任务,用于归并内存中所有的微小桶的数据到外存的桶中,并添加到快速排序线程组任务队列的队尾;

⑼等待内存归并任务完成;

⑽重复执行⑴到⑼,直到没有更多的数据。

而且,所述磁盘读任务的处理方法为:在指定的文件中,从指定的位置开始读取指定大小的数据块,存入指定的微小桶缓冲区中,输入输出完成以后给主线程发送磁盘读任务已经完成信号。

而且,所述的快速排序任务的处理方法为:对元组指针数组进行快速排序。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津神舟通用数据技术有限公司,未经天津神舟通用数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201210510033.1/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top