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 服务。
当前主题包含以下类型的 FE 配置:
统计报告
enable_metric_calculator
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否启用周期性指标聚合线程(metrics calculator)。控制指标计算周期任务的启停;系统级指标初始化由
enable_system_metrics控制。 - 引入版本:-
enable_system_metrics
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:为 true 时,StarRocks 在启动期间初始化系统级监控:它会根据配置的存储路径发现磁盘设备并枚举网络接口,然后将这些信息传入 metrics 子系统以启用磁盘 I/O、网络流量和内存相关的系统指标采集。如果设备或接口发现失败,初始化会记录警告并中止系统指标的设置。该标志仅控制是否初始化系统指标;周期性指标聚合线程由
enable_metric_calculator单独控制,JVM 指标初始化由enable_jvm_metrics控制。更改此值需要重启。 - 引入版本:v3.2.0
profile_report_interval
- 默认值:30
- 类型:Int
- 单位:Seconds
- 是否动态:是
- 描述:ProfileReportWorker 用于(1)决定何时上报 LOAD 查询的每个 fragment 的 profile 信息以及(2)在上报周期之间休眠的间隔(秒)。该 worker 使用 (profile_report_interval * 1000) ms 将当前时间与每个任务的 last_report_time 进行比较,以确定是否需要对非 pipeline 和 pipeline 的 load 任务重新上报 profile。在每次循环中,worker 会读取当前值(运行时可变);如果配置值小于等于 0,worker 会强制将其设为 1 并发出警告。修改此值会影响下一次的上报判断和休眠时长。
- 引入版本:v3.2.0
report_disk_state_interval_seconds
- 默认值:60
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:汇报磁盘状态的间隔。汇报各个磁盘的状态,以及其中数据量等。
- 引入版本:-
report_resource_usage_interval_ms
- 默认值:1000
- 类型:Int
- 单位:毫秒
- 是否动态:是
- 描述:由 BE Agent 定期向 FE 发送资源使用报告的间隔(毫秒)。较低的值能提高报告的及时性,但会增加 CPU、网络和 FE 的负载;较高的值可降低开销但会使资源信息不够实时。上报会更新相关指标(
report_resource_usage_requests_total、report_resource_usage_requests_failed)。请根据集群规模和 FE 负载调整。 - 引入版本:v3.2.0
report_tablet_interval_seconds
- 默认值:60
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:汇报 Tablet 的间隔。汇报所有的 Tablet 的最新版本。
- 引入版本:-
report_task_interval_seconds
- 默认值:10
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:汇报单个任务的间隔。建表,删除表,导入,Schema Change 都可以被认定是任务。
- 引入版本:-
report_workgroup_interval_seconds
- 默认值:5
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:汇报 Workgroup 的间隔。汇报所有 Workgroup 的最新版本。
- 引入版本:-
存储
alter_tablet_worker_count
- 默认值:3
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:进行 Schema Change 的线程数。自 2.5 版本起,该参数由静态变为动态。
- 引入版本:-
automatic_partition_thread_pool_thread_num
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:自动分区线程池的线程数。队列长度自动设置为线程数的 10 倍。
- 引入版本:-
create_tablet_worker_count
- 默认值:3
- 类型:Int
- 单位:Threads
- 是否动态:是
- 描述:处理创建 Tablet 任务(TTaskType::CREATE)的线程池最大线程数。启动时用于初始化 AgentServer 的 CREATE 线程池,运行时修改会更新线程池上限。调大可提升批量建表/分区时的并发,调小可降低资源占用。
- 引入版本:v3.2.0
avro_ignore_union_type_tag
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否在 Avro Union 数据结构序列化成 JSON 格式时,去除 Union 结构的类型标签信息。
- 引入版本:v3.3.7, v3.4
base_compaction_check_interval_seconds
- 默认值:60
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Base Compaction 线程轮询的间隔。
- 引入版本:-
base_compaction_interval_seconds_since_last_operation
- 默认值:86400
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:上一轮 Base Compaction 距今的间隔。此项为 Base Compaction 触发条件之一。
- 引入版本:-
base_compaction_num_threads_per_disk
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:每个磁盘 Base Compaction 线程的数目。
- 引入版本:-
base_cumulative_delta_ratio
- 默认值:0.3
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:Cumulative 文件大小达到 Base 文件的比例。此项为 Base Compaction 触发条件之一。
- 引入版本:-
chaos_test_enable_random_compaction_strategy
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:当此项设置为
true时,TabletUpdates::compaction() 将使用为混沌测试准备的随机压缩策略(compaction_random)。此标志强制在平板的压缩选择中采用非确定性/随机策略,而不是正常策略(例如 size-tiered compaction),并在压缩选择时具有优先权。仅用于可控的测试场景:启用后可能导致不可预测的压缩顺序、增加的 I/O/CPU 和测试不稳定性。请勿在生产环境中启用;仅用于故障注入或混沌测试场景。 - 引入版本:v3.3.12, 3.4.2, 3.5.0, 4.0.0
check_consistency_worker_count
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:计算 Tablet 的校验和(checksum)的线程数。
- 引入版本:-
clear_expired_replication_snapshots_interval_seconds
- 默认值:3600
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:系统清除异常同步遗留的过期快照的时间间隔。
- 引入版本:v3.3.5
compact_threads
- 默认值:4
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:并发 Compaction 任务的最大线程数。自 v3.1.7,v3.2.2 起变为动态参数。
- 引入版本:v3.0.0
compaction_memory_limit_per_worker
- 默认值:2147483648
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:每个 Compaction 线程允许的最大内存大小。
- 引入版本:-
compaction_max_memory_limit_percent
- 默认值:20
- 类型:Int
- 单位:Percent
- 是否动态:否
- 描述:Compaction 内存上限占进程内存的百分比,最终上限取
min(compaction_max_memory_limit, process_mem_limit * percent / 100);process_mem_limit为 -1 时视为不限制。 - 引入版本:-
compaction_max_memory_limit
- 默认值:-1
- 类型:Long
- 单位:Bytes
- 是否动态:否
- 描述:Compaction 内存的字节上限。与
compaction_max_memory_limit_percent共同决定 Compaction 可用的内存预算,取二者计算结果的较小值;-1 表示不单独限制(仍受百分比限制约束)。 - 引入版本:-
compaction_trace_threshold
- 默认值:60
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:单次 Compaction 打印 Trace 的时间阈值,如果单次 Compaction 时间超过该阈值就打印 Trace。
- 引入版本:-
cumulative_compaction_check_interval_seconds
- 默认值:1
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Cumulative Compaction 线程轮询的间隔。
- 引入版本:-
cumulative_compaction_num_threads_per_disk
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:每个磁盘 Cumulative Compaction 线程的数目。
- 引入版本:-
data_page_size
- 默认值:65536
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:构建列数据与索引页时使用的目标未压缩 Page 大小(以字节为单位)。该值会被 Page Builder 用来决定何时完成一个 Page 以及预留多少内存。值为 0 会在构建器中禁用 Page 大小限制。更改此值会影响 Page 数量、元数据开销、内存预留以及 I/O/压缩的权衡(Page 越小 → Page 数和元数据越多;Page 越大 → Page 更少,压缩比更大,但内存峰值可能更大)。
- 引入版本:v3.2.4
default_num_rows_per_column_file_block
- 默认值:1024
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:每个 Row Block 最多存放的行数。
- 引入版本:-
delete_worker_count_high_priority
- 默认值:1
- 类型:Int
- 单位:Threads
- 是否动态:否
- 描述:在 DeleteTaskWorkerPool 中被分配为高优先级删除线程的工作线程数。启动时 AgentServer 使用 total threads = delete_worker_count_normal_priority + delete_worker_count_high_priority 创建删除线程池;前 delete_worker_count_high_priority 个线程被标记为专门尝试弹出 TPriority::HIGH 任务(它们轮询高优先级删除任务,若无可用任务则睡眠/循环)。增加此值可以提高高优先级删除请求的并发性;减少它会降低专用容量并可能增加高优先级删除的延迟。更改需要重启进程才能生效。
- 引入版本:v3.2.0
dictionary_encoding_ratio
- 默认值:0.7
- 类型:Double
- 单位:-
- 是否动态:否
- 描述:字符串列在推测编码阶段决定是否使用字典编码的阈值。计算
max_card = row_count * dictionary_encoding_ratio,当去重基数超过该值时改用 PLAIN_ENCODING,否则使用 DICT_ENCODING。仅在行数超过dictionary_speculate_min_chunk_size且大于字典最小行数时生效。值越高越偏向字典编码,1.0 基本强制字典。 - 引入版本:v3.2.0
dictionary_encoding_ratio_for_non_string_column
- 默认值:0
- 类型:Double
- 单位:-
- 是否动态:否
- 描述:非字符串列是否采用字典编码的比率阈值。大于 0 时,计算
max_card = row_count * 该值,只有 distinct ≤ max_card 才用 DICT_ENCODING,否则回退 BIT_SHUFFLE;0 表示禁用非字符串字典编码。与dictionary_encoding_ratio类似但作用于非字符串列。 - 引入版本:v3.3.0, v3.4.0, v3.5.0
dictionary_page_size
- 默认值:1048576
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:字典页大小。控制单个字典页可容纳的字典条目数,影响写入时的内存占用与压缩效果。过大提升压缩比但占用更多内存/IO,过小则可能降低压缩收益。
- 引入版本:v3.3.0, v3.4.0, v3.5.0
lz4_acceleration
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:LZ4 压缩加速参数,对应 LZ4_fastCompress 的 acceleration。值越大压缩越快但压缩率下降。
- 引入版本:-
lz4_expected_compression_ratio
- 默认值:5.0
- 类型:Double
- 单位:-
- 是否动态:否
- 描述:预期的 LZ4 压缩比,用于评估压缩收益。
- 引入版本:-
lz4_expected_compression_speed_mbps
- 默认值:500
- 类型:Double
- 单位:MB/s
- 是否动态:否
- 描述:预期的 LZ4 压缩速度,用于估算压缩开销。
- 引入版本:-
small_dictionary_page_size
- 默认值:262144
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:小字典页大小,用于小字典场景的页大小控制,影响内存占用与压缩效率。
- 引入版本:-
disk_stat_monitor_interval
- 默认值:5
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:磁盘健康状态检测的间隔。
- 引入版本:-
download_low_speed_limit_kbps
- 默认值:50
- 类型:Int
- 单位:KB/Second
- 是否动态:是
- 描述:单个 HTTP 请求的下载速率下限。如果在
download_low_speed_time秒内下载速度一直低于download_low_speed_limit_kbps,那么请求会被终止。 - 引入版本:-
download_low_speed_time
- 默认值:300
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:单个 HTTP 请求持续以低于
download_low_speed_limit_kbps值的速度运行时,允许运行的最长时间。在配置项中指定的时间跨度内,当一个 HTTP 请求持续以低于该值的速度运行时,该请求将被中止。 - 引入版本:-
download_worker_count
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE 节点下载任务的最大线程数,用于恢复作业。
0表示设置线程数为 BE 所在机器的 CPU 核数。 - 引入版本:-
drop_tablet_worker_count
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:删除 Tablet 的线程数。
0表示当前节点的 CPU 核数的一半。 - 引入版本:-
enable_check_string_lengths
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否在导入时进行数据长度检查,以解决 VARCHAR 类型数据越界导致的 Compaction 失败问题。
- 引入版本:-
enable_event_based_compaction_framework
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否开启 Event-based Compaction Framework。
true代表开启。false代表关闭。开启则能够在 Tablet 数比较多或者单个 Tablet 数据量比较大的场景下大幅降低 Compaction 的开销。 - 引入版本:-
enable_lazy_delta_column_compaction
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:启用后,Compaction 将对由部分列更新产生的 Delta 列采用“懒惰”策略:StarRocks 会避免将 Delta-column 文件立即合并回其主段文件以节省 Compaction 的 I/O。实际上,Compaction 选择代码会检查是否存在部分列更新的 Rowset 和多个候选项;如果发现以上情况且此配置项为
true,引擎要么停止向 Compaction 添加更多输入,要么仅合并空的 Rowset(level -1),将 Delta 列保持分离。这会减少 Compaction 期间的即时 I/O 和 CPU 开销,但以延迟合并为代价(可能产生更多段和临时存储开销)。正确性和查询语义不受影响。 - 引入版本:v3.2.3
enable_new_load_on_memory_limit_exceeded
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:在导入线程内存占用达到硬上限后,是否允许新的导入线程。
true表示允许新导入线程,false表示拒绝新导入线程。 - 引入版本:v3.3.2
enable_pk_index_parallel_compaction
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否启用存算分离集群中主键索引的并行 Compaction。
- 引入版本:-
enable_pk_index_parallel_execution
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否启用存算分离集群中主键索引操作的并行执行。开启后,系统会在发布操作期间使用线程池并发处理分段,显著提升大表的性能。
- 引入版本:-
enable_pk_index_eager_build
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否在导入和 Compaction 阶段即时构建 Primary Key 索引文件。开启后,系统会在数据写入时直接生成持久化的主键索引文件,提升后续查询性能。
- 引入版本:-
enable_pk_size_tiered_compaction_strategy
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否为 Primary Key 表开启 Size-tiered Compaction 策略。
true代表开启。false代表关闭。 - 引入版本:
- 存算分离集群自 v3.2.4, v3.1.10 起生效
- 存算一体集群自 v3.2.5, v3.1.10 起生效
enable_rowset_verify
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否检查 Rowset 的正确性。开启后,会在 Compaction、Schema Change 后检查生成的 Rowset 的正确性。
- 引入版本:-
enable_size_tiered_compaction_strategy
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否开启 Size-tiered Compaction 策略 (Primary Key 表除外)。
true代表开启。false代表关闭。 - 引入版本:-
enable_strict_delvec_crc_check
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:当此项设置为
true后,系统会对 Delete Vector 的 crc32 进行严格检查,如果不一致,将返回失败。 - 引入版本:-
enable_transparent_data_encryption
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:启用后,StarRocks 将为新写入的存储对象(segment 文件、delete/update 文件、rowset segments、lake SSTs、persistent index 文件等)进行磁盘加密。写入路径(RowsetWriter/SegmentWriter、lake UpdateManager/LakePersistentIndex 及相关代码路径)会从 KeyCache 请求加密信息,将 encryption_info 附加到可写文件,并将 encryption_meta 持久化到 rowset / segment / sstable 元数据中(如 segment_encryption_metas、delete/update encryption metadata)。FE 与 FE/CN 的加密标志必须匹配。如果不匹配会导致 BE 在心跳时中止(LOG(FATAL))。此参数不可在运行时修改,必须在第一次部署集群前启用,并确保密钥管理(KEK)与 KeyCache 已在集群中正确配置并同步。
- 引入版本:v3.3.1
enable_zero_copy_from_page_cache
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:允许 FixedLengthColumnBase 在追加来自页缓存的对齐缓冲区时零拷贝复用底层内存(需列为空、长度按元素大小对齐且资源可拥有)。开启可减少拷贝开销、提升导入/扫描吞吐;关闭则强制拷贝以降低耦合风险。
- 引入版本:-
file_descriptor_cache_clean_interval
- 默认值:3600
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:文件描述符缓存清理的间隔,用于清理长期不用的文件描述符。
- 引入版本:-
ignore_broken_disk
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:启动时若配置的存储路径(
storage_root_path/spill_local_storage_dir)读写检查失败或解析失败,是否跳过该路径继续启动。false(默认)遇到坏路径会终止启动;true则忽略并移除坏路径继续启动(若全部路径都坏仍会退出)。开启可能掩盖磁盘故障,需关注日志和磁盘健康。 - 引入版本:v3.2.0
inc_rowset_expired_sec
- 默认值:1800
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:导入生效的数据,存储引擎保留的时间,用于增量克隆。
- 引入版本:-
load_process_max_memory_hard_limit_ratio
- 默认值:2
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:单节点上所有的导入线程占据内存的硬上限(比例)。当
enable_new_load_on_memory_limit_exceeded设置为false,并且所有导入线程的内存占用超过load_process_max_memory_limit_percent * load_process_max_memory_hard_limit_ratio时,系统将会拒绝新的导入线程。 - 引入版本:v3.3.2
load_process_max_memory_limit_percent
- 默认值:30
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:单节点上所有的导入线程占据内存的软上限(百分比)。
- 引入版本:-
lz4_expected_compression_ratio
- 默认值:2.1
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:序列化压缩策略用于判断观察到的 LZ4 压缩是否“良好”的阈值。增大此值会提高期望的压缩比(使条件更难满足),降低则更容易使观察到的压缩被视为令人满意。根据典型数据的可压缩性进行调优。有效范围:MIN=1, MAX=65537。
- 引入版本:v3.4.1, 3.5.0, 4.0.0
lz4_expected_compression_speed_mbps
- 默认值:600
- 类型:Double
- 单位:MB/s
- 是否动态:是
- 描述:自适应压缩策略中用于表示期望 LZ4 压缩吞吐量的值,单位为 MB/s。反馈例程会计算
reward_ratio = (observed_compression_ratio / lz4_expected_compression_ratio) * (observed_speed / lz4_expected_compression_speed_mbps)。当 reward_ratio 大于 1.0 时增加正计数器(alpha),否则增加负计数器(beta);这会影响未来数据是否被压缩。请根据你的硬件上典型的 LZ4 吞吐量调整此值——提高它会使策略更难将一次运行判定为“良好”(需要更高的观测速度),降低则更容易被判定为良好。必须为正的有限数。 - 引入版本:v3.4.1, 3.5.0, 4.0.0
make_snapshot_worker_count
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE 节点快照任务的最大线程数。
- 引入版本:-
make_snapshot_rpc_timeout_ms
- 默认值:2000
- 类型:Int
- 单位:Milliseconds
- 是否动态:否
- 描述:make snapshot 相关 RPC 的超时时长(毫秒),用于快照任务的远端调用。
- 引入版本:-
manual_compaction_threads
- 默认值:4
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:Number of threads for Manual Compaction.
- 引入版本:-
max_base_compaction_num_singleton_deltas
- 默认值:100
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:单次 Base Compaction 合并的最大 Segment 数。
- 引入版本:-
max_compaction_candidate_num
- 默认值:40960
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Compaction 候选 Tablet 的最大数量。太大会导致内存占用和 CPU 负载高。
- 引入版本:-
max_compaction_concurrency
- 默认值:-1
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Compaction 线程数上限(即 BaseCompaction + CumulativeCompaction 的最大并发)。该参数防止 Compaction 占用过多内存。
-1代表没有限制。0表示禁用 Compaction。开启 Event-based Compaction Framework 时,该参数才支持动态设置。 - 引入版本:-
max_cumulative_compaction_num_singleton_deltas
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:单次 Cumulative Compaction 能合并的最大 Segment 数。如果 Compaction 时出现内存不足的情况,可以调小该值。
- 引入版本:-
max_download_speed_kbps
- 默认值:50000
- 类型:Int
- 单位:KB/Second
- 是否动态:是
- 描述:单个 HTTP 请求的最大下载速率。这个值会影响 BE 之间同步数据副本的速度。
- 引入版本:-
max_garbage_sweep_interval
- 默认值:3600
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:磁盘进行垃圾清理的最大间隔。自 3.0 版本起,该参数由静态变为动态。
- 引入版本:-
max_percentage_of_error_disk
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:错误磁盘达到该比例上限,BE 退出。
- 引入版本:-
max_queueing_memtable_per_tablet
- 默认值:2
- 类型:Long
- 单位:-
- 是否动态:是
- 描述:控制写路径的每个 Tablet 的反压:当某个 Tablet 的排队(尚未刷写)memtable 数量达到或超过
max_queueing_memtable_per_tablet时,LocalTabletsChannel和LakeTabletsChannel中的写入者在提交更多写入工作之前会阻塞(sleep/retry)。这可以降低同时进行的 memtable 刷写并减少峰值内存使用,但代价是增加延迟或在高负载下发生 RPC 超时。将此值设高以允许更多并发 memtable(更多内存和 I/O 突发);设低以限制内存压力并增加写入节流。 - 引入版本:v3.2.0
max_row_source_mask_memory_bytes
- 默认值:209715200
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:Row source mask buffer 的最大内存占用大小。当 buffer 大于该值时将会持久化到磁盘临时文件中。该值应该小于
compaction_memory_limit_per_worker参数的值。 - 引入版本:-
max_tablet_write_chunk_bytes
- 默认值:536870912
- 类型:long
- 单位:Bytes
- 是否动态:是
- 描述:当前内存 tablet 写入 chunk 在被视为已满并入队发送之前允许的最大内存(以字节为单位)。增大此值可以在加载宽表(列数多)时减少 RPC 频率,从而提高吞吐量,但代价是更高的内存使用和更大的 RPC 负载。需要调整此值以在减少 RPC 次数与内存及序列化/BRPC 限制之间取得平衡。
- 引入版本:v3.2.12
max_update_compaction_num_singleton_deltas
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键表单次 Compaction 合并的最大 Rowset 数。
- 引入版本:-
memory_limitation_per_thread_for_schema_change
- 默认值:2
- 类型:Int
- 单位:GB
- 是否动态:是
- 描述:单个 Schema Change 任务允许占用的最大内存。
- 引入版本:-
memory_ratio_for_sorting_schema_change
- 默认值:0.8
- 类型:Double
- 单位:- (unitless ratio)
- 是否动态:是
- 描述:在排序型 schema-change 操作期间,用作 memtable 最大缓冲区大小的每线程 schema-change 内存限制的比例。该比例会与 memory_limitation_per_thread_for_schema_change(以 GB 配置并转换为字节)相乘以计算 max_buffer_size,且结果上限为 4GB。SchemaChangeWithSorting 和 SortedSchemaChange 在创建 MemTable/DeltaWriter 时使用此值。增大该比例允许更大的内存缓冲区(减少 flush/merge 次数),但会增加内存压力风险;减小该比例会导致更频繁的 flush,从而增加 I/O/merge 开销。
- 引入版本:v3.2.0
min_base_compaction_num_singleton_deltas
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:触发 Base Compaction 的最小 Segment 数。
- 引入版本:-
min_compaction_failure_interval_sec
- 默认值:120
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Tablet Compaction 失败之后,再次被调度的间隔。
- 引入版本:-
min_cumulative_compaction_failure_interval_sec
- 默认值:30
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Cumulative Compaction 失败后的最小重试间隔。
- 引入版本:-
min_cumulative_compaction_num_singleton_deltas
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:触发 Cumulative Compaction 的最小 Segment 数。
- 引入版本:-
min_garbage_sweep_interval
- 默认值:180
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:磁盘进行垃圾清理的最小间隔。自 3.0 版本起,该参数由静态变为动态。
- 引入版本:-
parallel_clone_task_per_path
- 默认值:8
- 类型:Int
- 单位:Threads
- 是否动态:是
- 描述:在 BE 的每个存储路径上分配的并行 clone 工作线程数。BE 启动时,clone 线程池的最大线程数计算为 max(number_of_store_paths * parallel_clone_task_per_path, MIN_CLONE_TASK_THREADS_IN_POOL)。例如,若有 4 个存储路径且默认=8,则 clone 池最大 = 32。此设置直接控制 BE 处理的 CLONE 任务(tablet 副本拷贝)的并发度:增加它会提高并行 clone 吞吐量,但也会增加 CPU、磁盘和网络争用;减少它会限制同时进行的 clone 任务并可能限制 FE 调度的 clone 操作。该值应用于动态 clone 线程池,可通过 update-config 路径在运行时更改(会导致 agent_server 更新 clone 池的最大线程数)。
- 引入版本:v3.2.0
pending_data_expire_time_sec
- 默认值:1800
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:存储引擎保留的未生效数据的最大时长。
- 引入版本:-
pindex_major_compaction_limit_per_disk
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:每块盘 Compaction 的最大并发数,用于解决 Compaction 在磁盘之间不均衡导致个别磁盘 I/O 过高的问题。
- 引入版本:v3.0.9
pk_index_compaction_score_ratio
- 默认值:1.5
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引的 Compaction 分数比率。例如,如果有 N 个文件集,Compaction 分数将为
N * pk_index_compaction_score_ratio。 - 引入版本:-
pk_index_early_sst_compaction_threshold
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引 early SST Compaction 的阈值。
- 引入版本:-
pk_index_memtable_flush_threadpool_max_threads
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引 MemTable 刷盘的线程池最大线程数。0 表示自动设置为 CPU 核数的一半。
- 引入版本:-
pk_index_memtable_flush_threadpool_size
- 默认值:1048576
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:控制用于存算分离(云原生 / 数据湖)模式下 PK 索引 memtable 刷写的线程池(在 ExecEnv 中创建为 "cloud_native_pk_index_flush")的最大队列大小(待处理任务数量)。该线程池的最大线程数由
pk_index_memtable_flush_threadpool_max_threads管理。增大此值允许在执行前缓冲更多的 memtable flush 任务,这可以减少即时背压,但会增加由排队任务对象消耗的内存。减小它可以限制被缓冲的任务数量,并可能根据线程池行为更早引发背压或任务被拒绝。请根据可用内存和预期并发 flush 工作量进行调优。 - 引入版本:-
pk_index_memtable_max_count
- 默认值:2
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引的最大 MemTable 数量。
- 引入版本:-
pk_index_memtable_max_wait_flush_timeout_ms
- 默认值:30000
- 类型:Int
- 单位:毫秒
- 是否动态:是
- 描述:存算分离集群中,等待主键索引 MemTable 刷盘完成的最大超时时间。当需要同步刷盘所有 MemTable 时(例如在 ingest SST 操作之前),系统最多等待该时间。默认为 30 秒。
- 引入版本:-
pk_index_parallel_compaction_task_split_threshold_bytes
- 默认值:33554432
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键索引 Compaction 任务拆分的阈值。当任务涉及的文件总大小小于此阈值时,任务将不会被拆分。默认为 32MB。
- 引入版本:-
pk_index_parallel_compaction_threadpool_max_threads
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引并行 Compaction 的线程池最大线程数。0 表示自动设置为 CPU 核数的一半。
- 引入版本:-
pk_index_parallel_execution_min_rows
- 默认值:16384
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,启用主键索引并行执行的最小行数阈值。
- 引入版本:-
pk_index_parallel_execution_threadpool_max_threads
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:存算分离集群中,主键索引并行执行的线程池最大线程数。0 表示自动设置为 CPU 核数的一半。
- 引入版本:-
pk_index_size_tiered_level_multiplier
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键索引 Size-Tiered Compaction 策略的层级倍数参数。
- 引入版本:-
pk_index_size_tiered_max_level
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键索引 Size-Tiered Compaction 策略的层级数量参数。
- 引入版本:-
pk_index_size_tiered_min_level_size
- 默认值:131072
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键索引 Size-Tiered Compaction 策略的最小层级大小参数。
- 引入版本:-
pk_index_sstable_sample_interval_bytes
- 默认值:16777216
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:存算分离集群中,主键索引 SSTable 文件的采样间隔大小。当 SSTable 文件大小超过该阈值时,系统会按照此间隔对 SSTable 中的键进行采样,用于优化 Compaction 任务的边界划分;对于小于该阈值的 SSTable,仅使用起始键作为边界键。默认为 16 MB。
- 引入版本:-
pk_index_target_file_size
- 默认值:67108864
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:存算分离集群中,主键索引的目标文件大小。
- 引入版本:-
pk_index_eager_build_threshold_bytes
- 默认值:104857600
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:当
enable_pk_index_eager_build设置为true后,导入或 Compaction 生成的数据大于该阈值时,系统才会即时构建主键索引文件。默认为 100MB。 - 引入版本:-
primary_key_limit_size
- 默认值:128
- 类型:Int
- 单位:Byte
- 是否动态:是
- 描述:主键表中单条主键值最大长度。
- 引入版本:v2.5
release_snapshot_worker_count
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE 节点释放快照任务的最大线程数。
- 引入版本:-
repair_compaction_interval_seconds
- 默认值:600
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Repair Compaction 线程轮询的间隔。
- 引入版本:-
replication_max_speed_limit_kbps
- 默认值:50000
- 类型:Int
- 单位:KB/s
- 是否动态:是
- 描述:每个同步线程的最大速度。
- 引入版本:v3.3.5
replication_min_speed_limit_kbps
- 默认值:50
- 类型:Int
- 单位:KB/s
- 是否动态:是
- 描述:每个同步线程的最小速度。
- 引入版本:v3.3.5
replication_min_speed_time_seconds
- 默认值:300
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:同步线程低于最低速度所允许的持续时间。如果实际速度低于
replication_min_speed_limit_kbps的时间超过此值,同步将失败。 - 引入版本:v3.3.5
replication_threads
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:用于同步的最大线程数。0 表示将线程数设置为 BE CPU 内核数的四倍。
- 引入版本:v3.3.5
size_tiered_level_multiple
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Size-tiered Compaction 策略中,相邻两个 Level 之间相差的数据量的倍数。
- 引入版本:-
size_tiered_level_multiple_dupkey
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Size-tiered Compaction 策略中,Duplicate Key 表相邻两个 Level 之间相差的数据量的倍数。
- 引入版本:-
size_tiered_level_num
- 默认值:7
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Size-tiered Compaction 策略的 Level 数量。每个 Level 最多保留一个 Rowset,因此稳定状态下最多会有和 Level 数相同的 Rowset。
- 引入版本:-
size_tiered_max_compaction_level
- 默认值:7
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Size-tiered Compaction 允许的最大合并层级,超过该层级的输入不再向上合并。
- 引入版本:-
size_tiered_min_level_size
- 默认值:131072
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:Size-tiered Compaction 策略中,最小 Level 的大小,小于此数值的 Rowset 会直接触发 Compaction。
- 引入版本:-
snapshot_expire_time_sec
- 默认值:172800
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:快照文件清理的间隔。
- 引入版本:-
stale_memtable_flush_time_sec
- 默认值:0
- 类型:Long
- 单位:Seconds
- 是否动态:是
- 描述:当内存接近限制时,超过该时间未被更新的 MemTable 会被提前 Flush 以缓解内存压力;0 表示禁用按“陈旧时间”触发的刷盘(仍可能因高内存或不可变分区触发)。
- 引入版本:v3.2.0
storage_flood_stage_left_capacity_bytes
- 默认值:107374182400
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:BE 存储目录整体磁盘剩余空间的硬限制。如果剩余空间小于该值且空间使用率超过
storage_flood_stage_usage_percent,StarRocks 会拒绝 Load 和 Restore 作业,默认 100GB。需要同步修改 FE 配置storage_usage_hard_limit_reserve_bytes以使其生效。 - 引入版本:-
storage_flood_stage_usage_percent
- 默认值:95
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE 存储目录整体磁盘空间使用率的硬上限。如果空间使用率超过该值且剩余空间小于
storage_flood_stage_left_capacity_bytes,StarRocks 会拒绝 Load 和 Restore 作业。需要同步修改 FE 配置storage_usage_hard_limit_percent以使其生效。 - 引入版本:-
storage_high_usage_disk_protect_ratio
- 默认值:0.1
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:创建 Tablet 时,为避免高使用率磁盘被优先选择,系统会计算所有磁盘的平均使用率,超过“平均 + 本阈值”的磁盘将被暂时排除优先选择。设为 0 可关闭此保护。
- 引入版本:v3.2.0
storage_medium_migrate_count
- 默认值:3
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:介质迁移的线程数,用于从 SATA 迁移到 SSD。
- 引入版本:-
storage_root_path
- 默认值:
${STARROCKS_HOME}/storage - 类型:String
- 单位:-
- 是否动态:否
- 描述:存储数据的目录以及存储介质类型。示例:
/data1,medium:hdd;/data2,medium:ssd。- 多块盘配置使用分号
;隔开。 - 如果为 SSD 磁盘,需在路径后添加
,medium:ssd。 - 如果为 HDD 磁盘,需在路径后添加
,medium:hdd。
- 多块盘配置使用分号
- 引入版本:-
sync_tablet_meta
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否启用 Tablet 元数据同步。
true表示开启,false表示不开启。 - 引入版本:-
tablet_map_shard_size
- 默认值:1024
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:Tablet Map Shard 大小。该值必须是二的倍数。
- 引入版本:-
tablet_max_pending_versions
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键表每个 Tablet 上允许已提交 (Commit) 但是未 Apply 的最大版本数。
- 引入版本:-
tablet_max_versions
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:每个 Tablet 上允许的最大版本数。如果超过该值,新的写入请求会失败。
- 引入版本:-
tablet_meta_checkpoint_min_interval_secs
- 默认值:600
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:TabletMeta Checkpoint 线程轮询的时间间隔。
- 引入版本:-
tablet_meta_checkpoint_min_new_rowsets_num
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:自上次 TabletMeta Checkpoint 至今新创建的 Rowset 数量。
- 引入版本:-
tablet_rowset_stale_sweep_time_sec
- 默认值:1800
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:失效 Rowset 的清理间隔。
- 引入版本:-
tablet_stat_cache_update_interval_second
- 默认值:300
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Tablet Stat Cache 的更新间隔。
- 引入版本:-
lake_enable_accurate_pk_row_count
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否为存算分离(Lake)主键表 tablet 使用精确行数统计。开启后会读取每个 rowset 在对象存储中的 delete vector 来扣减删除行,统计更准确,但会显著增加
get_tablet_statsRPC 的开销;关闭后使用 rowset 元数据中的近似num_dels,可避免远端 I/O,但对“已删除但尚未 compaction”的行可能略有高估。 - 引入版本:-
lake_tablet_stat_slow_log_ms
- 默认值:300000
- 类型:Int64
- 单位:Milliseconds
- 是否动态:是
- 描述:Tablet 统计采集慢日志阈值(毫秒)。单次 tablet 统计任务耗时超过该阈值时,会输出告警日志,附带
tablet_id、版本、rowset 数、是否精确模式和耗时等诊断信息。 - 引入版本:-
lake_metadata_fetch_thread_count
- 默认值:3
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:用于存算分离表 tablet 元数据获取操作(例如
get_tablet_stats、get_tablet_metadatas)的线程数。 - 引入版本:v3.5.16, v4.0.9
tablet_writer_open_rpc_timeout_sec
- 默认值:300
- 类型:Int
- 单位:Seconds
- 是否动态:是
- 描述:远端打开 Tablet Writer 的 RPC 超时时长,转换为毫秒应用于请求和 brpc control。实际生效为
min(tablet_writer_open_rpc_timeout_sec, load_timeout_sec/2),过小易早退,过大则延迟错误处理。 - 引入版本:v3.2.0
trash_file_expire_time_sec
- 默认值:86400
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:回收站清理的间隔。自 v2.5.17、v3.0.9 以及 v3.1.6 起,默认值由 259200 变为 86400。
- 引入版本:-
unused_rowset_monitor_interval
- 默认值:30
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:清理过期 Rowset 的时间间隔。
- 引入版本:-
path_gc_check
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否开启存储路径的垃圾回收检查。关闭后不会对存储路径执行 GC,可能导致无用文件堆积。
- 引入版本:-
path_gc_check_interval_second
- 默认值:86400
- 类型:Int
- 单位:Seconds
- 是否动态:是
- 描述:存储路径垃圾回收检查的执行间隔。
- 引入版本:-
update_cache_expire_sec
- 默认值:360
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:Update Cache 的过期时间。
- 引入版本:-
update_compaction_check_interval_seconds
- 默认值:10
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:主键表 Compaction 的检查间隔。
- 引入版本:-
update_compaction_chunk_size_for_row_store
- 默认值:0
- 类型:Int
- 单位:Rows
- 是否动态:是
- 描述:row-store 形态的 Tablet 在更新 Compaction 时强制使用的 chunk 行数。0 表示按默认公式自适应计算;大于 0 时直接使用该值,可能提升吞吐但增加内存占用,或调小以降低内存压力。
- 引入版本:v3.2.3
update_compaction_delvec_file_io_amp_ratio
- 默认值:2
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:用于控制主键表包含 Delvec 文件的 Rowset 做 Compaction 的优先级。该值越大优先级越高。
- 引入版本:-
update_compaction_num_threads_per_disk
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键表每个磁盘 Compaction 线程的数目。
- 引入版本:-
update_compaction_per_tablet_min_interval_seconds
- 默认值:120
- 类型:Int
- 单位:秒
- 是否动态:是
- 描述:主键表每个 Tablet 做 Compaction 的最小时间间隔。
- 引入版本:-
update_compaction_ratio_threshold
- 默认值:0.5
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:存算分离集群下主键表单次 Compaction 可以合并的最大数据比例。如果单个 Tablet 过大,建议适当调小该配置项取值。
- 引入版本:v3.1.5
update_compaction_result_bytes
- 默认值:1073741824
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:主键表单次 Compaction 合并的最大结果的大小。
- 引入版本:-
update_compaction_size_threshold
- 默认值:268435456
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:主键表的 Compaction Score 是基于文件大小计算的,与其他表类型的文件数量不同。通过该参数可以使主键表的 Compaction Score 与其他类型表的相近,便于用户理解。
- 引入版本:-
upload_worker_count
- 默认值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:BE 节点上传任务的最大线程数,用于备份作业。
0表示设置线程数为 BE 所在机器的 CPU 核数。 - 引入版本:-
vertical_compaction_max_columns_per_group
- 默认值:5
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:每组 Vertical Compaction 的最大列数。
- 引入版本:-