BE 配置项 - 存算分离、数据湖和其他
部分 BE 节点配置项为动态参数,您可以通过命令在线修改。其他配置项为静态参数,需要通过修改 be.conf 文件后重启 BE 服务使相关修改生效。
查看 BE 配置项
您可以通过以下命令查看 BE 配置项:
SELECT * FROM information_schema.be_configs [WHERE NAME LIKE "%<name_pattern>%"]
配置 BE 参数
配置 BE 动态参数
您可以通过更新 information_schema.be_configs 中的值来配置 BE 节点的动态参数。
warning
设置无效的值可能会导致未知行为。在运行更新配置的命令之前,请务必仔细核对。
-- 将 <config_key> 替换为配置键,将 <config_value> 替换为配置值。
UPDATE information_schema.be_configs SET VALUE = <config_value> WHERE name = "<config_key>";
配置 BE 静态参数
BE 静态参数不支持在线修改,您需要在 be.conf 中修改并重启 BE 服务。
当前主题包含以下类型的 BE 配置:
存算分离
cloud_native_pk_index_rebuild_files_threshold
- 默认值:50
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:云原生主键索引在恢复(Rebuild)时允许重建的最大 Segment 文件数。若需要重建的文件数超过该阈值,StarRocks 会立即将内存中的 MemTable 刷盘,以减少需要重放的 Segment 数量。设置为
0则禁用此提前刷盘策略。 - 引入版本:-
cloud_native_pk_index_rebuild_rows_threshold
- 默认值:10000000
- 类型:Long
- 单位:行
- 是否动态:是
- 描述:云原生主键索引在恢复(Rebuild)时允许重建的最大行数。若需要重建的行数超过该阈值,StarRocks 会立即将内存中的 MemTable 刷盘,以降低索引重建开销。设置为
0则禁用此提前刷盘策略。与cloud_native_pk_index_rebuild_files_threshold配合使用,任一阈值超出均会触发刷盘。此行数包含 Segment 行数以及 del 文件中记录的 tombstone(删除)行数,因此产生少量大型 del 文件的删除密集型负载也会计入该阈值;旧版本写入、未记录行数的 del 文件按 0 计。 - 引入版本:-
download_buffer_size
- 默认值:4194304
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:下载快照文件时每条传输流使用的内存缓冲区大小(fs::copy 的单次读写块大小)。值越大吞吐越高但每个并发下载占用更多内存。
- 引入版本:v3.2.13
graceful_exit_wait_for_frontend_heartbeat
- 默认值:false
- 类型: Boolean
- 单位:-
- 是否动态:是
- 描述: 确定是否在完成优雅退出前等待至少一个指示SHUTDOWN状态的FE心跳响应。启用后,优雅关闭进程将持续运行直至通过心跳RPC返回给FE SHUTDOWN状态变化,确保FE在两次常规心跳探测间隔期间有足够时间感知终止状态。
- 引入版本:v3.4.5
lake_compaction_stream_buffer_size_bytes
- 默认值:1048576
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:存算分离集群 Compaction 任务在远程 FS 读 I/O 阶段的 Buffer 大小。默认值为 1MB。您可以适当增大该配置项取值以加速 Compaction 任务。
- 引入版本:v3.2.3
lake_enable_pk_preserve_txn_delete_order
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:存算分离集群下,是否在单个导入事务内保留主键表 UPSERT 与 DELETE 的先后顺序。当同一个导入事务中同一个 key 先
DELETE后再UPSERT时,开启该配置后以最后写入的UPSERT为准(与存算一体集群行为一致)。出于降级安全考虑,默认关闭:开启后,导入可能会持久化新版本格式的元数据,若 BE 回滚到不支持该修复的版本会被错误解析,可能产生主键重复。请仅在整个集群已升级到支持该特性的版本、且不再计划回滚之后开启。关闭时,DELETE 回退到旧有行为(在事务内所有 UPSERT 之后生效)。 - 引入版本:-
lake_enable_protobuf_file_checksum
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否在写入存算分离集群的 Tablet 元数据和事务日志文件时附加 Adler-32 校验和,以便在读取时检测这些文件是否损坏。无论该配置项如何设置,读取端在文件包含校验和时都会自动识别并校验;该配置项仅控制写入格式。仅当集群仍可能降级到不支持该校验和格式的版本时,才将该配置项设置为
false。在滚动升级或降级期间,旧版本的 BE 或 CN 使用旧的读取逻辑,无法解析新格式写入的文件。 - 引入版本:v4.2
lake_pk_compaction_max_input_rowsets
- 默认值:500
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群下,主键表 Compaction 任务中允许的最大输入 Rowset 数量。该参数默认值自 v3.2.4 和 v3.1.10 版本开始从
5变更为1000,并自 v3.3.1 和 v3.2.9 版本开始变更为500。存算分离集群中的主键表在开启 Sized-tiered Compaction 策略后 (即设置enable_pk_size_tiered_compaction_strategy为true),无需通过限制每次 Compaction 的 Rowset 个数来降低写放大,因此调大该值。 - 引入版本:v3.1.8, v3.2.3
lake_pk_compaction_base_delete_ratio_threshold
- 默认值:0.5
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:存算分离集群下,将主键表 Tablet 从 Cumulative Compaction(Size-tiered 小文件合并)切换到 Base Compaction 的两个触发条件之一。Base Compaction 会重写带删除的 Rowset(删除行数多的优先),物理清除被删除的行并缩小其 Delete Vector。当 Tablet 的整体删除比例(各 Rowset 的
sum(num_dels) / sum(num_rows))达到该值、其累计删除行数达到lake_pk_compaction_base_delete_rows_threshold、或手动执行ALTER TABLE ... COMPACT强制 Base Compaction 时触发。将两个阈值都调至足够大可关闭自动触发。 - 引入版本:v4.1.4
lake_pk_compaction_base_delete_rows_threshold
- 默认值:10000000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群下主键表 Base Compaction 的两个触发条件之一(参见
lake_pk_compaction_base_delete_ratio_threshold)。当 Tablet 的累计删除行数(各 Rowset 的sum(num_dels))达到该值时触发 Base Compaction。该绝对数量触发条件是对比例触发条件的补充:在高频更新/删除的表上,Delete Vector 会膨胀、空间被浪费,但整体删除比例可能因大量存活行的稀释而偏低,仅靠比例触发条件不会触发。调大该值可降低 Base Compaction 频率,调小则可更早回收 Delete Vector。 - 引入版本:v4.1.4
lake_put_txn_log_timeout_guard_ms
- 默认值:-1
- 类型:Int64
- 单位:毫秒
- 是否动态:是
- 描述:存算分离集群下,向对象存储写入事务日志(
put_txn_log和put_combined_txn_log路径)的超时守护阈值。如果写入一条事务日志的耗时超过该值,StarRocks 会将慢线程的堆栈打印到 BE 日志,以便诊断对象存储写入慢的问题。默认关闭(小于或等于0表示关闭该守护);如需开启,可将其设置为正值,例如4000(4 秒)。 - 引入版本:-
lake_rows_mapper_read_parallelism
- 默认值:32
- 类型:Int
- 单位:sub-chunk 个数
- 是否动态:是
- 描述:存算分离集群下,主键表轻量 Compaction 发布阶段,
RowsMapperIterator读取.lcrm(lake compaction rows-mapper)文件时,允许同时 in-flight 的 sub-chunk 读取数量上限。每个 sub-chunk 大小由lake_rows_mapper_sub_chunk_bytes控制,且不跨 segment 边界。迭代器最多向 PK index 执行线程池提交该数量的并发读取请求,让远端读取与调用方的 per-segment 处理流水化进行。内存上限为lake_rows_mapper_read_parallelism * lake_rows_mapper_sub_chunk_bytes。设为1可关闭流水化,回退到顺序读取。
lake_rows_mapper_sub_chunk_bytes
- 默认值:4194304
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:存算分离集群下,主键表轻量 Compaction 发布阶段,
RowsMapperIterator流 水化读取.lcrm文件时使用的 sub-chunk 粒度。每个输出 segment 被切分为ceil(segment_bytes / lake_rows_mapper_sub_chunk_bytes)个 sub-chunk,独立流水化。值越小,少而大的输出 segment 能获得越高的并发度,但代价是更多的范围读取和消费时一次额外的 memcpy。默认 4 MiB,与 starcache 磁盘层 block 大小对齐。
lake_vacuum_min_batch_delete_size
- 默认值:200
- 类型:Int64
- 单位:文件数
- 是否动态:是
- 描述:存算分离集群下,Vacuum 单次
DeleteObjects请求批量合并的过期文件数量。批量越大,单次调用摊销的 HTTP/认证/签名等固定开销越多,且对对象存储 prefix 级别的请求频次压力越小;代价是单次调用 latency 升高、出现瞬时错误需要 retry 时回放成本增大。AWS S3 用户可以进一步将该值调到协议上限1000,因为 AWS S3 单DeleteObjects服务端耗时几乎与 batch size 无关。
loop_count_wait_fragments_finish
- 默认值:2
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE/CN 退出时需要等待正在执行的查询完成的轮次,一轮次固定 10 秒。设置为
0表示禁用 轮询等待,立即退出。自 v3.4 起,该参数变为动态参数,且默认值由0变为2。 - 引入版本:v2.5
max_client_cache_size_per_host
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE 范围内的客户端缓存为每个远程主机保留的最大缓存 client 实例数。提高此值可以减少重连和 stub 创建开销,但会增加内存和文件描述符使用;降低它则节省资源但可能增加连接 churn。该值在启动时读取,运行时无法更改。目前一个共享设置控制所有客户端缓存类型;将来可能会引入每种缓存的独立配置。
- 引入版本:v3.2.0
starlet_filesystem_instance_cache_capacity
- 默认值:10000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:starlet filesystem 实例的缓存容量。
- 引入版本:v3.2.16, v3.3.11, v3.4.1
starlet_filesystem_instance_cache_ttl_sec
- 默认值:86400
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:starlet filesystem 实例缓存的过期时间。
- 引入版本:v3.3.15, 3.4.5
starlet_port
- 默认值:9070
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE 和 CN 的额外 Agent 服务端口。
- 引入版本:-
starlet_star_cache_disk_size_percent
- 默认值:80
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:存算分离集群中,Data Cache 最多可使用的磁盘容量百分比。仅在
datacache_unified_instance_enable为false时生效。 - 引入版本:v3.1
starlet_use_star_cache
- 默认值:false(v3.1)true(v3.2.3 起)
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:存算分离集群中是否使 用 Data Cache。
true表示启用该功能,false表示禁用。自 v3.2.3 起,默认值由false调整为true。 - 引入版本:v3.1
starlet_write_file_with_tag
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:存算分离集群下,是否将写入到对象存储的文件打上对象存储 Tag,方便自定义管理文件。
- 引入版本:v3.5.3
table_schema_service_max_retries
- 默认值:3
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Table Schema Service 请求的最大重试次数。
- 引入版本:v4.1
数据湖
datacache_block_buffer_enable
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否启用 Block Buffer 优化 Data Cache 效率。当启用 Block Buffer 时,系统会从 Data Cache 中读取完整的 Block 数据并缓存在临时 Buffer 中,从而减少频繁读取缓存带来的额外开销。
- 引入版本:v3.2.0
datacache_disk_adjust_interval_seconds
- 默认值:10
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Data Cache 容量自动调整周期。每隔这段时间系统会进行一次缓存磁盘使用率检测,必要时触发相应扩缩容操作。
- 引入版本:v3.3.0
datacache_disk_idle_seconds_for_expansion
- 默认值:7200
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Data Cache 自动扩容最小等待时间。只有当磁盘使用率在
datacache_disk_low_level以下持续时间超过该时长,才会触发自动扩容。 - 引入版本:v3.3.0