- pull
- volcano
- push
- callback
- consumer-producer / DAG
- single thread
- multi thread
- thread pool
- no thread pool
语言有llvm | 语言没有llvm,且不使用llvm | 语言没有llvm,且使用llvm | |
---|---|---|---|
pull | 解释型 | 解释型 | 解释型 |
push | 编译型90% | 编译型80% | 编译型100% |
- table
- batch
- stream
- logical plan
- standalone physical plan
- distributed physical plan
- DAG: stage / pipeline
- source
- transform
- sink
- operator: writer + reader / sender + receiver
- merge
- shuffle / redistribution / repartition
- broadcast
- DAG: stage / pipeline
- 角色
- master
- worker
- client
- 流程
- worker register master
- client send sql to master
- master parse sql to distributed physical plan
- master send distributed physical plan to worker
- master send begin flag to source
- worker execute and data flow between distributed physical plan
- sink send end flag to master
- master send data to client
- Volcano-An Extensible and Parallel Query Evaluation System
- Query Evaluation Techniques for Large Databases
- MonetDB/X100: Hyper-Pipelining Query Execution
- Rethinking SIMD Vectorization for In-Memory Databases
- Efficiently Compiling Efficient Query Plans for Modern Hardware
- Everything You Always Wanted to Know About Compiled and Vectorized Queries But Were Afraid to Ask
- Vectorization vs. Compilation in Query Execution
- How to Architect a Query Compiler
- How to Architect a Query Compiler, Revisited
- Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Framework for the Many-Core Age
- Push vs. Pull-Based Loop Fusion in Query Engines
- Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last
- Adaptive Execution of Compiled Queries
- Multi-Core, Main-Memory Joins: Sort vs. Hash Revisited
- Looking Ahead Makes Query Plans Robust