2023年5月8日 数据库流水操作与物化分析
发布时间
阅读量:
阅读量
摘要:
在数据库查询模型中,较为经典的架构是火山模型,其本质是一种流水线式的操作方式,例如MySQL所采用的模式。
与之相对应的是物化模型,例如MonetDB所实现的结构。
自MonetDB发布开创性论文以来,列存储数据库几乎普遍采用物化模型,并在一定程度上融合了流水线操作的方式,例如DuckDB的设计理念。
以下将对相关内容进行简要的探讨与分析。
流水线操作与火山模型应用
- 这种模型更为广为人知的称呼是火山模型
- 其较为突出的特点在于,每个操作符或算子内部均以迭代器的形式进行数据传递
- 在函数实现方面,其核心机制是以next作为操作主体,可参考mysql中sub_select函数的设计方式
- 因为操作符是按元组逐个进行传递和计算,因此内存占用可以维持在单个元组及投影结果集的范围内
- 相较于以磁盘块为单位的数据读取方式,该模型是以元组为基础进行处理,这导致磁盘IO次数显著增加
- 流水线操作对于cpu的cache和pipeline结构并不友好,每个操作符的迭代器中都包含分支判断与预测机制,进而造成cache和pipeline的预测失效。这一缺陷也引起了monetdb的高度批评,并促使monetdb采用了全量物化模型作为替代方案
- 若从积极角度分析,由于各操作符均被纳入流水线处理
全部评论 (0)
还没有任何评论哟~
