11. Query Execution¶
约 420 个字 31 张图片 预计阅读时间 2 分钟
Processing Models¶
Iterator Model¶
迭代器模型,也叫做火山或者流水线模型
大量函数调用,指令缓存会很快失效
Materialization Model¶
生成所有数据然后返回给上层
对于 OLTP 表现不错,因为没有很大的表需要传递
Vectorized/Batch MOdel¶
在物化模型和火山模型间是一个良好的平衡
可以使用 SIMD 指令加速
Plan Processing Direction¶
自上而下对于上面的模型来说更加自然
Access Methods¶
Sequential Scan¶
Optimization¶
- Prefetching
- Buffer Pool Bypass
- Parallelization
- Heap Clustering
- 只是取回 RID,最后才取回真正的数据
- Late Materialization
- Data Skipping
Data Sipping¶
ZONE MAPS¶
one zone map in one zone,zone 的大小取决于我们的实现,一般为页
当 zone map 存储在区域之外,与索引的工作流程很像
Index Scan¶
Multi-Index Scan¶
Modification Queries¶
Halloween problem: 跟踪已经修改过的 record id,一般在操作符内部使用数据结构来跟踪,避免下一次再次修改
materailization 不会有这样的问题
Expression Evaluation¶
JIT compilation 可以高效地评估表达式;表达式会被编译成常量或函数
Scheduler¶
quickstep 的 scheduler 原型;工作线程池是无状态的、弹性可伸缩的,可以对查询进行优先级的执行
Process Models¶
Execution Parallelism¶
Inter-query Parallelism¶
Intra-query Parallelism¶
Intra-Operator(Horizontal)¶
通过硬件并行性动态确定,现在一般通过调度器来实现
Inter-Operator(Vertical)¶
投影运算符在下层运算符还没有执行完成时,就开始工作