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 配置:
查询引擎
agg_hash_map_prefetch_dist
- 默认值:16
- 类型:Int
- 单位:行
- 是否动态:是
- 描述:聚合哈希表/哈希集探测循环的软件预取距离(以行数为单位)。在构建聚合哈希表时,该循环会预取当前处理行前方指定行数范围内的桶,从而在处理大型表时隐藏内存延迟。将其设置为
0将禁用软件预取。该值每处理一个 Chunk 读取一次,因此更改将 在下一个 Chunk 生效。默认值 16 是针对驻留 L3 缓存的表的经验设定;对于驻留 DRAM 的工作负载应提高该值,对于驻留缓存的工作负载则应降低该值。预取还受agg_prefetch_l2_ratio控制:无论该距离如何,只要哈希表仍能驻留 L2 缓存中,就不会发出预取请求。 - 引入版本:-
agg_prefetch_l2_ratio
- 默认值:1.0
- 类型:Double
- 单位:-
- 是否动态:是
- 描述:根据 L2 驻留情况控制聚合哈希表的软件预取。仅当桶数组溢出 L2 时才会启用预取,即当
bucket_count * slot_bytes >= L2_size * agg_prefetch_l2_ratio时,其中 L2 大小在运行时检测(若检测失败则回退为 1 MiB)。在此阈值以下,哈希表驻留于 L2 中,此时预取会导致净损耗。在每个核心运行多个驱动程序且竞争激烈的部署环境中,应降低该比率——此时每个哈希表实际占用的 L2 空间小于名义上的每核心大小;将其提高至 1.0 以上会延迟预取,直到哈希表远超 L2 容量。另请参阅agg_hash_map_prefetch_dist。 - 引入版本:-
clear_udf_cache_when_start
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否在 BE 启动时清除所有本地 缓存的用户函数库。启用后,BE 将在 UserFunctionCache 初始化时删除 UDF 目录下的
.jar/.py文件,并在首次使用时重新下载,会增加网络流量和首次使用延迟。禁用(默认)时,BE 直接加载已有缓存文件。 - 引入版本:v4.0.0
dictionary_speculate_min_chunk_size
- 默认值:10000
- 类型:Int
- 单位:Rows
- 是否动态:否
- 描述:StringColumnWriter 和 DictColumnWriter 用于触发字典编码推测的最小行数(chunk 大小)。如果传入列(或累积缓冲区加上传入行)大小大于等于
dictionary_speculate_min_chunk_size,写入器将立即运行推测并设置一种编码(DICT、PLAIN 或 BIT_SHUFFLE),而不是继续缓冲更多行。对于字符串列,推测使用dictionary_encoding_ratio来决定字典编码是否有利;对于数值/非字符串列,使用dictionary_encoding_ratio_for_non_string_column。此外,如果列的 byte_size 很大(大于等于 UINT32_MAX),会强制立即进行推测以避免BinaryColumn<uint32_t>溢出。 - 引入版本:v3.2.0
disable_storage_page_cache
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否开启 PageCache。
- 开启 PageCache 后,StarRocks 会缓存最近扫描过的数据,
- 对于查询重复性高的场景,会大幅提升查询效率。
true表示不开启。- 自 2.4 版本起,该参数默认值由
true变更为false。自 3.1 版本起,该参数由静态变为动态。
- 引入版本:-
enable_bitmap_index_memory_page_cache
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否为 Bitmap index 开启 Memory Cache。使用 Bitmap index 加速点查时,可以考虑开启。
- 引入版本:v3.1
enable_compaction_flat_json
- 默认值:True
- 类型:Bool
- 单位:
- 是否动态:是
- 描述:控制是否为 Flat Json 数据进行 Compaction。
- 引入版本:v3.3.3
enable_json_flat
- 默认值:false
- 类型:Boolean
- 单位:
- 是否动态:是
- 描述:是否开启 Flat JSON 特性。开启后新导入的 JSON 数据会自动打平,提升 JSON 数据查询性能。
- 引入版本:v3.3.0
enable_lazy_dynamic_flat_json
- 默认值:True
- 类型:Bool
- 单位:
- 是否动态:是
- 描述:当查询在读过程中未命中 Flat JSON Schema 时,是否启用 Lazy Dynamic Flat JSON。当此项设置为
true时,StarRocks 将把 Flat JSON 操作推迟到计算流程,而不是读取流程。 - 引入版本:v3.3.3
enable_ordinal_index_memory_page_cache
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否为 Ordinal index 开启 Memory Cache。Ordinal index 是行号到数据 page position 的映射,可以加速 Scan。
- 引入版本:-
enable_string_prefix_zonemap
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否为字符串(CHAR/VARCHAR)列启用基于前缀的 Zonemap 索引。对于非键列,最小值/最大值会截断到由
string_prefix_zonemap_prefix_len配置的前缀长度。 - 引入版本:-
enable_zonemap_index_memory_page_cache
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:是否为 Zonemap index 开启 Memory Cache。使用 Zonemap index 加速 Scan 时,可以考虑开启。
- 引入版本:-
exchg_node_buffer_size_bytes
- 默认值:10485760
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:Exchange 算子中,单个查询在接收端的 Buffer 容量。这是一个软限制,如果数据的发送速度过快,接收端会触发反压来限制发送速度。
- 引入版本:-
exec_state_report_max_threads
- 默认值:2
- 类型:Int
- 单位:Threads
- 是否动态:是
- 描述:exec-state-report 线程池的最大线程数。该线程池由
ExecStateReporter用于将普通优先级的执行状态报告(如 Fragment 完成状态、错误状态等)从 BE 异步地通过 RPC 上报给 FE。启动时实际使用的线程数为max(1, exec_state_report_max_threads)。运行时修改此配置会触发对所有 Executor Set(共享和独占)中线程池调用update_max_threads。该线程池的任务队列大小固定为 1000,当所有线程繁忙且队列已满时,新的上报任务将被静默丢弃。高优先级线程池由priority_exec_state_report_max_threads控制。若在高并发查询场景下观察到执行状态上报延迟或丢失,可适当增大此值。 - 引入版本:v4.1.0, v4.0.8, v3.5.15
file_descriptor_cache_capacity
- 默认值:16384
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:文件描述符缓存的容量。
- 引入版本:-
flamegraph_tool_dir
- 默认值:
${STARROCKS_HOME}/bin/flamegraph - 类型:String
- 单位:-
- 是否动态:否
- 描述:火焰图工具的目录,该 目录应包含 pprof、stackcollapse-go.pl 和 flamegraph.pl 脚本,用于从性能分析数据生成火焰图。
- 引入版本:-
fragment_pool_queue_size
- 默认值:2048
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:单 BE 节点上能够处理的查询请求上限。
- 引入版本:-
fragment_pool_thread_num_max
- 默认值:4096
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:最大查询线程数。
- 引入版本:-
fragment_pool_thread_num_min
- 默认值:64
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:最小查询线程数。
- 引入版本:-
hdfs_client_enable_hedged_read
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否开启 Hedged Read 功能。
true表示开启,false表示不开启。 - 引入版本:v3.0
hdfs_client_hedged_read_threadpool_size
- 默认值:128
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:HDFS 客户端侧 Hedged Read 线程池的大小,即 HDFS 客户端侧允许有多少个线程用于服务 Hedged Read。该参数对应 HDFS 集群配置文件 hdfs-site.xml 中的
dfs.client.hedged.read.threadpool.size参数。 - 引入版本:v3.0
hdfs_client_hedged_read_threshold_millis
- 默认值:2500
- 类型:Int
- 单位:毫秒
- 是否动态:否
- 描述:发起 Hedged Read 请求前需要等待多少毫秒。例如,假设该参数设置为
30,那么如果一个 Read 任务未能在 30 毫秒内返回结果,则 HDFS 客户端会立即发起一个 Hedged Read,从目标数据块的副本上读取数据。该参数对应 HDFS 集群配置文件 hdfs-site.xml 中的dfs.client.hedged.read.threshold.millis参数。 - 引入版本:v3.0
io_coalesce_adaptive_lazy_active
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:根据谓词选择度,自适应决定是否将谓词列 IO 和非谓词列 IO 进行合并。
- 引入版本:v3.2
jit_lru_cache_size
- 默认值:0
- 类型:Int
- 单位:Bytes
- 是否动态:是
- 描述:JIT 编译的 LRU 缓存大小。如果设置为大于 0,则表示实际的缓存大小。如果设置为小于或等于 0,系统将自适应设置缓存大小,使用的公式为
jit_lru_cache_size = min(mem_limit*0.01, 1GB)(节点的mem_limit必须大于或等于 16 GB)。 - 引入版本:-
json_flat_column_max
- 默认值:100
- 类型:Int
- 单位:
- 是否动态:是
- 描述:控制 Flat JSON 时,最多提取的子列数量。该参数仅在
enable_json_flat为true时生效。 - 引入版本:v3.3.0
json_flat_create_zonemap
- 默认值:true
- 类型:Boolean
- 单位:
- 是否动态:是
- 描述:是否为打平后的 JSON 子列创建 Zonemap。仅当
enable_json_flat为true时生效。 - 引入版本:-
json_flat_null_factor
- 默认值:0.3
- 类型:Double
- 单位:
- 是否动态:是
- 描述:控制 Flat JSON 时,提取列的 NULL 值占比阈值,高于该比例不对该列进行提取,默认为 0.3。该参数仅在
enable_json_flat为true时生效。 - 引入版本:v3.3.0
json_flat_sparsity_factor
- 默认值:0.3
- 类型:Double
- 单位:
- 是否动态:是
- 描述:控制 Flat JSON 时,同名列的占比阈值,当同名列占比低于该值时不进行提取,默认为 0.9。该参数仅在
enable_json_flat为true时生 效。 - 引入版本:v3.3.0
lake_tablet_ignore_invalid_delete_predicate
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:控制是否忽略 tablet rowset 元数据中可能由逻辑删除在列名重命名后引入到重复键(duplicate key)表中的无效 delete predicates 的布尔值。
- 引入版本:v4.0
late_materialization_ratio
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:控制 SegmentIterator 延迟物化策略的整数比率,取值范围 [0-1000]。
0禁用延迟物化;1000强制所有读取使用延迟物化;1–999 时根据谓词过滤率动态决策,值越大越倾向使用延迟物化。当 Segment 包含复杂 Metric 类型时,改用metric_late_materialization_ratio。启用lake_io_opts.cache_file_only时延迟物化自动禁用。 - 引入版本:v3.2.0
max_hdfs_file_handle
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:最多可以打开的 HDFS 文件描述符数量。
- 引入版本:-
max_memory_sink_batch_count
- 默认值:20
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:Scan Cache 的最大缓存批次数量。
- 引入版本:-
max_pushdown_conditions_per_column
- 默认值:1024
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:单列上允许下推的最大谓词数量,如果超出数量限制,谓词不会下推到存储层。
- 引入版本:-
max_scan_key_num
- 默认值:1024
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:查询最多拆分的 Scan Key 数目。
- 引入版本:-
metric_late_materialization_ratio
- 默认值:1000
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:当读取包含复杂 Metric 列时,控制延迟物化行访问策略的比率,取值范围 [0-1000]。
0禁用延迟物化;1000强制所有适用读取使用延迟物化;1–999 时根据选择率动态决策。存在复杂 Metric 类型时,此参数优先于late_materialization_ratio。cache_file_onlyI/O 模式下延迟物化始终禁用。 - 引入版本:v3.2.0
min_file_descriptor_number
- 默认值:60000
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE 进程中文件描述符的最小数量。
- 引入版本:-
object_storage_client_cache_size
- 默认值:8
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:每个客户端工厂缓存的对象存储客户端(S3 兼容及 Azure Blob)的最大数量。该值在每次创建客户端时读取,因此调低该值不会立即生效,而 是随着后续创建过程中缓存客户端被逐出而逐步生效。小于
1的值按1处理。 - 引入版本:v4.1.4, v4.0.14
object_storage_connect_timeout_ms
- 默认值:-1
- 类型:Int
- 单位:毫秒
- 是否动态:否
- 描述:对象存储 Socket 连接的超时时间。
-1表示使用 SDK 中的默认时间。 - 引入版本:v3.0.9
object_storage_request_timeout_ms
- 默认值:-1
- 类型:Int
- 单位:毫秒
- 是否动态:否
- 描述:对象存储 HTTP 连接的超时时间。
-1表示使用 SDK 中的默认时间。 - 引入版本:v3.0.9
parquet_late_materialization_enable
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否使用延迟物化优化 Parquet 读性能。