基于排序的两趟算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

基于排序的两趟算法

两趟算法介绍

当在关系上执行关系代数操作时,若关系大于一趟算法能够处理的范围,则使用两趟(多趟)算法:来自于操作对象关系中的数据被读到内存,以某种方式处理,再写回磁盘,然后重新读取磁盘以完成操作。

两趟算法介绍

基于排序操作来实现两趟算法的一般过程:对于B(R)X的关系R,将它分为大小为X(X为单个内存缓冲区的大小)的块并排序,然后对于某种任意子表在任意时刻只占用一个内存块(内存缓冲区)的方式,对排好序的子表进行排序。

两阶段多路归并排序(TPMMS)

阶段1:不断将R中的元组放入M个缓冲区,利用内部排序算法对他们排序,将得到的子表放入外存。

阶段2:对排好序的子表进行归并(M-1个输入缓冲区,1个输出缓冲区)。

两阶段多路归并排序(TPMMS)

TPMMS代价分析

在第2阶段,由于输出缓冲区的存在,子表数目不能超过M-1.设B(R)为关系R占用的块数,每个子表包含M个块,则要求B≦M(M-1)或近似为B≦M2.

算法在第一趟时读入B个块,并在排序后将子表写回磁盘,故磁盘I/O次数为2B;再第二阶段,子表被读入内存,进行归并后再次被写回,则了两趟总的I/O为4B(若归并后的结果用于其他操作而非写回磁盘则为3B)。

利用排序去重复

阶段1:与原始TPMMS算法相同。

阶段2:选中输入缓冲区的第一个未被选过的元组t,将其拷贝至输出缓冲区,同时删除输入缓冲区中所有此元组,而不是进行排序。

空间代价:B≦M2 I/O代价:3B

注意:每一个输入缓冲区中元组都是内部有序的。

利用排序进行分组和聚集

阶段1:将R中的元组每次读取M个块到内存,并对其分组属性进行排序,将排好序的子表写回外存。

阶段2:选取足够的内存缓冲区存放子表块,对于每个缓冲区的第一个元组,反复查找具有分组属性v最小值的元组,并使其成为下一分组。

阶段3:在此分组上检查符合分组属性v的元组,并计算聚集。

空间代价:B≦M2 I/O代价:3B

基于排序的一个简单连接算法

当某一关系的缓冲区中不再有关键字y的元组时,删除另一关系中所有具有y的元组。

算法要求用于连接的属性具有公共值的所有元组必须能够完全装入M个缓冲区。

空间代价:B(R)≦M2且B(S)≦M2 I/O代价:5(B(R)+B(S))

连接算法的改进

阶段1:用Y作为关键字排序,为R和S创建大小为M的排序子表;将每一个子表的第一块装入缓冲区。

阶段2:重复地在所有输入缓冲区的第一个元组中查找具有连接属性最小值y的元组,并输出两个关系中所有具有此公共值的元组连接。

空间代价:B(R)+B(S)≦M2 I/O代价:3(B(R)+B(S))

Thankyou!

文档评论(0)

190****4390 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档