跳转至

引擎配置参数

AIR 提供了一系列可供调整的参数项,允许用户在不同的作用范围内(GLOBAL, CLUSTER, SESSION)进行参数的调整和修改, 参数的作用域及范围(SESSION > CLUSTER > GLOBAL), 如果三个级别都没设置则会取系统提供的默认值 , 例如,同一个配置如果在GLOBAL和CLUSTER都有配置,那么在查询阶段会以CLUSTER配置优先,下面将对各项配置项目进行说明。 如果一个参数没有在任何 一个作用域范围内配置,则会启用该参数在代码实现中提供的默认值。

  • SESSION:Session级别的参数,只在当前请求Session上下文中生效,一旦Session失效或者重新建立连接后,Session基本的所有配置参数都将丢失。
  • CLUSTER:Cluster级别的参数,只在指定的Cluster范围内生效,Cluster下的所有变量会对该Cluster的所有查询和请求都生效。
  • GLOBAL:全局范围参数,当一个配置参数既无法在Session范围内找到配置,也无法从Cluster范围内找到,那么最终会在GLOBAL级别查找是否存在相关配置参数,如果都无法找到,那么才会启用参数最终的默认值。

配置参数语法

查看配置项 (SHOW VARIABLES )

执行计划

RP 配置

智能RP

其它

