基于排序的两趟算法描述.ppt

基于排序的两趟算法 两趟算法介绍 当在关系上执行关系代数操作时,若关系大于一趟算法能够处理的范围,则使用两趟(多趟)算法:来自于操作对象关系中的数据被读到内存,以某种方式处理,再写回磁盘,然后重新读取磁盘以完成操作。 两趟算法介绍 基于排序操作来实现两趟算法的一般过程:对于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,将其拷贝至输出缓冲区,同时删除输入缓冲区中

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档