引擎配置参数
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 | 查询历史记录保留天数,超过保留天数的执行记录会被自动删除。 |