2-way external merge sort
why is it needed
-
将关系按排序键构建索引,并使用该索引按排序顺序读取关系。
-
按排序顺序读取元组可能会导致每条记录进行一次磁盘访问,这可能非常昂贵,因为记录的数量可能远远大于块的数量
-
如果这些record可以在硬盘上成连续的分配,那么这些访问、读取数据时就可以快很多,所以我们需要对这些数据进行物理的排序。
Sorting operation
- relations可以完全被存放在ram中的情况:使用标准的排序技术,如快速排序、归并排序
- relations的size大于可以使用的ram:使用外部归并排序算法(external sorting)
每一个pass都涉及到io,sort 完后将文件放回到disk中,再进行下一个pass