系统变量
StarRocks 提供多个系统变量(system variables),方便您根据业务情况进行调整。本文介绍 StarRocks 支持的变量。您可以在 MySQL 客户端通过命令 SHOW VARIABLES 查看 当前变量。也可以通过 SET 命令动态设置或者修改变量。您可以设置变量在系统全局 (global) 范围内生效、仅在当前会话 (session) 中生效、或者仅在单个查询语句中生效。
StarRocks 中的变量参考 MySQL 中的变量设置,但部分变量仅用于兼容 MySQL 客户端协议,并不产生其在 MySQL 数据库中的实际意义。
说明
任何用户都有权限通过 SHOW VARIABLES 查看变量。任何用户都有权限设置变量在 Session 级别生效。只有拥有 System 级 OPERATE 权限的用户才可以设置变量为全局生效。设置全局生效后,后续所有新的会话都会使用新配置,当前会话仍然使用老的配置。
查看变量
可以通过 SHOW VARIABLES [LIKE 'xxx']; 查看所有或指定的变量。例如:
-- 查看系统中所有变量。
SHOW VARIABLES;
-- 查看符合匹配规则的变量。
SHOW VARIABLES LIKE '%time_zone%';
变量层级和类型
StarRocks 支持三种类型(层级)的变量:全局变量、Session 变量和 SET_VAR Hint。它们的层级关系如下:
- 全局变量在全局级别生效,可以被 Session 变量和
SET_VARHint 覆盖。 - Session 变量仅在当前会话中生效,可以被
SET_VARHint 覆盖。 SET_VARHint 仅在当前查询语句中生效。
设置变量
设置变量全局生效或在会话中生效
变量一般可以设置为全局生效或仅当前会话生效。设置为全局生效后,后续所有新的会话连接中会使用新设置的值,当前会话还会继续使用之前设置的值;设置为仅当前会话生效时,变量仅对当前会话产生作用。
通过 SET <var_name> = xxx; 语句设置的变量仅在当前会话生效。如:
SET query_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
通过 SET GLOBAL <var_name> = xxx; 语句设置的变量全局生效。如:
SET GLOBAL query_mem_limit = 137438953472;
以下变量仅支持全局生效,不支持设置为会话级别生效。您必须使用 SET GLOBAL <var_name> = xxx;,不能使用 SET <var_name> = xxx;,否则返回错误。
- activate_all_roles_on_login
- character_set_database
- default_rowset_type
- enable_reduce_cast_varchar_expr_sync_type
- enable_reduce_cast_varchar_length_inheritance
- enable_query_queue_select
- enable_query_queue_statistic
- enable_query_queue_load
- init_connect
- lower_case_table_names
- license
- language
- query_cache_size
- query_queue_fresh_resource_usage_interval_ms
- query_queue_concurrency_limit
- query_queue_mem_used_pct_limit
- query_queue_cpu_used_permille_limit
- query_queue_pending_timeout_second
- query_queue_max_queued_queries
- system_time_zone
- version_comment
- version
Session 级变量既可以设置全局生效也可以设置 session 级生效。
此外,变量设置也支持常量表达式,如:
SET query_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');
设置变量在单个查询语句中生效
在一些场景中,可能需要对某些查询专门设置变量。可以使用 SET_VAR 提示 (Hint) 在查询中设置仅在单个语句内生效的会话变量。
当前,StarRocks 支持在以下语句中使用 SET_VAR Hint:
- SELECT
- INSERT (自 v3.1.12 和 v3.2.0 起支持)
- UPDATE(自 v3.1.12 和 v3.2.0 起支持)
- DELETE(自 v3.1.12 和 v3.2.0 起支持)
SET_VAR 只能跟在以上关键字之后,必须以 /*+ 开头,以 */ 结束。
举例:
SELECT /*+ SET_VAR(query_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1) */ sleep(3);
UPDATE /*+ SET_VAR(insert_timeout=100) */ tbl SET c1 = 2 WHERE c1 = 1;
DELETE /*+ SET_VAR(query_mem_limit = 8589934592) */
FROM my_table PARTITION p1
WHERE k1 = 3;
INSERT /*+ SET_VAR(insert_timeout = 10000000) */
INTO insert_wiki_edit
SELECT * FROM FILES(
"path" = "s3://inserttest/parquet/insert_wiki_edit_append.parquet",
"format" = "parquet",
"aws.s3.access_key" = "XXXXXXXXXX",
"aws.s3.secret_key" = "YYYYYYYYYY",
"aws.s3.region" = "us-west-2"
);
StarRocks 同时支持在单个语句中设置多个变量,参考如下示例:
SELECT /*+ SET_VAR
(
exec_mem_limit = 515396075520,
query_timeout=10000000,
batch_size=4096,
parallel_fragment_exec_instance_num=32
)
*/ * FROM TABLE;
设置变量为用户属性
您可以通过 ALTER USER 将 Session 变量设置为用户属性该功能自 v3.3.3 起支持。
示例:
-- 设置用户 jack 的 Session 变量 `query_timeout` 为 `600`。
ALTER USER 'jack' SET PROPERTIES ('session.query_timeout' = '600');
支持的变量
本节以字母顺序对变量进行解释。带 global 标记的变量为全局变量,仅支持全局生效。其余变量既可以设置全局生效,也可设置会话级别生效。
activate_all_roles_on_login (global)
- 描述:用于控制是否在用户登录时默认激活所有角色(包括默认角色和授予的角色)。
- 开启后,在用户登录时默认激活所有角色,优先级高于通过 SET DEFAULT ROLE 设置的角色。
- 如果不开启,则会默认激活 SET DEFAULT ROLE 中设置的角色。
- 默认值:false,表示不开启。
- 引入版本:v3.0
如果要在当前会话中激活一个角色,可以使用 SET ROLE。
auto_increment_increment
- 描述:用于兼容 MySQL 客户端。无实际作用。
- 默认值:1
- 类型:Int
autocommit
- 描述:用于兼容 MySQL 客户端。无实际作用。
- 默认值:true
chunk_size
用于指定在查询执行过程中,各个节点传输的单个数据包的行数。默认一个数据包的行数为 4096 行,即源端节点每产生 4096 行数据后,打包发给目的节点。较大的行数,会在扫描大数据量场景下提升查询的吞吐率,但可能会在小查询场景下增加查询延迟。同时,也会增加查询的内存开销。建议设置范围 1024 至 4096。
big_query_profile_threshold
-
描述:用于设定大查询的阈值。当会话变量
enable_profile设置为false且查询时间超过big_query_profile_threshold设定的阈值时,则会生成 Profile。NOTE:在 v3.1.5 至 v3.1.7 以及 v3.2.0 至 v3.2.2 中,引入了
big_query_profile_second_threshold参数,用于设定大查询的阈值。而在 v3.1.8、v3.2.3 及后续版本中,此参数被big_query_profile_threshold替代,以便提供更加灵活的配置选项。 -
默认值:0
-
单位:秒
-
类型:String
-
引入版本:v3.1
catalog(3.2.4 及以后)
- 描述:用于指定当前会话所在的 Catalog。
- 默认值:default_catalog
- 类型:String
- 引入版本:v3.2.4
cbo_decimal_cast_string_strict
- 描述:用于优化器控制 DECIMAL 类型转为 STRING 类型的行为。取值为
true时,使用 v2.5.x及之后版本的处理逻辑,执行严格转换(按 Scale 截断补0);取值为false时,保留 v2.5.x 之前版本的处理逻辑(按有效数字处理)。默认值是true。 - 默认值:true
- 引入版本:v2.5.14
cbo_enable_low_cardinality_optimize
- 描述:是否开启低基数全局字典优化。开启后,查询 STRING 列时查询速度会有 3 倍左右提升。
- 默认值:true
cbo_eq_base_type
- 描述:用来指定 DECIMAL 类型和 STRING 类型的数据比较时的强制类型,默认按照
DECIMAL类型进行比较,可选VARCHAR(按数值进行比较)。该变量仅在进行=和!=比较时生效。 - 类型:String
- 引入版本:v2.5.14
cbo_json_v2_dict_opt
- 描述:是否为 JSON v2 路径改写生成的 Flat JSON 字符串子列启用低基数字典优化。开启后,优化器可以为这些子列构建并使用全局字典,从而加速字符串表达式、GROUP BY、JOIN 等操作。
- 默认值:true
- 类型:Boolean
cbo_json_v2_rewrite
- 描述:是否在优化器中启用 JSON v2 路径改写。开启后,会将 JSON 函数(如
get_json_*)改写为直接访问 Flat JSON 子列,从而启用谓词下推、列裁剪以及字典优化。 - 默认值:true
- 类型:Boolean
cbo_materialized_view_rewrite_related_mvs_limit
- 描述:用于指定查询在 Plan 阶段最多拥有的候选物化视图个数。
- 默 认值:64
- 类型:Int
- 引入版本:v3.1.9, v3.2.5
cbo_prune_subfield
- 描述:是否开启 JSON 子列裁剪。需要配合 BE 动态参数
enable_json_flat一起使用,单独使用可能会导致 JSON 性能变慢。 - 默认值:false
- 引入版本:v3.3.0
enable_sync_materialized_view_rewrite
- 描述:是否启用基于同步物化视图的查询改写。
- 默认值:true
- 引入版本:v3.1.11,v3.2.5
enable_datacache_async_populate_mode
- 描述:是否使用异步方式进行 Data Cache 填充。系统默认使用同步方式进行填充,即在查询数据时同步填充进行缓存填充。
- 默认值:false
- 引入版本:v3.2.7
query_including_mv_names
- 描述:指定需要在查询执行过程中包含的异步物化视图的名称。您可以使用此变量来限制候选物化视图的数量,并提高优化器中的查询改写性能。此项优先于
query_excluding_mv_names生效。 - 默认值:空字符串
- 类型:String
- 引入版本:v3.1.11,v3.2.5
query_excluding_mv_names
- 描述:指定需要在查询执行过程中排除的异步物化视图的名称。您可以使用此变量来限制候选物化视图的数量,并提高优化器中的查询改写性能。
query_including_mv_names优先于此项生效。 - 默认值:空字符串
- 类型:String
- 引入版本:v3.1.11,v3.2.5
optimizer_materialized_view_timelimit
- 描述:指定一个物化视图改写规则可消耗的最大时间。当达到阈值时,将不再使用该规则进行查询改写。
- 默认值:1000
- 单位:毫秒
- 类型:Long
enable_materialized_view_agg_pushdown_rewrite
- 描述:是否为物化视图查询改写启用聚合函数下推。如果设置为
true,聚合函数将在查询执行期间下推至 Scan Operator,并在执行 Join Operator 之前被物化视图改写。此举可以缓解 Join 操作导致的数据膨胀,从而提高查询性能。有关此功能的具体场景和限制的详细信息,请参见 聚合函数下推。 - 默认值:false
- 引入版本:v3.3.0
enable_materialized_view_text_match_rewrite
- 描述:是否启用基于文本的物化视图改写。当此项设置为
true时,优化器将查询与现有的物化视图进行比较。如果物化视图定义的抽象语法树与查询或其子查询的抽象语法树匹配,则会对查询进行改写。 - 默认值:true
- 引入版本:v3.2.5,v3.3.0
materialized_view_subuqery_text_match_max_count
- 描述:指定系统比对查询的子查询是否与物化视图定义匹配的最大次数。
- 默认值:4
- 引入版本:v3.2.5,v3.3.0
enable_force_rule_based_mv_rewrite
- 描述:在优化器的 RBO(rule-based optimization)阶段是否针对多表查询启用查询改写。启用此功能将提高查询改写的鲁棒性。但如果查询未命中物化视图,则会增加优化耗时。
- 默认值:true
- 引入版本:v3.3
enable_view_based_mv_rewrite
- 描述:是否为基于逻辑视图创建的物化视图启用查询改写。如果此项设置为
true,则逻辑视图被用作统一节点进行查询改写,从而获得更好的性能。如果此项设置为false,则系统将针对逻辑视图的查询展开变为针对物理表或物化视图的查询,然后进行改写。 - 默认值:false
- 引入版本:v3.1.9,v3.2.5,v3.3.0
enable_materialized_view_union_rewrite
- 描述:是否启用物化视图 UNION 改写。如果此项设置为 true,则系统在物化视图的谓词不能满足查询的谓词时,会尝试使 用 UNION ALL 来补偿谓词。
- 默认值:true
- 引入版本:v2.5.20,v3.1.9,v3.2.7,v3.3.0
enable_materialized_view_plan_cache
- 描述:是否开启物化视图查询计划缓存,用于提高物化视图查询改写性能。默认值是
true,即开启物化视图查询计划缓存。 - 默认值:true
- 引入版本:v2.5.13,v3.0.7,v3.1.4,v3.2.0,v3.3.0
enable_cbo_based_mv_rewrite
- 描述:是否在 CBO 阶段启用物化视图改写,这可以最大化查询改写成功的可能性(例如,当物化视图和查询之间的连接顺序不同时),但这会增加优化器阶段的执行时间。
- 默认值:true
- 引入版本:v3.5.5,v4.0.1
enable_parquet_reader_bloom_filter
- 描述:是否启用 Parquet 文件的 Bloom Filter 以提高性能。
true表示启用 Bloom Filter,false表示禁用。还可以使用 BE 参数parquet_reader_bloom_filter_enable在 Session 级别上控 制这一行为。Parquet 中的 Bloom Filter 是在每个行组的列级维护的。如果 Parquet 文件包含某些列的 Bloom Filter,查询就可以使用这些列上的谓词来有效地跳过行组。 - 默认值:true
- 引入版本:v3.5
enable_plan_advisor
- 描述:是否为慢查询或手动标记查询开启 Query Feedback 功能。
- 默认值:true
- 引入版本:v3.4.0
enable_plan_analyzer
- 描述:是否为所有查询开启 Query Feedback 功能。该变量仅在
enable_plan_advisor为true是生效。 - 默认值:false
- 引入版本:v3.4.0
enable_parquet_reader_bloom_filter
- 默认值:true
- 类型:Boolean
- 单位:-
- 描述:是否在读取 Parquet 文件时启用 Bloom Filter 优化。
true(默认):读取 Parquet 文件时启用 Bloom Filter 优化。false:读取 Parquet 文件时禁用 Bloom Filter 优化。
- 引入版本:v3.5.0
enable_parquet_reader_page_index
- 默认值:true
- 类型:Boolean
- 单位:-
- 描述:是否在读取 Parquet 文件时启用 Page Index 优化。
true(默认):读取 Parquet 文件时启用 Page Index 优化。false:读取 Parquet 文件时禁用 Page Index 优化。
- 引入版本:v3.5.0
follower_query_forward_mode
-
描述:用于指定将查询语句路由到 Leader FE 或 Follower FE 节点。
有效值:
default: 将查询语句路由到 Leader FE 或 Follower FE 节点,取决于 Follower FE 节点的回放进度。如果 Follower FE 节点未完成回放,查询将会被路由至 Leader FE 节点。反之,查询会被优先路由至 Follower FE 节点。leader: 将查询语句路由到 Leader FE 节点。follower: 将查询语句路由到 Follower FE 节点。
-
默认值:default
-
类型:String
-
引入版本:v2.5.20,v3.1.9,v3.2.7,v3.3.0
character_set_database(global)
- 描述:StarRocks 数据库支持的字符集,当前仅支持 UTF8 编码(
utf8)。 - 默认值:utf8
- 类型:String
connector_io_tasks_per_scan_operator
- 描述:外表查询时每个 Scan 算子能同时下发的 I/O 任务的最大数量。目前外表查询时会使用自适应算法来调整并发 I/O 任务的数量,通过
enable_connector_adaptive_io_tasks开关来控制,默认打开。 - 默认值:16
- 类型:Int
- 引入版本:v2.5
connector_sink_compression_codec
- 描述:用于指定写入 Hive 表或 Iceberg 表时以及使用 Files() 导出数据时的压缩算法。有效值:
uncompressed、snappy、lz4、zstd、gzip。该参数只在以下情况生效:- Hive 表中未指定
compression_codec属性。 - Iceberg 表中未包含
write.parquet.compression-codec属性。 INSERT INTO FILES时未设置compression属性。
- Hive 表中未指定
- 默认值:uncompressed
- 类型:String
- 引入版本:v3.2.3
connector_sink_target_max_file_size
- 描述: 指定将数据写入 Hive 表或 Iceberg 表或使用 Files() 导出数据时目标文件的最大大小。该限制并不一定精确,只作为尽可能的保证。
- 单位:Bytes
- 默认值: 1073741824
- 类型: Long
- 引入版本: v3.3.0
count_distinct_column_buckets
- 描述:group-by-count-distinct 查询中为 count distinct 列设置的分桶数。该变量只有在
enable_distinct_column_bucketization设置为true时才会生效。 - 默认值:1024
- 引入版本:v2.5
count_distinct_implementation
- 描述:控制
COUNT(DISTINCT expr)仅包含一个参数时所使用的函数实现。有效值(不区分大小写):default:保留COUNT(DISTINCT expr)的默认实现。优化器会根据查询形式、统计信息和成本选择合适的聚合执行计划。multi_count_distinct:将COUNT(DISTINCT expr)的实现方式更改为multi_distinct_count,以进行精确计数。对于低基数和中等基数列的计数,该实现可以减少一次 Shuffle 和去重阶段,从而提升查询速度。但是,该实现会将 distinct 值保存在 HashSet 中,因此对于高基数列进行去重时,可能导致过高的内存消耗,甚至引发 OOM。在通过具有代表性的负载进行验证之前,请勿全局设置此值。ndv:将COUNT(DISTINCT expr)的实现方式更改为ndv(expr)。该函数使用 HyperLogLog,以较低的内存开销返回近似结果。
- 默认值:
default - 引入版本:v3.3.6、v3.4.0
multi_distinct_count 的使用说明multi_distinct_count() 返回精确结果。
对于大多数查询,建议使用 COUNT(DISTINCT expr)。将 count_distinct_implementation 设置为 default,以允许优化器选择合适的聚合执行计划。
对低基数和中等基数的列进行去重时,可以测 试并使用 multi_distinct_count()。该函数使用两阶段聚合,可以减少一次 Shuffle 和去重阶段,从而提升性能。但是,在对高基数列进行去重时,其 HashSet 状态以及最终合并过程可能导致过高的内存消耗,甚至引发 OOM。
如果希望针对单个 COUNT(DISTINCT expr) 测试此实现,而不是更改整个 Session 的设置,可以在查询 Hint 中设置 count_distinct_implementation:
SELECT /*+ SET_VAR(count_distinct_implementation = multi_count_distinct) */
COUNT(DISTINCT category)
FROM test;
通过 Hint 设置此值时,仅对包含单个参数的 COUNT(DISTINCT) 生效。对于 COUNT(DISTINCT expr1, expr2) 等多列去重表达式,该设置不会产生影响。
custom_query_id (session)
- 描述: 用于将某些外部标识绑定到当前查询。在执行查询前可以使用
SET SESSION custom_query_id = 'my-query-id';进行设置。查询结束后该值会被重置。该值可以传递给KILL QUERY 'my-query-id'。在审计日志中可以作为customQueryId字段找到该值。 - 默认值: ""
- 类型: String
- 引入版本: v3.4.0
datacache_sharing_work_period
- 描述:Cache Sharing 功能的生效时长。每次群集扩展操作后,如果启用了缓存共享功能,只有在这段时间内的请求才会尝试访问其他节点的缓存数据。
- 默认值:600
- 单位:秒
- 引入版本:v3.5.1
default_authentication_plugin
- 范围: Session
- 描述: 会话范围的变量,指定本会话的默认 MySQL 认证插件名称。它以 SessionVariable.defaultAuthenticationPlugin 的形式存储,并由 StarRocks 的 MySQL 协议兼容层在服务器需要通告或使用默认认证插件时使用(例如在握手期间或未指定插件时)。接受服务器支持的标准 MySQL 认证插件标识(例如
mysql_native_password、caching_sha2_password)。此变量仅影响会话行为;持久化的用户账号认证配置由其他机制单独管理。参见相关会话变量authentication_policy。 - 默认值:
mysql_native_password - 类型: String
- 引入版本: -
default_rowset_type (global)
全局变量,仅支持全局生效。用于设置计算节点存储引擎默认的存储格式。当前支持的存储格式包括:alpha/beta。
default_table_compression
- 描述:存储表格数据时使用的默认压缩算法,支持 LZ4、Zstandard(或 zstd)、zlib 和 Snappy。如果您建表时在 PROPERTIES 设置了
compression,则compression指定的压缩算法生效。 - 默认值:lz4_frame
- 类型:String
- 引入版本:v3.0
disable_colocate_join
- 描述:控制是否启用 Colocate Join 功能。默认值为 false,表示启用该功能。true 表示禁用该功能。当该功能被禁用后,查询规划将不会尝试执行 Colocate Join。
- 默认值:false
disable_streaming_preaggregations (已弃用)
控制是否开启流式预聚合。默认为 false,即开启。3.1 版本已弃用。
div_precision_increment
- 描述:用于兼容 MySQL 客户端,无实际作用。
- 默认值:4
- 类型:Int
dynamic_overwrite
- 描述:是否为 INSERT OVERWRITE 语句覆盖写分区表时启用 Dynamic Overwrite 语义。有效值:
true:启用 Dynamic Overwrite。false:禁用 Dynamic Overwrite 并使用默认语义。
- 默认值:false
- 引入版本:v3.4.0
enable_adaptive_sink_dop
- 描述:是否开启导入自适应并行度。开启后 INSERT INTO 和 Broker Load 自动设置导入并行度,保持和
pipeline_dop一致。新部署的 2.5 版本默认值为true,从 2.4 版本升级上来为false。 - 默认值:false
- 引入版本:v2.5
enable_bucket_aware_execution_on_lake
- 描述:是否针对数据湖(如 Iceberg 表)查询启用 Bucket-aware 执行。启用后,系统通过利用分桶信息来优化查询执行,减少数据 Shuffle 并提高性能。此优化对分桶表的 Join 和 Aggregation 特别有效。
- 默认值:true
- 数据类型:Boolean
- 引入版本:v4.0
enable_cbo_based_mv_rewrite
- 描述:是否在 CBO 阶段启用物化视图改写,这可以最大化查询改写成功的可能性(例如,当物化视图和查询之间的连接顺序不同时),但这会增加优化器阶段的执行时间。
- 默认值:true
- 引入版本:v3.5.5,v4.0.1
enable_cbo_table_prune
- 描述: 启用后,优化器将在 memo 优化期间添加基于代价的表裁剪规则(CboTablePruneRule),对保持基数的连接进行基于代价的表裁剪。该规则仅在优化器中有条件地添加(参见 QueryOptimizer.memoOptimize 和 SPMOptimizer.memoOptimize),并且只在连接树中的连接节点数量较小时添加(少于 10 个连接节点)。此选项补充基于规则的裁剪开关
enable_rbo_table_prune,允许基于代价的优化器尝试从连接处理中移除不必要的表或输入,以减少计划和执行复杂度。默认关闭,因为裁剪可能改变计划形状;仅在代表性工作负载上验证后再启用。 - 范围: Session
- 默认值:
false - 数据类型: boolean
- 引入版本: v3.2.0
enable_cache_udaf
- 描述: 设置为
true时,启用 Java UDAF 类级初始化的内存缓存(包括类加载、方法内省和批量更新 stub 类生成)。缓存在首次使用时填充,并在同一 BE 进程内的所有 aggregator/analytor 实例之间复用,从而消除原本与 pipeline DOP 成线性比例的重复每实例初始化开销。缓存仅适用于创建时指定"isolation" = "shared"的 UDAF 和窗口函数;使用"isolation" = "private"创建的函数无论此设置如何,始终走非缓存路径。默认为false;在确认 shared 隔离模式的 UDAF 可安全跨并发查询共享类级状态后再启用。运行时 Profile 中提供UdafCacheHitCount、UdafCachePopulateCount和UdafLoadTime计数器用于观测缓存行为。 - 范围: Session
- 默认值:
false - 数据类型: boolean
- 引入版本: v3.4.0
enable_color_explain_output
- 范围: Session
- 描述: 控制在文本形式的 EXPLAIN / PROFILE 输出中是否包含 ANSI 颜色转义序列。启用时(
true),StmtExecutor 会将会话设置传递到 EXPLAIN/PROFILE 流水线,以便 EXPLAIN、EXPLAIN ANALYZE 和 ANALYZE PROFILE 输出在支持 ANSI 的终端中包含颜色高亮以提高可读性。禁用时(false),输出将不包含 ANSI 序列,适用于日志记录、不支持 ANSI 的客户端或将输出重定向到文件的场景。该项不改变执行语义,仅影响 EXPLAIN/PROFILE 文本的展示。 - 默认值:
true - 数据类型: boolean
- 引入版本: v3.5.0
enable_connector_adaptive_io_tasks
- 描述:外表查询时是否使用自适应策略来调整 I/O 任务的并发数。默认打开。如果未开启自适应策略,可以通过
connector_io_tasks_per_scan_operator变量来手动设置外表查询时的 I/O 任务并发数。 - 默认值:true
- 引入版本:v2.5
enable_distinct_column_bucketization
-
描述:是否在 group-by-count-distinct 查询中开启对 count distinct 列的分桶优化。在类似
select a, count(distinct b) from t group by a;的查询中,如果 group by 列 a 为低基数列,count distinct 列 b 为高基数列且发生严重数据倾斜时,会引发查询性能瓶颈。可以通过对 count distinct 列进行分桶来平衡数据,规避数据倾斜。该变量需要与
count_distinct_column_buckets配合使用。您也可以通过添加
skewhint 来开启 count distinct 列的分桶优化,例如select a,count(distinct [skew] b) from t group by a;。 -
默认值:false,表示不开启。
-
引入版本:v2.5
enable_group_by_compressed_key
- 描述:是否利用准确的统计信息来压缩 GROUP BY Key 列。有效值:
true和false。 - 默认值:true
- 引入 版本:v4.0
enable_gin_filter
- 描述:查询时是否使用全文倒排索引。
- 默认值:true
- 引入版本:v3.3.0
enable_group_execution
- 描述:Colocate Group Execution 是一种利用物理数据分区的执行模式,其中固定数量的线程依次处理各自的数据范围,以增强局部性和吞吐量。该模式可降低内存使用量。
- 默认值:true
- 引入版本:v3.3
enable_group_level_query_queue (global)
- 描述:是否开启资源组粒度的查询队列。
- 默认值:false,表示不开启。
- 引入版本:v3.1.4
enable_insert_partial_update
- 描述:是否为主键表的 INSERT 语句启用部分更新(Partial Update)。当设置为
true(默认)时,如果 INSERT 语句只指定了部分列(少于表中所有非生成列),系统会执行部分更新,即仅更新指定列,并保留其他列的现有值。当设置为false时,系统会对未指定的列使用默认值,而不是保留已有值。此功能特别适用于对主键表的特定列进行更新,而不影响其他列的值。 - 默认值:true
- 引入版本:v3.3.20、v3.4.9、v3.5.8、v4.0.2
enable_iceberg_metadata_cache
- 描述:是否缓存 Iceberg 表指针和分区名相关的数据。在 3.2.1 到 3.2.3 版本,该参数默认值统一为
true。自 3.2.4 版本起,如果 Iceberg 集群的元数据服务为 AWS Glue,该参数默认值仍为true,如果 Iceberg 集群的元数据服务为 Hive Metastore(简称 HMS)或其他,则该参数默认值变更为false。 - 引入版本:v3.2.1
max_unknown_string_meta_length (global)
- 描述:当字符串列的最大长度未知时用于元数据的回退长度。如果客户端依赖该元数据且报告的长度小于真实值,部分 BI 工具可能返回空值或截断。小于等于 0 时回退为
64;有效范围为1~1048576。 - 默认值:64
- 数据类型:Int
- 引入版本:v3.5.13
enable_reduce_cast_varchar_length_inheritance (global)
- 描述:当
ReduceCastRule消除同类型的VARCHAR -> VARCHARcast 时,是否保留目标VARCHAR(N)的长度信息。开启后,可使CAST(col AS VARCHAR(N))这类语句在 prepare 和 execute 阶段返回一致的结果集元数据。 - 默认值:false
- 数据类型:Boolean
- 引入版本:v4.0.9
enable_reduce_cast_varchar_expr_sync_type (global)
- 描述:当
ReduceCastRule消除同类型的VARCHAR -> VARCHARcast 后,是否将复用的 plannerExpr的type和originType同步为改写后的VARCHAR(N)类型。 - 默认值:true
- 数据类型:Boolean
- 引入版本:v4.0.9
enable_metadata_profile
- 描述:是否为 Iceberg Catalog 的元数据收集查询开启 Profile。
- 默认值:true
- 引入版本:v3.3.3
plan_mode
- 描述:Iceberg Catalog 元数据获取方案模式。详细信息,参考 Iceberg Catalog 元数据获取方案。有效值:
auto:系统自动选择方案。local:使用本地缓存方案。distributed:使用分布式方案。
- 默认值:auto
- 引入版本:v3.3.3
enable_iceberg_column_statistics
- 描述:是否获取列统计信息,例如
min、max、null count、row size和ndv(如果存在 puffin 文件)。当此项设置为false时,仅收集行数信息。 - 默认值:false
- 引入版本:v3.4