数据库内核杂谈(五):如何实现排序和聚合
上篇文章中,我们着重介绍了对于一个SQL语句,数据库是怎么生成一个执行计划,并根据这个执行计划,一步一步地读取,计算并获得最后结果的。这一期,我们来聊一下两个非常重要的算子(operator, 上一期我把operator翻译成操作符,后来读了其他前辈写的文章,发现还是算子更贴切: 排序(Sort)和聚合(Aggregate)的实现。为什么要把这两个算子放在一起说呢?其实,它们之间有很多的共同点,比如都是Blocking的算子,即需要得到所有的输入tuple,才能完成计算后输出。这就使得它们会遇到...