优化的目标
CPU层面
cpu是多级流水线操作,所以我们的目标是让每个处理器的每个部分都处于busy。多条流水线,我们没有依赖的指令可以放到不同的流水线里面。但是流水线如果遇到branch判断错误的话,就要flush掉
可以用值传递来代替跳转
查询执行模型
iteration model就是一次next调用返回一个tuple。但这个流水线或者叫火山模型会在join, order by,subquries被阻断。
物化模型就是一次返回所有的tuple。
矢量化模型就是batch,在上面两个模型之间,同时也可以通过simd优化。
查询的方向
查询操作并行化
水平并行化
通过插入exchange operator来汇集结果
垂直并行化
-------多条流水线并行
我的理解是:就是左边都是A和B建立起来的hashtable,然后C和D的探测可以在两路流水线并行。sql join 算法 时间复杂度_sql join复杂度_stevewongbuaa的博客-CSDN博客 【数据库内核】基于代价的优化器引擎之Join Order_join_order_Night_ZW的博客-CSDN博客
执行计划之表连接1:连接树(Join Trees) - 墨天轮