迭代器模型
对于基于磁盘的数据库来说
,迭代器模型将能够在从个磁盘获取下一个元组之前,对前一个元组执行尽可能多的工作。
如果所有的数据都在内存中了,那么迭代器模型就没有什么优势了。因为会存在大量的函数调用,会造成巨大的开销。
物化模型
操作符一次性返回所有的元组。
缺点:
- 没有办法控制输出,例如:想要限制一次只输出 10 个元组,这是不可能的。
- 不适合 OLAP, 适合 OLTP
好处:
- 执行的开销会变小,减少了函数的调用次数、跳转、分支等。
矢量化模型
像迭代器模型一样,每个操作符都会实现一个 next 函数,但不同的是,每一次 next,会返回一批元组。
计划执行方向
Top-to-Bottom(Pull)
从根节点开始,逐步向下执行,直到叶子节点。 元组总是又函数调用传递。
Bottom-to-Top(Push)
从叶子节点开始,逐步向上执行,直到根节点。
push_based 迭代器模型
并行执行
挑战
olap 具有瘫痪和不可并行化阶段