向量化执行引擎

Hubble支持面向列的查询。大部分的数据库执行查询计划,采用逐行获取表数据的方式。

面向行的执行模式可以在联机交易(OLTP)场景中保证很好的性能,而在分析性业务场景(OLAP)中的表现并不好。Hubble的向量化执行引擎,通过对特定于类型的列数据,使用特性的组件进行批处理查询的方式,极大地改进了面向行的执行的性能。

配置方式

默认配置情况下,在面对确定使用内存计算的查询任务,并满足可支持的数据类型时,将会使用向量化执行引擎。

可使用当前session对其进行配置,具体参数名称为vectorize,参数详情如下:

参数名称详情
auto内存中执行的查询时,尽可能的使用向量化执行引擎,而不需要将中间结果溢出到磁盘。
experimental_on所有查询都使用向量化执行引擎,不建议在生产环境使用此配置,避免出现内存问题。
off对于所有查询,都不需用向量化执行引擎。

向量化执行的效率随着处理的行数的增加而提高。如查询的是一张非常小表时,那面向行的执行方式效率会远比向量化执行要快。默认配置下,如果表中数据少于1000行,将不会使用向量化执行引擎。设置属性名为vectorize_row_count_threshold

支持的数据类型

  • STRING
  • UUID
  • BYTES
  • DATE
  • FLOAT
  • INT
  • BOOL
  • TIMESTAMP

示例

设置向量化策略:

show vectorize;

vectorize  
+---------+
  auto       
(1 row)
set vectorize = 'auto'

设置向量化开启阈值:

show vectorize_row_count_threshold;

vectorize_row_count_threshold  
+-----------------------------+
  1000                           
(1 row)
set vectorize_row_count_threshold=10000;