配置参数
本文介绍如何配置 StarRocks FE 节点、BE 节点、Broker 以及系统参数,并介绍相关参数。
FE 配置项
FE 参数分为动态参数和静态参数。动态参数可通过 SQL 命令进行在线配置和调整,方便快捷。需要注意通过 SQL 命令所做的动态设置在重启 FE 后会失效。如果想让设置长期生效,建议同时修改 fe.conf 文件。
静态参数必须在 FE 配置文件 fe.conf 中进行配置和调整。调整完成后,需要重启 FE 使变更生效。
参数是否为动态参数可通过 ADMIN SHOW CONFIG 返回结果中的 IsMutable
列查看。TRUE
表示动态参数。
静态和动态参数均可通过 fe.conf 文件进行修改。
查看 FE 配置项
FE 启动后,您可以在 MySQL 客户端执行 ADMIN SHOW FRONTEND CONFIG 命令来查看参数配置。如果您想查看具体参数的配置,执行如下命令:
ADMIN SHOW FRONTEND CONFIG [LIKE "pattern"];
详细的命令返回字段解释,参见 ADMIN SHOW CONFIG。
注意
执行集群管理相关命令需要有管理员权限。
配置 FE 动态参数
您可以通过 ADMIN SET FRONTEND CONFIG 命令在线修改 FE 动态参数。
ADMIN SET FRONTEND CONFIG ("key" = "value");
注意
动态设置的配置项,在 FE 重启之后会恢复成 fe.conf 文件中的配置或者默认值。如果需要让配置长期生效,建议设置完之后同时修改 fe.conf 文件,防止重启后修改失效。
Log
配置项 | 默认值 | 描述 |
---|---|---|
qe_slow_log_ms | 5000 | Slow query 的认定时长,单位为 ms。如果查询的响应时间超过此阈值,则会在审计日志 fe.audit.log 中记录为 slow query。 |
元数据与集群管理
配置项 | 默认值 | 描述 |
---|---|---|
catalog_try_lock_timeout_ms | 5000 | 全局锁(global lock)获取的超时时长,单位为 ms。 |
edit_log_roll_num | 50000 | 该参数用于控制日志文件的大小,指定了每写多少条元数据日志,执行一次日志滚动操作来为这些日志生成新的日志文件。新日志文件会写入到 BDBJE Database。 |
ignore_unknown_log_id | FALSE | 是否忽略未知的 logID。当 FE 回滚到低版本时,可能存在低版本 BE 无法识别的 logID。 如果为 TRUE,则 FE 会忽略这些 logID;否则 FE 会退出。 |
ignore_materialized_view_error | FALSE | 是否忽略因物化视图错误导致的元数据异常。如果 FE 因为物化视图错误导致的元数据异常而无法启动,您可以通过将该参数设置为 true 以忽略错误。自 v2.5.10 起支持。 |
ignore_meta_check | FALSE | 是否忽略元数据落后的情形。如果为 true,非主 FE 将忽略主 FE 与其自身之间的元数据延迟间隙,即使元数据延迟间隙超过 meta_delay_toleration_second,非主 FE 仍将提供读取服务。 当您尝试停止 Master FE 较长时间,但仍希望非 Master FE 可以提供读取服务时,该参数会很有帮助。 |
meta_delay_toleration_second | 300 | FE 所在 StarRocks 集群中,非 Leader FE 能够容忍的元数据落后的最大时间。单位:秒。 如果非 Leader FE 上的元数据与 Leader FE 上的元数据之间的延迟时间超过该参数取值,则该非 Leader FE 将停止服务。 |
drop_backend_after_decommission | TRUE | BE 被下线后,是否删除该 BE。true 代表 BE 被下线后会立即删除该 BE。False 代表下线完成后不删除 BE。 |
enable_collect_query_detail_info | FALSE | 是否收集查询的 profile 信息。设置为 true 时,系统会收集查询的 profile。设置为 false 时,系统不会收集查询的 profile。 |
enable_background_refresh_connector_metadata | v3.0 为 TRUE v2.5 为 FALSE | 是否开启 Hive 元数据缓存周期性刷新。开启后,StarRocks 会轮询 Hive 集群的元数据服务(Hive Metastore 或 AWS Glue),并刷新经常访问的 Hive 外部数据目录的元数据缓存,以感知数据更新。true 代表开启,false 代表关闭。自 v2.5.5 起支持。 |
background_refresh_metadata_interval_millis | 600000 | 接连两次 Hive 元数据缓存刷新之间的间隔。单位:毫秒。自 v2.5.5 起支持。 |
background_refresh_metadata_time_secs_since_last_access_secs | 86400 | Hive 元数据缓存刷新任务过期时间。对于已被访问过的 Hive Catalog,如果超过该时间没有被访问,则停止刷新其元数据缓存。对于未被访问过的 Hive Catalog,StarRocks 不会刷新其元数据缓存。单位:秒。自 v2.5.5 起支持。 |
Query engine
配置项 | 默认值 | 描述 |
---|---|---|
max_allowed_in_element_num_of_delete | 10000 | DELETE 语句中 IN 谓词最多允许的元素数量。 |
enable_materialized_view | TRUE | 是否允许创建物化视图。 |
enable_decimal_v3 | TRUE | 是否开启 Decimal V3。 |
expr_children_limit | 10000 | 一个表达式中子表达式的最大数量。 |
enable_sql_blacklist | FALSE | 是否开启 SQL Query 黑名单校验。如果开启,在黑名单中的 Query 不能被执行。 |
dynamic_partition_check_interval_seconds | 600 | 动态分区检查的时间周期。如果有新数据生成,会自动生成分区。 |
dynamic_partition_enable | TRUE | 是否开启动态分区功能。打开后,您可以按需为新数据动态创建分区,同时 StarRocks 会⾃动删除过期分区,从而确保数据的时效性。 |
max_partitions_in_one_batch | 4096 | 批量创建分区时,分区数目的最大值。 |
max_query_retry_time | 2 | FE 上查询重试的最大次数。 |
max_create_table_timeout_second | 600 | 建表最大超时时间,单位为秒。 |
max_running_rollup_job_num_per_table | 1 | 每个 Table 执行 Rollup 任务的最大并发度。 |
max_planner_scalar_rewrite_num | 100000 | 优化器重写 ScalarOperator 允许的最大次数。 |
enable_statistic_collect | TRUE | 是否采集统计信息,该开关默认打开。 |
enable_collect_full_statistic | TRUE | 是否开启自动全量统计信息采集,该开关默认打开。 |
statistic_auto_collect_ratio | 0.8 | 自动统计信息的健康度阈值。如果统计信息的健康度小于该阈值,则触发自动采集。 |
statistic_max_full_collect_data_size | 100 | 自动统计信息采集的最大分区大小。单位:GB。 如果超过该值,则放弃全量采集,转为对该表进行抽样采集。 |
statistic_collect_interval_sec | 300 | 自动定期采集任务中,检测数据更新的间隔时间,默认为 5 分钟。单位:秒。 |
statistic_auto_analyze_start_time | STRING | 00:00:00 |
statistic_auto_analyze_end_time | STRING | 23:59:59 |
statistic_sample_collect_rows | 200000 | 最小采样行数。如果指定了采集类型为抽样采集(SAMPLE),需要设置该参数。 如果参数取值超过了实际的表行数,默认进行全量采集。 |
histogram_buckets_size | 64 | 直方图默认分桶数。 |
histogram_mcv_size | 100 | 直方图默认 most common value 的数量。 |
histogram_sample_ratio | 0.1 | 直方图默认采样比例。 |
histogram_max_sample_row_count | 10000000 | 直方图最大采样行数。 |
statistics_manager_sleep_time_sec | 60 | 统计信息相关元数据调度间隔周期。单位:秒。系统根据这个间隔周期,来执行如下操作:
|
statistic_update_interval_sec | 24 * 60 * 60 | 统计信息内存 Cache 失效时间。单位:秒。 |
statistic_analyze_status_keep_second | 259200 | 统计信息采集任务的记录保留时间,默认为 3 天。单位:秒。 |
statistic_collect_concurrency | 3 | 手动采集任务的最大并发数,默认为 3,即最多可以有 3 个手动采集任务同时运行。超出的任务处于 PENDING 状态,等待调度。 |
enable_local_replica_selection | FALSE | 是否选择本地副本进行查询。本地副本可以减少数据传输的网络时延。 如果设置为 true,优化器优先选择与当前 FE 相同 IP 的 BE 节点上的 tablet 副本。设置为 false 表示选择可选择本地或非本地副本进行查询。默认为 false。 |
max_distribution_pruner_recursion_depth | 100 | 分区裁剪允许的最大递归深度。增加递归深度可以裁剪更多元素但同时增加 CPU 资源消耗。 |
enable_udf | FALSE | 是否开启 UDF。 |
导入和导出
配置项 | 默认值 | 描述 |
---|---|---|
max_broker_load_job_concurrency | 5 | StarRocks 集群中可以并行执行的 Broker Load 作业的最大数量。本参数仅适用于 Broker Load。取值必须小于 max_running_txn_num_per_db 。从 2.5 版本开始,该参数默认值从 10 变为 5 。参数别名 async_load_task_pool_size 。 |
load_straggler_wait_second | 300 | 控制 BE 副本最大容忍的导入落后时长,超过这个时长就进行克隆,单位为秒。 |
desired_max_waiting_jobs | 1024 | 最多等待的任务数,适用于所有的任务,建表、导入、schema change。 如果 FE 中处于 PENDING 状态的作业数目达到该值,FE 会拒绝新的导入请求。该参数配置仅对异步执行的导入有效。从 2.5 版本开始,该参数默认值从 100 变为 1024。 |
max_load_timeout_second | 259200 | 导入作业的最大超时时间,适用于所有导入,单位为秒。 |
min_load_timeout_second | 1 | 导入作 业的最小超时时间,适用于所有导入,单位为秒。 |
max_running_txn_num_per_db | 1000 | StarRocks 集群每个数据库中正在运行的导入相关事务的最大个数,默认值为 1000 。当数据库中正在运行的导入相关事务超过最大个数限制时,后续的导入不会执行。如果是同步的导入作业请求,作业会被拒绝;如果是异步的导入作业请求,作业会在队列中等待。不建议调大该值,会增加系统负载。 |
load_parallel_instance_num | 1 | 单个 BE 上每个作业允许的最大并发实例数。 |
disable_load_job | FALSE | 是否禁用任何导入任务,集群出问题时的止损措施。设置为 TRUE 时,无法进行导入任务,集群仅处于可读状态。 |
history_job_keep_max_second | 604800 | 历史任务最大的保留时长,例如 schema change 任务,单位为秒。 |
label_keep_max_num | 1000 | 一定时间内所保留导入任务的最大数量。超过之后历史导入作业的信息会被删除。 |
label_keep_max_second | 259200 | 已经完成、且处于 FINISHED 或 CANCELLED 状态的导入作业记录在 StarRocks 系统 label 的保留时长,默认值为 3 天。 该参数配置适用于所有模式的导入作业。单位为秒。设定过大将会消耗大量内存。 |
max_routine_load_task_concurrent_num | 5 | 每个 Routine Load 作业最大并发执行的 task 数。 |
max_routine_load_task_num_per_be | 5 | 每个 BE 最大并发执行的 Routine Load task 数,需要小于等于 BE 的配置项 routine_load_thread_pool_size 。 |
max_routine_load_batch_size | 4294967296 | 每个 Routine Load task 导入的最大数据量,单位为 Byte。 |
routine_load_task_consume_second | 15 |