详解数仓的向量化执行引擎

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

本文介绍了GaussDB(DWS)中的向量化执行引擎,该引擎采用一次一批元组的执行模式,能够减少遍历执行节点的开销,提高CPU的有效利用率。向量化引擎与列存储结合,能够在底层扫描节点装填向量化的列数据。文章还介绍了行执行器和列执行器的区别,以及向量化引擎的性能优势。最后,文章提到了GaussDB向量化引擎的演进过程,包括Sonic向量化引擎和Turbo向量化引擎的推出,以及对各种算子的进一步优化。

🎯

关键要点

  • GaussDB(DWS)引入向量化执行引擎,采用一次一批元组的执行模式,提升CPU利用率。
  • 向量化引擎与列存储结合,优化OLAP性能。
  • 行存表适用于TP场景,列存表适用于AP场景,二者存储方式不同。
  • 执行器是优化器与存储引擎的交互枢纽,采用Pipeline模式。
  • 列执行器通过一次处理一列数据,提升CPU命中率,减少IO操作。
  • GaussDB支持行列混合执行,自动切换行列引擎。
  • 向量化引擎性能显著优于行存引擎,减少函数调用和上下文切换。
  • 向量化引擎的执行算子包括控制算子、扫描算子、物化算子和连接算子。
  • GaussDB向量化引擎经历了Sonic和Turbo的演进,持续优化性能。
  • 总结了GaussDB向量化执行引擎的框架、原理和性能提升。
➡️

继续阅读