配置项 类型 默认值 作用域 说明
enable.profile.verbose boolean false SESSION 是否开启执行SQL时,profile记录更多优化过程
enable.query.mv.rewrite boolean true SESSION CLUSTER GLOBAL 是否开启物化改写,默认开启
internal.case.sensitive boolean false SESSION CLUSTER GLOBAL 是否开启大小写敏感。
enable.query.rewrite.by.view boolean true SESSION CLUSTER GLOBAL 是否开启基于视图的物化改写
enable.query.rewrite.by.view.fuse boolean true SESSION CLUSTER GLOBAL 是否启用结构化信息改写,结构化信息改写可以适用更加复杂的语义场景,但对Planning的性能会有一定影响。
query.rewrite.rp.view.depth Long 2 SESSION CLUSTER GLOBAL 启用基于视图改写的层数限制,默认2层;需要和结构化信息改写搭配使用。
query.enable.default.raw boolean true SESSION CLUSTER GLOBAL 是否启用RAW RP短路改写,提升复杂嵌套视图改写性能。
enable.planner.timeout boolean true SESSION CLUSTER GLOBAL 是否启用 planner 阶段的超时时间限制
planner.timeout.millisecond Long 5 * 60 * 1000L SESSION CLUSTER GLOBAL Planning超时时间 默认5分钟。
enable.profile.verbose boolean false SESSION CLUSTER GLOBAL 是否开启SQL执行优化的详细信息打印,默认关闭,开启对SQL执行时间有影响。
enable.pushdown.filterable_scan boolean true SESSION CLUSTER GLOBAL 启用 PushDownCalcIntoScanRule 规则,将过滤条件尽可能下推到 scan 算子中,代价评估更精准。
enable.statistics.calc boolean true SESSION CLUSTER GLOBAL 启用基于统计信息的代价评估
scan.default.zero.rowcount double 10000000000.0 SESSION CLUSTER GLOBAL 表行数采集缺失时的缺省行数
source.cost.factor.hive2 double 5.0 SESSION CLUSTER GLOBAL hive2 数据源的表扫描代价评估系数
source.cost.factor.hive3 double 5.0 SESSION CLUSTER GLOBAL hive3 数据源的表扫描代价评估系数
source.cost.factor.iceberg double 1.0 SESSION CLUSTER GLOBAL iceberg 数据源的表扫描代价评估系数
source.cost.factor.mysql double 10.0 SESSION CLUSTER GLOBAL mysql 数据源的表扫描代价评估系数
source.cost.factor.maxcomputer double 5.0 SESSION CLUSTER GLOBAL maxcomputer 数据源的表扫描代价评估系数
source.cost.factor.unrecognized double 20.0 SESSION CLUSTER GLOBAL 未知数据源的表扫描代价评估系数
enable.planner.graph.profile boolean true SESSION CLUSTER GLOBAL 生成物化改写阶段的选择过程的全量算子及代价图。
enable.adaptive.strategy boolean true SESSION CLUSTER GLOBAL 启用自适应物化改写策略
enable.custom.substitution boolean true SESSION CLUSTER GLOBAL 是否启用自定义的substitution。自定义substitution优化了寻找候选集的方式
custom.substitution.threshold Long 1 SESSION CLUSTER GLOBAL 自定义substitution的阈值,超过阈值,返回当前的结果
substitution.raw.rp.node.threshold Long 20 SESSION CLUSTER GLOBAL raw rp替换的阈值,当raw 的relnode小于该值,会尝试更多改写的机会
substitution.raw.rp.distinct.table.threshold Long 3 SESSION CLUSTER GLOBAL raw rp替换的去重表阈值
substitution.raw.rp.related.threshold Long 5 SESSION CLUSTER GLOBAL raw rp关联的候选集阈值
substitution.candidate.threshold Long 3 SESSION CLUSTER GLOBAL substitution候选集阈值,低于阈值,为简单匹配模式
substitution.simple.query.scan.threshold Long 4 SESSION CLUSTER GLOBAL substitution scan节点阈值,低于阈值,为简单匹配模式
enable.force.structure.rewrite boolean false SESSION CLUSTER GLOBAL 强制结构化信息改写
jobs.job.executor.engine String "" SESSION CLUSTER GLOBAL 指定执行引擎,支持 STARROCKS KYUUBI_SPARK
enable.rex.executor.cache boolean true SESSION CLUSTER GLOBAL 启用表达式简化缓存
planner.cost.upper.bound double -1.0 SESSION CLUSTER GLOBAL 执行计划代价的上限,超过上限将被拦截。
planner.scan.table.blacklist String "" SESSION CLUSTER GLOBAL 基于表全路径的查询拦截黑名单
starrocks.disable.source String "" SESSION CLUSTER GLOBAL 禁用 starrocks 支持的数据源
spark.disable.source String "" SESSION CLUSTER GLOBAL 禁用 spark 支持的数据源
enable.intelligence.query.rp boolean false SESSION CLUSTER GLOBAL 启用查询任务的优化过程分析,需启用智能物化.
enable.intelligence.build.rp boolean false SESSION CLUSTER GLOBAL 启用构建任务的优化过程分析,需启用智能物化
dialect.query.jdbc.pushdown boolean false SESSION CLUSTER GLOBAL 启用 jdbc 数据源查询下推
dialect.build.jdbc.pushdown boolean false SESSION CLUSTER GLOBAL 启用 jdbc 数据源物化构建时的 sql 下推
dialect.spark.auto.char.match boolean true SESSION CLUSTER GLOBAL 使用 Spark 引擎查询时 char 类型的字面量自动精度补齐
配置项 默认值 类型 作用域 说明
--- --- --- --- ---
rp.manager.refresh.delay.millis 10 * 1000L Long GLOBAL RP后台状态刷新线程的启动延时,毫秒,10*1000L表示延迟10S启动,且该配置项设置后必须进程重启才会生效。
rp.deletion.grace.period 4 * 60 * 60 * 1000L Long GLOBAL RP删除后,延迟多长时间删除底层的物理数据。4 * 60 * 60 * 1000L表示4小时后彻底删除RP对应的物理文件数据。且该配置项设置后必须进程重启才会生效。
rp.failures.threshold 3 Long GLOBAL RP构建失败多少次才会置为构建失败。否则会自动重试。
rp.strict.incremental.refresh.enabled true Boolean CLUSTER GLOBAL 在增量数据更新的场景下,新增字段是否触发全量刷新。
rp.no_dependency.refresh.period.seconds 30 * 60 * 1000L Long GLOBAL RP依赖定时刷新的周期配置,默认30 * 60 * 1000L是30分钟刷新一次。
rp.deletion.num.entries 5 Long GLOBAL 清理RP时,设置每次清理的RP个数,默认是每次清理5个。
rp.materialization.orphan.refresh 4 * 60 * 60 * 1000L Long GLOBAL 删除孤儿物化对象调度任务的时间间隔。孤儿物化是指 RP 已经被删除的物化对象。
rp.join_dependency.analyze.enable true Boolean GLOBAL 创建物化时是否强制启用RP依赖检查。
rp.init.partition.refresh.could.not.fetch.all true Boolean GLOBAL 分区表RP构建时,是否自动初始化所有分区数据,默认是True,开启默认初始化所有分区数据后,仍然需要判断表的记录行数,如果表记录行数大于可以初始化的行数,也不会初始化所有分区。
rp.init.not.fetch.all.table.row.count.threshold 30000000L Long GLOBAL 默认初始化所有分区数据的最大表行数,默认是3千万行,即当表总行数小于3千万时,分区表的所有数据都将被自动初始化到RP。
配置项 默认值 类型 作用域 说明
--- --- --- --- ---
job.system.user admin String GLOBAL CLUSTER 智能RP执行的系统管理员用户
rp.default.schema.path rp_test.system_view. String GLOBAL CLUSTER 智能Rp对应的view存放的schema 路径
rp.default.prefix irp_ GLOBAL CLUSTER 智能Rp默认前缀
enable.compatible.candidate false Boolean GLOBAL CLUSTER 是否兼容不同范围的join候选
cse.default.cost.ratio 0.8 Double GLOBAL CLUSTER 默认代价缩减比例阈值
cse.default.rowcount.ratio 0.8 Double GLOBAL CLUSTER 默认的行数缩减阈值
tablesignature.frequncy.threshold 2 int GLOBAL CLUSTER 废弃,通过用户界面配置
rp.recycle.enable.demo.mode false Boolean GLOBAL CLUSTER RP回收是否开始demo模式,demo模式下,1天缩短成1分钟
rp.recycle.time.interval 3600 Long GLOBAL CLUSTER 检查rp过期的时间间隔
enable.rp.recycle false Boolean GLOBAL CLUSTER 是否启用RP回收
enable.rp.drop true Boolean GLOBAL CLUSTER 是否允许Rp回收删除Rp
query.accelerate.running.ms.threshold 10000L Long GLOBAL CLUSTER 查询加速的执行时间阈值(执行超过xx ms的查询才会判断是否有加速计划)
配置项 默认值 类型 作用域 说明
--- --- --- --- ---
jobs.max.num.of.submit.job 100 int GLOBAL 最大并行执行的SQL作业数,默认100,范围100 ~ 10000000。(修改后需要重启服务器生效)
jobs.job.manager.cleanup.interval.ms 3000 int GLOBAL 内存缓存的SQL作业清理启动间隔,默认3s。范围500 ~ 3000000(修改后需要重启服务器生效)
jobs.clean.interval.minutes.of.command.pool 1 int GLOBAL 执行完成的SQL作业清理出队列的等待间隔,单位为分钟,默认SQL执行完成1分钟后清理出内存队列。(修改后需要重启服务器生效)
jobs.max.job.execution.time.minutes 60 int GLOBAL 执行中的SQL作业最长执行时长,单位为分钟,范围:1 ~ 60 * 24 * 7(修改后需要重启服务器生效)
jobs.store.job.info.queue.max.size 1000 int GLOBAL 设置异步写SQL作业日志队列的大小,范围10 ~ 1000000(修改后需要重启服务器生效)
jobs.check.status.max.waiting.time 60000 int GLOBAL 通过CLIENT提交查询单次轮询等待时长,默认:60s,取值范围10 ~ 1000000(修改后需要重启服务器生效)
metaSchedule.failures.threshold 1 int GLOBAL 元数据同步连接失败重试次数。
profile.clean.up.cron 0 0 23 * * ? string GLOBAL CLUSTER 查询历史记录自动清理的时间间隔 cron 表达式,默认每天晚上 23 点运行。
profile.retention.days 30 int GLOBAL CLUSTER 查询历史记录保留天数,超过保留天数的执行记录会被自动删除。