11 Query Execution
11. Query Execution
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
- Process per DBMS Worker
- Thread per DBMS Worker
- Embedded DBMS
Execution Parallelism
Inter-query Parallelism
Intra-query Parallelism
Intra-Operator(Horizontal)
通过硬件并行性动态确定,现在一般通过调度器来实现
Inter-Operator(Vertical)
投影运算符在下层运算符还没有执行完成时,就开始工作
Bushy
I/O Parallelism
Multi-Disk Parallelism
Database Partitioning
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LZY的Code生活!