特性调优

可以通过调整KOVAE的参数配置,有效提升服务器性能。

下文提供内存参数、线程参数和hash参数的调优建议,如表1表2表3所示。

表1 内存参数调优建议

参数名称

参数含义

优化建议

kovae_memory_max_size

当开启内存控制,该参数设置越大,就可以支持更多的并行查询和可以设置更大的kovae_memory_buffer_size。

当内存充裕时,建议设置更大的kovae_memory_max_size值。

kovae_memory_buffer_size

当查询存在落盘算子(排序、聚合、hashjoin、物化)且查询表的数据量大的时候,该参数会对性能产生严重的影响。

该参数设置越大性能越好,但当没有开启内存控制时,该参数设置过大可能会触发OOM,当开启内存控制时,该参数设置过大可能会触发内存不足导致查询失败,建议设置为KOVAE最大可用内存的十分之一。

kovae_serial_mode

当开启内存控制,且只有一个客户端在执行查询时,可以通过开启串行模式来提高查询性能。

开启串行模式后,KOVAE会自动调节落盘算子的缓存大小,尽量减少数据落盘。

表2 线程参数调优建议

参数名称

参数含义

优化建议

kovae_threadpool_size

线程池中最大可保留的线程数。

建议设置为可用CPU核数的3~5倍。

kovae_parallel_threads

单个并行查询可申请的最大工作线程数。

默认值为2,当会话数很少时(即会话数小于5时),建议设置为可用CPU核数。一般可设置为kovae_threadpool_size/大概率同时执行的并行查询数会话数的值。

kovae_threadpool_stalltime

当线程使用达到上限时,该值越小总体性能越好,但新的查询请求会等待更久,出现饿死情况。

当追求总体性能时,可以调低kovae_threadpool_stalltime值。

innodb_parallel_read_threads

并行读表的线程数。

当会话数少时,可以通过提高该值来加快查询速度,建议设置为可用CPU核数/大概率同时执行的并行查询数会话数的值。

表3 hash参数调优建议

参数名称

参数含义

优化建议

kovae_aggregator_hash_type

Agg算子hash分组时的工作模式。

当group by的列的分组数很少时,将kovae_aggregator_hash_type的参数值设置为1可以提高查询速度。

表4 典型配置(以鲲鹏920 7265处理器 + 512GB内存 + 1TB硬盘为例)

参数

典型配置值

推荐配置说明

kovae_threadpool_size

256

设置为CPU core数的2倍,例如鲲鹏920 7265处理器2P服务器场景下,设置为128core * 2 = 256。

kovae_parallel_threads

64

设置为kovae_threadpool_size / 连接数的值。以一般OLAP场景下4个连接数为例,则设置为kovae_threadpool_size / 4 = 64。

innodb_parallel_read_threads

32

设置为CPU core数 / 连接数的值。以一般AP场景下4个连接数为例,则设置为128 / 4 = 32。

kovae_memory_max_size

200*1024*1024*1024,即200GB

设置约束关系为MySQL innodb_buffer_pool_size + kovae_memory_max_size <= 物理机内存的70%。

例如,物理机512GB内存*70%为358.4GB,100GB的TPC-H库的innodb_buffer_pool_size的典型设置值为150GB,得到kovae_memory_max_size的典型设置值为200GB。

kovae_memory_buffer_size

20*1024*1024*1024,即20GB

推荐设置为kovae_memory_max_size的10%。

其他参数

默认即可

-