两趟扫描算法的基本思想
- 整个关系一元操作的问题:任何一个元组需要与所有元组进行比较,才能确定最终结果。这些需要内存
内存不够存储整个关系怎么办??——两趟 / 多趟算法 - 两趟算法基本思路:
(1)第一趟:划分子集,使子集具有某种特性(有序/具有相同散列值)。处理好之后将结果写回磁盘
将磁盘上的数据重新建立数据结构
(2)处理全局性的内容操作。多子集归并、相同散列值操作
两阶段多路归并排序 TPMMS
- (1)内排序问题:待排序数据可一次性装入内存中
插入排序、选择排序、冒泡排序
(2)外排序问题:待排数据不能一次性装入内存 - 算法思路:
(1)第一趟:划分为子集合并子集排序
(2)第二趟:各子集归并,纵向处理 - 算法复杂性:3B® / 4B®
- 算法应用条件:
子集合数<Bmemory
子集合块数<Bmemory
大数据集块数<Bmemory*Bmemory
大数据集块数>Bmemory*Bmemory ,则可以采用多趟归并排序算法