跳到主要内容
版本: 最新版本-3.5

表达式的 JIT 编译

本主题介绍如何在 StarRocks 中为表达式启用和配置 JIT 编译。

概述

即时编译 (JIT) 是指在运行时生成机器代码并执行它。与解释器相比,JIT 编译器可以显着提高最常用代码部分的执行效率。 StarRocks 支持对某些复杂表达式进行 JIT 编译,从而实现成倍的性能提升。

用法

从 v3.3.0 开始,StarRocks 默认对内存限制(由 BE 配置项 mem_limit 配置)大于或等于 16 GB 的 BE 节点启用 JIT 编译。 由于 JIT 编译会消耗一定的内存资源,因此默认情况下对内存小于 16 GB 的 BE 节点禁用 JIT 编译。

您可以使用以下参数启用和配置表达式的 JIT 编译。

jit_lru_cache_size(BE 配置)

  • 默认值:0
  • 类型:Int
  • 单位:字节
  • 是否可变:是
  • 描述:JIT 编译的 LRU 缓存大小。 它表示缓存的实际大小(如果设置为大于 0)。 如果将其设置为小于或等于 0,则系统将使用公式 jit_lru_cache_size = min(mem_limit*0.01, 1GB) 自适应地设置缓存(同时节点的 mem_limit 必须大于或等于 16 GB)。
  • 引入版本:-

jit_level(系统变量)

  • 描述:启用表达式 JIT 编译的级别。 有效值
    • 1:系统自适应地为可编译表达式启用 JIT 编译。
    • -1:为所有可编译的非常量表达式启用 JIT 编译。
    • 0:禁用 JIT 编译。 如果此功能返回任何错误,您可以手动禁用它。
  • 默认值:1
  • 数据类型:Int
  • 引入版本:-

功能支持

支持的表达式

  • +, -, *, /, %, &, |, ^, >>, <<
  • 使用 CAST 进行数据类型转换
  • CASE WHEN
  • =, !=, >, >=, <, <=, <=>
  • ANDORNOT

支持的运算符

  • 用于过滤的 OLAP Scan Operator
  • Projection Operator
  • 用于表达式的 Aggregate Operator
  • HAVING
  • 用于表达式的 Sort Operator

支持的数据类型

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INT
  • BIGINT
  • LARGEINT
  • FLOAT
  • DOUBLE