Advertisement

2023年5月8日 数据库流水操作与物化分析

阅读量:

摘要:

在数据库查询模型中,较为经典的架构是火山模型,其本质是一种流水线式的操作方式,例如MySQL所采用的模式。

与之相对应的是物化模型,例如MonetDB所实现的结构。

自MonetDB发布开创性论文以来,列存储数据库几乎普遍采用物化模型,并在一定程度上融合了流水线操作的方式,例如DuckDB的设计理念。

以下将对相关内容进行简要的探讨与分析。

流水线操作与火山模型应用

  1. 这种模型更为广为人知的称呼是火山模型
  2. 其较为突出的特点在于,每个操作符或算子内部均以迭代器的形式进行数据传递
  3. 在函数实现方面,其核心机制是以next作为操作主体,可参考mysql中sub_select函数的设计方式
  4. 因为操作符是按元组逐个进行传递和计算,因此内存占用可以维持在单个元组及投影结果集的范围内
  5. 相较于以磁盘块为单位的数据读取方式,该模型是以元组为基础进行处理,这导致磁盘IO次数显著增加
  6. 流水线操作对于cpu的cache和pipeline结构并不友好,每个操作符的迭代器中都包含分支判断与预测机制,进而造成cache和pipeline的预测失效。这一缺陷也引起了monetdb的高度批评,并促使monetdb采用了全量物化模型作为替代方案
  7. 若从积极角度分析,由于各操作符均被纳入流水线处理

全部评论 (0)

还没有任何评论哟~