执行引擎

AnalyticDB PostgreSQL版搭载自研向量执行引擎,针对火山模型的缺点和现代硬件的特点,结合向量化计算、即时编译(Just In TIme,JIT)等技术,专注于执行性能、特别是OLAP场景的执行性能提升。

执行引擎

向量化计算模型

AnalyticDB PostgreSQL版向量化执行引擎对火山模型进行了优化,改逐行传递数据为逐批传递数据,采用火山模型结合向量化计算模型的方式来提升执行性能。每个算子以batch的形式拉取数据,每个batch包含多行数据,可以根据实际需求按照列优先或者行优先的格式存储数据。

向量化计算模型

即时编译技术 (Just In Time, JIT)

AnalyticDB PostgreSQL版执行引擎设计引入了即时编译技术,采用LLVM实现了动态代码生成。在一些核心操作上采用JIT技术,解决了高级语言抽象程度过高带来的性能开销,可以对表达式计算、复杂逻辑操作进行汇编级优化,最大化压缩指令的规模,数倍提升引擎的执行速度。

jit

内存管理优化

AnalyticDB PostgreSQL版执行针对HTAP的任务需求,在执行引擎中对内存管理的效率进行了优化。

  • 内存复用:向量化执行引擎中每个算子一次是生成多行执行结果、并存储在一块行式/列式内存空间中。该空间会在算子间最大可能复用,避免重复的内存申请/释放。

  • 批量内存分配:向量化执行引擎预测计算每个算子需求的内存空间,结合执行引擎Batch化数据模型进行批量内存分配,避免过于碎片化的内存分配。内存

  • 最小内存操作原则:减少不必要的内存申请/重置/释放操作,最大化地提升内存操作性能。