StarRocks系统参数详解与优化指南
系统参数
sql
MySQL [(none)]> show variables like "%%";
+----------------------------------------------+---------------------------+
| Variable_name | Value |
+----------------------------------------------+---------------------------+
| SQL_AUTO_IS_NULL | false |
| auto_increment_increment | 1 |
| autocommit | true |
| broadcast_row_limit | 15000000 |
| cbo_cte_reuse | true |
| cbo_enable_low_cardinality_optimize | true |
| cbo_max_reorder_node_use_dp | 10 |
| cbo_max_reorder_node_use_exhaustive | 4 |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| count_distinct_column_buckets | 1024 |
| default_rowset_type | alpha |
| disable_colocate_join | false |
| disable_join_reorder | false |
| disable_streaming_preaggregations | false |
| div_precision_increment | 4 |
| enable_adaptive_sink_dop | true |
| enable_deliver_batch_fragments | true |
| enable_distinct_column_bucketization | true |
| enable_filter_unused_columns_in_scan_stage | true |
| enable_global_runtime_filter | true |
| enable_groupby_use_output_alias | false |
| enable_hive_column_stats | true |
| enable_insert_strict | true |
| enable_local_shuffle_agg | true |
| enable_materialized_view_rewrite | true |
| enable_materialized_view_union_rewrite | true |
| enable_multicolumn_global_runtime_filter | false |
| enable_mv_planner | false |
| enable_pipeline_engine | true |
| enable_pipeline_query_statistic | true |
| enable_populate_block_cache | true |
| enable_predicate_reorder | false |
| enable_profile | false |
| enable_prune_complex_types | true |
| enable_query_cache | false |
| enable_query_dump | false |
| enable_query_queue_load | false |
| enable_query_queue_select | false |
| enable_query_queue_statistic | false |
| enable_realtime_mv | false |
| enable_resource_group | true |
| enable_rewrite_groupingsets_to_union_all | false |
| enable_rule_based_materialized_view_rewrite | true |
| enable_scan_block_cache | false |
| enable_shared_scan | false |
| enable_sort_aggregate | false |
| enable_tablet_internal_parallel | true |
| event_scheduler | OFF |
| exec_mem_limit | 2147483648 |
| force_schedule_local | false |
| forward_to_leader | false |
| full_sort_late_materialization | false |
| group_concat_max_len | 65535 |
| hash_join_push_down_right_table | true |
| hive_partition_stats_sample_size | 3000 |
| hudi_mor_force_jni_reader | false |
| init_connect | |
| innodb_read_only | true |
| interactive_timeout | 3600 |
| join_implementation_mode_v2 | auto |
| language | /starrocks/share/english/ |
| license | Elastic License 2.0 |
| load_mem_limit | 0 |
| load_transmission_compression_type | NO_COMPRESSION |
| lower_case_table_names | 0 |
| max_allowed_packet | 1048576 |
| max_parallel_scan_instance_num | -1 |
| max_pushdown_conditions_per_column | -1 |
| max_scan_key_num | -1 |
| nested_mv_rewrite_max_level | 3 |
| net_buffer_length | 16384 |
| net_read_timeout | 60 |
| net_write_timeout | 60 |
| new_planner_agg_stage | 0 |
| new_planner_optimize_timeout | 3000 |
| parallel_exchange_instance_num | -1 |
| parallel_fragment_exec_instance_num | 1 |
| parse_tokens_limit | 3500000 |
| performance_schema | false |
| pipeline_dop | 0 |
| pipeline_profile_level | 1 |
| prefer_compute_node | false |
| query_cache_agg_cardinality_limit | 5000000 |
| query_cache_entry_max_bytes | 4194304 |
| query_cache_entry_max_rows | 409600 |
| query_cache_force_populate | false |
| query_cache_hot_partition_num | 3 |
| query_cache_size | 1048576 |
| query_cache_type | 0 |
| query_delivery_timeout | 300 |
| query_mem_limit | 0 |
| query_queue_concurrency_limit | 0 |
| query_queue_cpu_used_permille_limit | 0 |
| query_queue_fresh_resource_usage_interval_ms | 5000 |
| query_queue_max_queued_queries | 1024 |
| query_queue_mem_used_pct_limit | 0.0 |
| query_queue_pending_timeout_second | 300 |
| query_timeout | 300 |
| resource_group | |
| runtime_filter_on_exchange_node | false |
| runtime_join_filter_push_down_limit | 1024000 |
| sql_mode | ONLY_FULL_GROUP_BY |
| sql_safe_updates | 0 |
| sql_select_limit | 9223372036854775807 |
| statistic_collect_parallel | 1 |
| storage_engine | olap |
| streaming_preaggregation_mode | auto |
| system_time_zone | Asia/Shanghai |
| time_zone | Asia/Shanghai |
| transaction_isolation | REPEATABLE-READ |
| transmission_compression_type | NO_COMPRESSION |
| transmission_encode_level | 7 |
| tx_isolation | REPEATABLE-READ |
| tx_visible_wait_timeout | 10 |
| use_compute_nodes | -1 |
| version | 5.1.0 |
| version_comment | StarRocks version 2.5.3 |
| wait_timeout | 28800 |
+----------------------------------------------+---------------------------+
125 rows in set (0.02 sec)
参数说明
-
SQL_AUTO_IS_NULL: 此参数通常用于MySQL兼容性。如果设置为赋值,那么在没有为新记录明确指定主键值的情况下,
LAST_INSERT_ID()和mysql_insert_id()将返回0,而不是新插入行的自动增量值。默认情况下,这个参数在StarRocks中被禁用。 -
auto_increment_increment: 这是一个系统变量,在MySQL中,它控制自增列的增量。在StarRocks中,此参数可能有类似的用途。
-
autocommit: 这是一个系统变量,它决定了在每次语句执行后是否应自动提交事务。如果设置为
true,那么每次执行语句后都会自动提交事务。如果设置为false,那么必须明确调用COMMIT语句才能提交事务。 -
broadcast_row_limit: 这是一个系统变量,用于控制当查询计划选择广播连接作为连接策略时,可以广播的最大行数。如果表的行数超过此值,将不会选择广播连接。默认15000000。
-
cbo_cte_reuse: 这是一个优化器标志,用于控制是否重用公共表表达式(CTE)。如果设置为
true,那么在查询中,每个CTE只会计算一次,并在所有引用中重用。如果设置为false,那么每个CTE将在每个引用中重新计算。 -
cbo_enable_low_cardinality_optimize: 这是一个优化器标志,是否开启低基数全局字典优化。如果启用,优化器将尝试识别和优化低基数的连接和聚合。开启后,查询STRING列时查询速度会有3倍左右提升。默认值:
true。 -
cbo_max_reorder_node_use_dp: 这是一个优化器标志,用于控制在重排序连接操作时,使用动态规划算法的最大节点数。
- StarRocks在Join个数不超过
cbo_max_reorder_node_use_dp时,会同时保留DP和贪心的Plan,且贪心算法也会保留Cost最小的10个Plan,为后续找到“最优”分布式Plan提供更多的可能性。
- StarRocks在Join个数不超过
-
cbo_max_reorder_node_use_exhaustive: 这是一个优化器标志,用于控制在重排序连接操作时,使用穷举算法的最大节点数。
- Plan中Join节点小于等于4(可通过session变量
cbo_max_reorder_node_use_exhaustive修改)个时,使用枚举的方法决定Join顺序。 - 依据Join节点的个数不同,我们选用不同的Join Reorder算法,较少时用枚举法,10个以内Join节点使用DP和贪心算法,超过10个时只使用贪心算法。通过对多种算法的使用,StarRocks可以在Join较少时迅速找到最优解,在Join较多时也能在相对较短的时间内产生效果不错的Plan。
- Plan中Join节点小于等于4(可通过session变量
-
character_set_client: 设置客户端连接的字符集。这决定了客户端发送给服务器的数据的字符集。
-
character_set_connection: 设置连接的字符集。这决定了服务器与客户端之间交换的数据的字符集。
-
character_set_database: 设置数据库的默认字符集。当创建新的数据库时,将使用该字符集。
-
character_set_results: 设置结果集的字符集。这决定了服务器返回给客户端的查询结果的字符集。
-
character_set_server: 设置服务器的默认字符集。当启动服务器时,将使用该字符集。
-
collation_connection: 设置连接的排序规则。这决定了服务器与客户端之间交换的数据的排序规则。
-
collation_database: 设置数据库的默认排序规则。当创建新的数据库时,将使用该排序规则。
-
collation_server: 设置服务器的默认排序规则。当启动服务器时,将使用该排序规则。
-
count_distinct_column_buckets: 用于控制在计算基数估计时使用的桶数。较大的桶数可以提高准确性,但会增加计算成本。
-
default_rowset_type: 用于指定默认的行集类型。行集是StarRocks中的一种存储格式,包括了不同的压缩算法和编码方式。
- 全局变量,仅支持全局生效。用于设置计算节点存储引擎默认的存储格式。当前支持的存储格式包括:
alpha/beta。
- 全局变量,仅支持全局生效。用于设置计算节点存储引擎默认的存储格式。当前支持的存储格式包括:
-
disable_colocate_join: 用于禁用StarRocks中的共同位置连接优化。共同位置连接是一种优化技术,可以将连接操作放在相同的节点上执行,减少数据传输。
- 控制是否启用Colocate Join功能。默认为
false,表示启用该功能。true表示禁用该功能。当该功能被禁用后,查询规划将不会尝试执行Colocate Join。
- 控制是否启用Colocate Join功能。默认为
-
disable_join_reorder: 用于禁用StarRocks中的连接重排序优化。连接重排序可以改变连接操作的执行顺序,以提高查询性能。
-
disable_streaming_preaggregations: 用于禁用StarRocks中的流式预聚合优化。流式预聚合可以在数据流入时进行部分聚合操作,减少后续计算的数据量。
-
div_precision_increment: 用于指定除法运算的精度增量。较小的增量可以提高计算精度,但会增加计算成本。
-
enable_adaptive_sink_dop: 用于启用StarRocks中的自适应下推并行度优化。自适应下推并行度可以根据数据量和计算资源自动调整并行度,提高查询性能。
-
enable_deliver_batch_fragments: 用于启用StarRocks中的批量传输片段优化。批量传输片段可以减少网络传输的次数,提高查询性能。
-
enable_distinct_column_bucketization: 用于启用StarRocks中的去重列分桶优化。去重列分桶可以将相同值的数据放在同一个桶中,减少存储和计算开销。
- 是否在
group-by-count-distinct查询中开启对count distinct列的分桶优化。在类似select a, count(distinct b) from t group by a;的查询中,如果group by列a为低基数列,count distinct列b为高基数列且发生严重数据倾斜时,会引发查询性能瓶颈。可以通过对count distinct列进行分桶来平衡数据,规避数据倾斜。 - 默认值:
false,表示不开启。该变量需要与count_distinct_column_buckets配合使用。 - 您也可以通过添加
skewhint来开启count distinct列的分桶优化,例如select a,count(distinct [skew] b) from t group by a;。
- 是否在
-
enable_filter_unused_columns_in_scan_stage: 启用此参数后,在扫描阶段将过滤掉未使用的列,以减少数据传输和存储开销。
-
enable_global_runtime_filter: 启用此参数后,StarRocks将在运行时使用全局运行时过滤器来减少不必要的数据传输和计算。
- Global runtime filter开关。Runtime Filter(简称RF)在运行时对数据进行过滤,过滤通常发生在Join阶段。当多表进行Join时,往往伴随着谓词下推等优化手段进行数据过滤,以减少Join表的数据扫描以及shuffle等阶段产生的IO,从而提升查询性能。StarRocks中有两种RF,分别是Local RF和Global RF。Local RF应用于Broadcast Hash Join场景。Global RF应用于Shuffle Join场景。
- 默认值
true,表示打开global runtime filter开关。关闭该开关后, 不生成Global RF, 但是依然会生成Local RF。
-
enable_groupby_use_output_alias: 启用此参数后,StarRocks将使用输出别名来优化GROUP BY操作,以减少计算和传输开销。
-
enable_hive_column_stats: 启用此参数后,StarRocks将使用Hive中的列统计信息来优化查询计划,以提高查询性能。
-
enable_insert_strict: 启用此参数后,StarRocks将在插入数据时执行严格的检查,以确保数据的完整性和一致性。
-
enable_local_shuffle_agg: 启用此参数后,StarRocks将在本地节点上执行聚合操作,以减少数据传输和计算开销。
-
enable_materialized_view_rewrite: 启用此参数后,StarRocks将尝试使用物化视图重写查询计划,以提高查询性能。
-
enable_materialized_view_union_rewrite: 是否开启物化视图Union改写。默认值:
true。启用此参数后,StarRocks将尝试使用物化视图联合重写查询计划,以提高查询性能。 -
enable_multicolumn_global_runtime_filter: 启用此参数后,StarRocks将在运行时使用多列全局运行时过滤器来进一步减少数据传输和计算。
- 对于Broadcast和Replicated Join类型之外的其他Join,当Join的等值条件有多个的情况下:
- 如果该选项关闭: 则只会产生Local RF。
- 如果该选项打开, 则会生成multi-part GRF, 并且该GRF需要携带multi-column作为partition-by表达式.
- 对于Broadcast和Replicated Join类型之外的其他Join,当Join的等值条件有多个的情况下:
-
enable_mv_planner: 启用或禁用物化视图查询优化器。物化视图是一种预计算和存储查询结果的技术,可以加速查询性能。
-
enable_pipeline_engine: 启用或禁用管道引擎。管道引擎是一种查询执行引擎,可以将查询计划分解为多个阶段,并在每个阶段中并行执行,以提高查询性能。
-
enable_pipeline_query_statistic: 启用或禁用管道查询统计信息。当启用时,StarRocks会收集和记录管道查询的统计信息,以便进行性能分析和优化。
-
enable_populate_block_cache: 启用或禁用块缓存的填充。块缓存是一种内存缓存,用于存储热点数据块,以提高查询性能。
-
enable_predicate_reorder: 启用或禁用谓词重排序优化。谓词重排序是一种优化技术,可以重新排列查询中的谓词条件,以提高查询性能。
-
enable_profile: 启用或禁用查询性能分析。当启用时,StarRocks会记录查询的执行时间、资源消耗等信息,以便进行性能分析和调优。
-
enable_prune_complex_types: 启用或禁用复杂类型的剪枝优化。复杂类型是指包含嵌套结构的数据类型,如数组、结构体等。剪枝优化可以在查询计划中剪枝掉不必要的复杂类型字段,以提高查询性能。
-
enable_query_cache: 启用或禁用查询缓存。查询缓存可以缓存查询的结果,以便在后续相同的查询中直接返回缓存结果,从而提高查询性能。
-
enable_query_dump: 启用或禁用查询日志记录。当启用时,StarRocks会记录查询的详细信息,包括查询语句、执行计划等,以便进行故障排查和性能分析。
-
enable_query_queue_load: 启用或禁用查询队列负载均衡。当启用时,StarRocks会根据查询队列的负载情况,动态调整查询的调度策略,以实现负载均衡和资源优化。
-
enable_query_queue_select: 启用查询队列选择,用于在多个查询队列中选择合适的队列来执行查询。
-
enable_query_queue_statistic: 启用查询队列统计,用于收集和展示查询队列的相关统计信息。
-
enable_realtime_mv: 启用实时物化视图,用于实时计算和更新物化视图。
-
enable_resource_group: 启用资源组,用于将不同的查询分配到不同的资源组中,以实现资源的有效管理和分配。
-
enable_rewrite_groupingsets_to_union_all: 启用将Grouping Sets重写为Union All的优化,用于优化包含Grouping Sets的查询。
-
enable_rule_based_materialized_view_rewrite: 启用基于规则的物化视图重写,用于自动将查询重写为物化视图的形式以提高查询性能。
-
enable_scan_block_cache: 启用扫描块缓存,用于在查询过程中缓存扫描的块数据,以加快查询速度。
-
enable_shared_scan: 启用共享扫描,用于在多个查询之间共享扫描的结果,以减少重复扫描的开销。
-
enable_sort_aggregate: 是否开启sorted streaming聚合,用于在聚合操作中对数据进行排序,以提高查询性能。
-
enable_tablet_internal_parallel: 启用表内并行,用于在查询过程中并行执行表内的操作,以加快查询速度。是否开启自适应Tablet并行扫描,使用多个线程并行分段扫描一个Tablet,可以减少Tablet数量对查询能力的限制。默认值为
true。自2.3版本起,StarRocks支持该参数。 -
event_scheduler: 启用事件调度器,用于调度和执行定时任务。
-
exec_mem_limit: 设置执行内存限制,用于限制查询执行过程中的内存使用。
-
force_schedule_local: 强制将任务调度到本地节点执行,以减少网络传输开销。
-
forward_to_leader: 将查询请求直接发送给Leader节点,减少请求的转发开销。
forward_to_master: 用于设置是否将一些命令转发到Leader FE节点执行。默认为false,即不转发。StarRocks中存在多个FE节点,其中一个为Leader节点。通常用户可以连接任意FE节点进行全功能操作。但部分信息查看指令只有从Leader FE节点才能获取详细信息。- 如
SHOW BACKENDS;命令,如果不转发到Leader FE节点,则仅能看到节点是否存活等一些基本信息,而转发到Leader FE则可以获取包括节点启动时间、最后一次心跳时间等更详细的信息。 - 当前受该参数影响的命令如下:
SHOW FRONTENDS;SHOW BACKENDS;SHOW BROKER;SHOW TABLET;ADMIN SHOW REPLICA DISTRIBUTION;ADMIN SHOW REPLICA STATUS;SHOW PROC
-
full_sort_late_materialization: 在执行排序操作时,延迟材料化(materialization)排序的结果,以减少内存占用。
-
group_concat_max_len: 设置
GROUP_CONCAT函数返回的字符串最大长度。 -
hash_join_push_down_right_table: 对于Hash Join操作,将右侧表的数据推送到左侧表所在的节点上进行计算,减少数据传输开销。
- 用于控制在Join查询中是否可以使用针对右表的过滤条件来过滤左表的数据,可以减少Join过程中需要处理的左表的数据量。取值为
true时表示允许该操作,系统将根据实际情况决定是否能对左表进行过滤;取值为false表示禁用该操作。默认值为true。
- 用于控制在Join查询中是否可以使用针对右表的过滤条件来过滤左表的数据,可以减少Join过程中需要处理的左表的数据量。取值为
-
hive_partition_stats_sample_size: 设置Hive分区统计信息采样的大小。
-
hudi_mor_force_jni_reader: 在使用Hudi MOR(Merge On Read)引擎时,强制使用JNI读取器进行数据读取。
-
init_connect: 设置新建连接时执行的初始化SQL语句。
-
innodb_read_only: 这个参数用于设置StarRocks是否以只读模式运行。当设置为1时,StarRocks将只允许读取操作,而不允许写入操作。这在某些情况下可以用于保护数据的完整性,防止意外的写入操作。
-
interactive_timeout: 这个参数用于设置StarRocks与客户端之间的交互超时时间。当客户端在一段时间内没有发送任何请求时,超过了这个时间,StarRocks将自动断开与该客户端的连接。这可以用于释放空闲连接,提高系统的资源利用率。
-
join_implementation_mode_v2: 这个参数用于设置StarRocks在执行JOIN操作时的实现模式。StarRocks支持多种JOIN实现模式,包括BROADCAST、SHUFFLE和MERGE等。通过调整这个参数,可以根据具体的数据分布和查询需求,选择最优的JOIN实现模式,提高查询性能。
-
license: 该参数用于设置Starrocks的许可证信息。它用于验证Starrocks的合法性和授权。
-
load_mem_limit: 用于指定导入操作的内存限制,单位为Byte。默认值为0,即表示不使用该变量,而采用
query_mem_limit作为导入操作的内存限制。- 这个变量仅用于INSERT操作。因为INSERT操作涉及查询和导入两个部分,如果用户不设置此变量,则查询和导入操作各自的内存限制均为
query_mem_limit。否则,INSERT的查询部分内存限制为query_mem_limit,而导入部分限制为load_mem_limit。 - 其他导入方式,如Broker Load,STREAM LOAD的内存限制依然使用
query_mem_limit。
- 这个变量仅用于INSERT操作。因为INSERT操作涉及查询和导入两个部分,如果用户不设置此变量,则查询和导入操作各自的内存限制均为
-
load_transmission_compression_type: 该参数用于设置Starrocks在数据加载过程中的传输压缩类型。它可以控制数据加载时的压缩方式,以减少网络传输的数据量。
-
lower_case_table_names: 该参数用于设置Starrocks中表名的大小写规则。当设置为1时,表名将被转换为小写;当设置为0时,表名将保持原样。
-
max_allowed_packet: 该参数决定了服务端发送给客户端或客户端发送给服务端的最大packet大小。它可以控制Starrocks在网络传输中所能处理的数据量。默认值为32MB。当客户端报
PacketTooBigException异常时,可以考虑调大该值。 -
max_parallel_scan_instance_num: 该参数用于设置Starrocks在执行并行扫描操作时的最大并行度。它可以控制Starrocks在扫描数据时所使用的并行线程数。
-
max_pushdown_conditions_per_column: 该参数用于设置Starrocks在执行查询时每个列所能推送的最大条件数。它可以控制Starrocks在查询优化中所能使用的条件数量。
-
max_scan_key_num: 该参数用于设置Starrocks在执行扫描操作时每个扫描键所能包含的最大值数量。它可以控制Starrocks在扫描数据时所能处理的键值对数量。
-
nested_mv_rewrite_max_level: 可用于查询改写的嵌套物化视图的最大层数。类型:INT。取值范围:[1, +∞)。默认值:3。取值为1表示只可使用基于基表创建的物化视图用于查询改写。
-
net_buffer_length: 指定网络缓冲区的长度。
-
net_read_timeout: 指定从网络读取数据的超时时间。
-
net_write_timeout: 指定向网络写入数据的超时时间。
-
new_planner_agg_stage: 指定新的查询优化器中聚合操作的阶段。
-
new_planner_optimize_timeout: 查询优化器的超时时间。一般查询中Join过多时容易出现超时。超时后会报错并停止查询,影响查询性能。您可以根据查询的具体情况调大该参数配置,也可以将问题上报给StarRocks技术支持进行排查。单位:秒。默认值:3000。
-
parallel_exchange_instance_num: 指定并行交换操作的实例数。
-
parallel_fragment_exec_instance_num: 指定并行片段执行的实例数。默认为1.表示每个BE上fragment的实例数量,如果希望提升单个查询的性能,可以设置为BE的CPU核数的一半。
-
parse_tokens_limit: 指定解析器解析的最大令牌数。
-
performance_schema: 指定是否启用性能模式,用于收集和报告性能数据。
-
pipeline_dop: 一个Pipeline实例的并行数量。可通过设置实例的并行数量调整查询并发度。默认值为0,即系统自适应调整每个pipeline的并行度。您也可以设置为大于0的数值,通常为BE节点CPU物理核数的一半。从3.0版本开始,支持根据查询并发度自适应调节pipeline_dop。
-
pipeline_profile_level: 用于控制profile的等级。一个profile通常有5个层级:Fragment、FragmentInstance、Pipeline、PipelineDriver、Operator。不同等级下,profile的详细程度有所区别:
- 0:在此等级下,StarRocks会合并profile,只显示几个核心指标。
- 1:默认值。在此等级下,StarRocks会对profile进行简化处理,将同一个pipeline的指标做合并来缩减层级。
- 2:在此等级下,StarRocks会保留Profile所有的层级,不做简化。该设置下profile的体积会非常大,特别是SQL较复杂时,因此不推荐该设置。
-
prefer_compute_node: 指定是否优先使用计算节点进行查询处理。
-
query_cache_agg_cardinality_limit: 查询缓存中GROUP BY聚合的高基数上限。GROUP BY聚合的输出预估超过该行数, 则不启用cache。默认值:5000000。
-
query_cache_entry_max_bytes: 查询缓存中单个查询结果的最大字节数。当查询结果的字节数超过该限制时,查询结果将不会被缓存。取值范围:0~9223372036854775807。默认值:4194304。当一个Tablet上产生的计算结果的字节数或者行数超过
query_cache_entry_max_bytes或query_cache_entry_max_rows指定的阈值时,则查询采用Passthrough模式执行。当query_cache_entry_max_bytes或query_cache_entry_max_rows取值为0时, 即便Tablet产生结果为空,也采用Passthrough模式。 -
query_cache_entry_max_rows: 查询缓存中单个查询结果的最大行数。当查询结果的行数超过该限制时,查询结果将不会被缓存。默认值:409600。
-
query_cache_force_populate: 是否强制查询缓存预热。当设置为
true时,StarRocks会在启动时将查询缓存中的所有查询结果加载到内存中。 -
query_cache_hot_partition_num: 查询缓存中热分区的数量。热分区是指经常被查询的分区,将这些分区的查询结果缓存起来可以提高查询性能。
-
query_cache_size: 查询缓存的大小,以字节为单位。该参数指定了查询缓存可以使用的最大内存大小。
-
query_cache_type: 查询缓存的类型。可以选择的类型有LRU(最近最少使用)和LFU(最不经常使用)。
-
query_delivery_timeout: 查询结果的传输超时时间,以毫秒为单位。当查询结果的传输时间超过该限制时,查询将被终止。
-
query_mem_limit: 用于设置每个BE节点上查询的内存限制。以字节为单位。当查询使用的内存超过该限制时,查询将被终止。
-
query_queue_concurrency_limit: 单个BE节点中并发查询上限。仅在设置为大于0后生效。该参数指定了查询队列可以同时执行的查询数量。
-
query_queue_cpu_used_permille_limit: 单个BE节点中查询队列的CPU使用率限制。仅在设置为大于0后生效。默认值:0。取值范围:[0, 1000]。当查询队列的CPU使用率超过该限制时,新的查询将被拒绝。
-
query_queue_fresh_resource_usage_interval_ms: 查询队列刷新资源使用情况的时间间隔,以毫秒为单位。该参数指定了查询队列多久刷新一次资源使用情况。
-
query_queue_max_queued_queries: 查询队列中查询数量的上限。当查询队列中的查询数量超过该限制时,新的查询将被拒绝。
-
query_queue_mem_used_pct_limit: 查询队列的内存使用率限制,取值范围:[0, 1]。当查询队列的内存使用率超过该限制时,新的查询将被拒绝。
-
query_queue_pending_timeout_second: 查询队列中查询的等待超时时间,以秒为单位。当查询在队列中等待的时间超过该限制时,查询将被终止。
-
query_timeout: 查询的超时时间,以毫秒为单位。当查询执行时间超过该限制时,查询将被终止。
-
runtime_filter_on_exchange_node: 控制是否在交换节点上启用运行时过滤器,用于减少数据传输量和提高查询性能。
- GRF成功下推跨过Exchange算子后,是否在Exchange Node上放置GRF。当一个GRF下推跨越Exchange算子,最终安装在Exchange算子更下层的算子上时,Exchange算子本身是不放置GRF的,这样可以避免重复性使用GRF过滤数据而增加计算时间。但是GRF的投递本身是try-best模式,如果query执行时,Exchange下层的算子接收GRF失败,而Exchange本身又没有安装GRF,数据无法被过滤,会造成性能衰退。该选项打开(设置为
true)时,GRF即使下推跨过了Exchange算子, 依然会在Exchange算子上放置GRF并生效。默认值为false。
- GRF成功下推跨过Exchange算子后,是否在Exchange Node上放置GRF。当一个GRF下推跨越Exchange算子,最终安装在Exchange算子更下层的算子上时,Exchange算子本身是不放置GRF的,这样可以避免重复性使用GRF过滤数据而增加计算时间。但是GRF的投递本身是try-best模式,如果query执行时,Exchange下层的算子接收GRF失败,而Exchange本身又没有安装GRF,数据无法被过滤,会造成性能衰退。该选项打开(设置为
-
runtime_join_filter_push_down_limit: 控制运行时连接过滤器下推的阈值,用于决定是否将连接过滤器下推到扫描节点。生成Bloomfilter类型的Local RF的Hash Table的行数阈值。超过该阈值, 则不产生Local RF。该变量避免产生过大Local RF。取值为整数,表示行数。默认值:1024000。
-
sql_mode: 设置SQL模式,用于控制SQL语句的解析和执行行为。
-
sql_safe_updates: 控制是否启用安全更新模式,用于防止误操作更新整个表。
-
sql_select_limit: 设置单个查询返回的最大行数限制。
-
statistic_collect_parallel: 控制统计信息收集的并行度,用于加快统计信息的收集速度。
-
storage_engine: 指定系统使用的存储引擎。StarRocks支持的引擎类型包括:
olap:StarRocks系统自有引擎。mysql:使用MySQL外部表。broker:通过Broker程序访问外部表。ELASTICSEARCH或者es:使用Elasticsearch外部表。HIVE:使用Hive外部表。ICEBERG:使用Iceberg外部表。从2.1版本开始支持。HUDI: 使用Hudi外部表。从2.2版本开始支持。jdbc: 使用JDBC外部表。从2.3版本开始支持。
-
streaming_preaggregation_mode: 用于设置多阶段聚合时,group-by第一阶段的预聚合方式。如果第一阶段本地预聚合效果不好,则可以关闭预聚合,走流式方式,把数据简单序列化之后发出去。取值含义如下:
auto:先探索本地预聚合,如果预聚合效果好,则进行本地预聚合;否则切换成流式。默认值,建议保留。force_preaggregation: 不进行探索,直接进行本地预聚合。force_streaming: 不进行探索,直接做流式。
-
system_time_zone: 显示当前系统时区。不可更改。
-
streaming_preaggregation_mode: 控制流式预聚合模式,用于优化流式查询的性能。
-
system_time_zone: 设置系统时区,用于处理日期和时间相关的操作。
-
time_zone: 设置会话时区,用于处理日期和时间相关的操作。
-
transaction_isolation: 设置事务隔离级别,用于控制并发事务的行为。
-
transmission_compression_type: 设置传输压缩类型,用于减少数据传输的网络带宽消耗。
-
transmission_encode_level: 设置传输编码级别,用于控制数据传输的压缩比例和性能。
-
tx_isolation: 设置事务隔离级别,用于控制并发事务的行为。
-
tx_visible_wait_timeout: 设置事务可见性等待超时时间,用于控制事务的等待时间。
-
use_compute_nodes: 控制是否使用计算节点进行查询计算,用于优化查询的性能和资源利用。
- 该设置只会在
prefer_compute_node=true时才会生效。-1表示使用所有CN节点,0表示不使用CN节点。默认值为-1。该变量从2.4版本开始支持。
- 该设置只会在
-
wait_timeout: 设置客户端连接的超时时间。如果客户端在指定的时间内没有发送任何请求,则服务器会关闭连接。
-
default_table_compression: 存储表格数据时使用的默认压缩算法,支持LZ4、Zstandard(或zstd)、zlib和Snappy。默认值:
lz4_frame。如果您建表时在PROPERTIES设置了compression,则compression指定的压缩算法生效。 -
enable_spill: 是否启用中间结果落盘。默认值:
false。如果将其设置为true,StarRocks会将中间结果落盘,以减少在查询中处理聚合、排序或连接算子时的内存使用量。 -
range_pruner_max_predicate: 设置进行Range分区裁剪时,最多能使用的IN谓词的个数,默认值:100。如果超过该值,会扫描全部tablet,降低查询性能。
-
spill_mode: 中间结果落盘的执行方式。默认值:
auto。有效值包括:auto:达到内存使用阈值时,会自动触发落盘。force:无论内存使用情况如何,StarRocks都会强制落盘所有相关算子的中间结果。- 此变量仅在变量
enable_spill设置为true时生效。
-
sql_dialect: 设置生效的SQL语法。例如,执行
set sql_dialect = 'trino';命令可以切换为Trino语法,这样您就可以在查询中使用Trino特有的SQL语法和函数。- 注意:设置使用Trino语法后,查询默认对大小写不敏感。因此,您在StarRocks内建库、表时必须使用小写的库、表名称,否则查询会失败。
-
batch_size: 用于指定在查询执行过程中,各个节点传输的单个数据包的行数。默认一个数据包的行数为1024行,即源端节点每产生1024行数据后,打包发给目的节点。较大的行数,会在扫描大数据量场景下提升查询的吞吐率,但可能会在小查询场景下增加查询延迟。同时,也会增加查询的内存开销。建议设置范围1024至4096。
-
connector_io_tasks_per_scan_operator: 外表查询时每个Scan算子能同时下发的I/O任务的最大数量。取值为整数,默认值16。目前外表查询时会使用自适应算法来调整并发I/O任务的数量,通过
enable_connector_adaptive_io_tasks开关来控制,默认打开。 -
count_distinct_column_buckets:
group-by-count-distinct查询中为count distinct列设置的分桶数。该变量只有在enable_distinct_column_bucketization设置为true时才会生效。默认值:1024。 -
**enable_connector_adaptive_io_tasks
end
