详解数仓的向量化执行引擎
内容提要
本文介绍了GaussDB(DWS)中的向量化执行引擎,该引擎采用一次一批元组的执行模式,能够减少遍历执行节点的开销,提高CPU的有效利用率。向量化引擎与列存储结合,能够在底层扫描节点装填向量化的列数据。文章还介绍了行执行器和列执行器的区别,以及向量化引擎的性能优势。最后,文章提到了GaussDB向量化引擎的演进过程,包括Sonic向量化引擎和Turbo向量化引擎的推出,以及对各种算子的进一步优化。
关键要点
-
GaussDB(DWS)引入向量化执行引擎,采用一次一批元组的执行模式,提升CPU利用率。
-
向量化引擎与列存储结合,优化OLAP性能。
-
行存表适用于TP场景,列存表适用于AP场景,二者存储方式不同。
-
执行器是优化器与存储引擎的交互枢纽,采用Pipeline模式。
-
列执行器通过一次处理一列数据,提升CPU命中率,减少IO操作。
-
GaussDB支持行列混合执行,自动切换行列引擎。
-
向量化引擎性能显著优于行存引擎,减少函数调用和上下文切换。
-
向量化引擎的执行算子包括控制算子、扫描算子、物化算子和连接算子。
-
GaussDB向量化引擎经历了Sonic和Turbo的演进,持续优化性能。
-
总结了GaussDB向量化执行引擎的框架、原理和性能提升。
延伸问答
GaussDB中的向量化执行引擎有什么特点?
GaussDB中的向量化执行引擎采用一次一批元组的执行模式,减少遍历执行节点的开销,提高CPU利用率,并与列存储结合优化OLAP性能。
行存表和列存表有什么区别?
行存表按行存储,适用于TP场景;列存表按列存储,适用于AP场景,减少IO操作并提高数据压缩比。
向量化执行引擎如何提升性能?
向量化执行引擎通过一次处理一批数据,减少函数调用和上下文切换,提高CPU缓存命中率,从而显著提升性能。
GaussDB向量化引擎的演进过程是怎样的?
GaussDB向量化引擎经历了Sonic和Turbo的演进,持续优化性能,增加了对多种算子的支持和优化。
向量化执行引擎的执行算子有哪些?
向量化执行引擎的执行算子包括控制算子、扫描算子、物化算子和连接算子等。
GaussDB如何支持行列混合执行?
GaussDB支持行列混合执行,能够根据场景自动切换行引擎和列引擎,以优化性能。