cmu15445 查询执行- 上
date
Jul 15, 2023
slug
query-execution-1
status
Published
tags
15445
Database
summary
该文章介绍了数据库查询执行的三种处理模型:迭代模型、物化模型和向量批处理模型,以及访问方法:顺序扫描和索引扫描。此外,还讨论了修改查询和表达式求值。
type
Post
AGENDAProcessing ModelsAccess MethodsSEQUENTIAL SCANSEQUENTIAL SCAN:OPTIMIZATIONSINDEX SCANModification QueriesEXPRESSION EVALUATION 表达式求值
AGENDA


Processing Models
Approach 1:Iterator Model
- 也叫火山
- 也叫 pipeline
Approach 2:Materialization Model 代表作 monetdb
Approach 3:Vectorized Batch Model 代表作 x100 monetdb duckdb
三者的区别在
处理的 tuple 数量级不同
火山 一个
物化 全部
向量 部分 batch
Access Methods

SEQUENTIAL SCAN


SEQUENTIAL SCAN:OPTIMIZATIONS
主要讲了最后一点 Data Skipping

第一种 近似查询(有损)
第二种 区域地图(无损)
预先计算所有的 agg


- stonedb 的 datapack 的元数据就是一些 zone maps

INDEX SCAN
有索引扫描就用不上 sc 了


Modification Queries


andy 的工资加了两次 本来 999 ,加到 1099 还是小于 1100
这个更新问题被称为万圣节问题

EXPRESSION EVALUATION 表达式求值

举例

这种方式很慢,有一些编译优化的手段让 banch 变成 for


JIT: just at time java 的一种技术
java 把代码字节码编译成特殊形式 比如 for 就编译成二进制 可以加速
AOT: ahead of time
提前把字节码编译成二进制,例如 安卓程序的安装过程