ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RisingWave 配置指南:深入解析 risingwave.toml 与配置覆盖机制

RisingWave 配置指南:深入解析 risingwave.toml 与配置覆盖机制 数据库流处理后端数据工程【免费下载链接】risingwaveEvent streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale.项目地址https://gitcode.com/gh_mirrors/ri/risingwave点击查看免费下载risingwave.toml是 RisingWave 集群的静态配置文件通过命令行参数--config-path注入各节点Meta、Frontend、Compute/Streaming、Compactor 等并与源码内置默认值叠加生效。本文以src/config/README.md为骨架结合src/config/example.toml、src/config/docs.md以及src/common/src/config/mod.rs中的真实定义系统讲解配置文件的结构、加载与覆盖规则、RiseDev 集成方式并逐分区解读核心配置项帮助你为开发、测试与生产部署写出准确、可复用的risingwave.toml。RisingWave 配置系统概述RisingWave 的配置体系由两部分组成静态配置本文主题risingwave.toml文件由节点进程在启动时读取贯穿其整个生命周期。动态系统参数System Parameters可通过 SQL如ALTER SYSTEM SET在线调整定义见 src/common/src/session_config/。risingwave.toml的加载遵循一个简单而重要的规则如果没有指定配置文件进程使用 src/common/src/config/mod.rs 中定义的源码默认值如果通过--config-path指定了配置文件则文件中出现的条目会覆盖源码中的默认值未出现的条目仍取默认值。也就是说risingwave.toml是一个“增量覆盖”文件你不需要写出全部配置项只需写与你运行环境相关的部分。源码注释与docs.md中列出的“Default”列就是未覆盖时的取值。配置文件的权威定义与生成配置文件结构与每个分区的默认值都定义在RwConfig及各个子配置结构体中源码位于 src/common/src/config/包括mod.rs —RwConfig顶层结构对应整个文件server.rs —[server]分区meta.rs —[meta]分区及[meta.compaction_config]、[meta.meta_store_config]等batch.rs —[batch]分区frontend.rs —[frontend]分区及hba_configstreaming.rs —[streaming]分区storage.rs —[storage]分区及缓存、文件缓存、对象存储等子分区system.rs —[system]分区udf.rs —[udf]分区。在源码中RwConfig的每个字段都标注了#[serde(default)]并对应一个带默认值的子结构体见 mod.rs。这正是“未配置则回落默认值”机制的实现基础配置文件经 serde 反序列化后与默认结构合并。提示原文档中提到的src/common/src/config.rs在仓库中实际以src/common/src/config/目录 mod.rs的形式组织即上述路径。仓库维护者使用./risedev generate-example-config命令从源码结构自动生成两份文档src/config/example.toml — 带默认值的完整配置示例src/config/docs.md — 每个配置项的说明与默认值表格自动生成逐条注释来自源码#[config_doc]宏与字段 doc 注释。这两份文件与源码始终同步是你查询“某个配置项是否可用、默认值是什么”的第一手资料。通过 --config-path 加载配置文件RisingWave 各节点risingwave meta、risingwave compute、risingwave frontend、risingwave compactor、risingwave standalone等都支持在启动时传入配置文件risingwave meta --config-path /path/to/risingwave.toml risingwave compute --config-path /path/to/risingwave.toml risingwave frontend --config-path /path/to/risingwave.toml传入的配置文件会被对应节点加载并覆盖 src/common/src/config/mod.rs 中的默认值。由于RwConfig是统一的结构定义集群中各节点共享同一套配置 schema实践中通常给所有节点传入同一份risingwave.toml节点各自消费其中与自身相关的分区。在 RiseDev 中指定配置RiseDev./risedev配置见 risedev.yml是 RisingWave 的本地开发工具。要在risedev dev profile启动的开发集群中应用自定义配置只需在对应 profile 下配置config-path字段risedev: profile-name: config-path: src/config/ci.toml steps: - use: ...RiseDev 会在启动时把该文件复制到工作目录默认.risingwave/并重命名为risingwave.toml随后各节点自动通过--config-path加载它。这一机制在仓库的 risedev.yml 中有大量真实用例。例如CI 常规测试 profile 使用config-path: src/config/ci.toml恢复测试 profile 使用config-path: src/config/ci-recovery.toml会话初始化测试使用config-path: src/config/ci-session-init.toml时态旅行测试使用config-path: src/config/ci-time-travel.toml更长流式上传超时测试使用config-path: src/config/ci-longer-streaming-upload-timeout.toml。正如 src/config/README.md 所说config/目录下定义的配置文件主要用于测试与开发场景你需要根据自己的开发环境例如内存大小、是否开启某些实验特性创建合适的副本。risingwave.toml 顶层结构与完整示例risingwave.toml是一个 TOML 文件顶层包含 9 个分区对应RwConfig的 9 个字段TOML 分区结构体职责[server]ServerConfiggRPC 连接池、心跳、指标级别等通用设置[meta]MetaConfigMeta 节点调度、GC、压缩组、恢复等[batch]BatchConfig批处理查询查询上限、超时、spill[frontend]FrontendConfig前端查询内存约束、pgwire、HBA 认证[streaming]StreamingConfig流式执行屏障、backfill、并行度[storage]StorageConfigHummock 存储、缓存、文件缓存、对象存储[system]SystemConfig屏障间隔、checkpoint、SST 尺寸等系统级参数[udf]UdfConfig嵌入式 UDFPython/JS/WASM开关[session_init]SessionInitConfig会话初始化的流式并行度设置其中meta、batch、streaming、storage还带有更深层的子分区如[meta.compaction_config]、[storage.cache]、[storage.object_store]等。完整带默认值的示例见 src/config/example.toml下面是最常用的骨架[server] heartbeat_interval_ms 1000 # 工作节点向 Meta 发送心跳的间隔 connection_pool_size 16 # 连接 gRPC 服务器的默认连接数 metrics_level Info # 指标级别类似日志级别 telemetry_enabled true # 是否启用遥测 [meta] backend Mem # Meta 存储后端Mem/Sql 等 min_sst_retention_time_sec 21600 # Hummock 全量 GC 保留 SST 的最小时间 full_gc_interval_sec 3600 # Hummock 全量 GC 间隔 vacuum_interval_sec 30 # 清理过期元数据的 vacuum 间隔 default_parallelism Full # 流式作业的默认全局并行度 partition_vnode_count 16 # 每个 split group 的 vnode 分区数 [batch] enable_spill true # 批查询是否允许溢写到磁盘 statement_timeout_in_sec 3600 # 批查询超时秒 max_total_query_size_bytes 1073741824 # 运行中查询的总内存约束 distributed_query_limit # 每个 SQL 会话的最大查询数 表示不限制 [frontend] stream_flush_threshold_bytes 65536 # 流式 pgwire 响应的 flush 阈值字节数 unsafe_enable_local_fs_connector false # 是否允许本地文件系统 connector [streaming] in_flight_barrier_nums 10000 # 每个局部图的最大 pending barrier 数 snapshot_backfill_finish_max_lagged_barriers 100 [storage] write_conflict_detection_enabled true # 写冲突检测 block_cache_capacity_mb # block cache 容量MB覆盖见下 meta_cache_capacity_mb [system] barrier_interval_ms 1000 # 周期 barrier 间隔 checkpoint_frequency 1 # 每 N 个 barrier 做一次 checkpoint sstable_size_mb 256 # SST 目标大小 state_store # 状态存储 URL data_directory # 数据对象存储目录 time_travel_retention_ms 600000 # 时间旅行数据保留期 [udf] enable_embedded_python_udf false enable_embedded_javascript_udf true enable_embedded_wasm_udf true [session_init] streaming_parallelism # 会话初始化时的流式并行度各分区核心配置项详解以下配置项的完整说明与默认值均来自自动生成的 src/config/docs.md可按需查阅原文。[server]节点通用设置配置项默认值说明heartbeat_interval_ms1000工作节点向 Meta 服务发送周期心跳的间隔毫秒connection_pool_size16连接 gRPC 服务器时的默认连接数流式/批式 remote exchange 的连接数若未单独指定也沿用此值metrics_levelInfo指标级别控制指标输出的详细程度telemetry_enabledtrue是否启用遥测上报grpc_max_reset_stream200gRPC 流重置相关上限heap_profiling—内存使用偏高时转储 heap profile 的子配置含enable_auto、threshold_auto、dir[meta]Meta 节点调度与维护[meta]是配置项最丰富的分区覆盖压缩compaction、GC、恢复、并行度控制与 CDC 建表初始化等存储与 GCmin_sst_retention_time_sec21600GC 对悬挂 SST 的最低保留时间、full_gc_interval_sec3600全量 GC 间隔、full_gc_object_limit100000单轮 GC 拉取的对象上限、gc_history_retention_time_sec21600、vacuum_interval_sec30清理过期元数据、vacuum_spin_interval_ms100vacuum 内部自旋间隔避免独占 Meta 资源。压缩调度periodic_compaction_interval_sec300周期动态压缩、periodic_space_reclaim_compaction_interval_sec3600、periodic_ttl_reclaim_compaction_interval_sec1800、periodic_tombstone_reclaim_compaction_interval_sec600。压缩组分裂/合并partition_vnode_count16、hybrid_partition_vnode_count4、split_group_size_limit68719476736、split_group_size_ratio0.9、table_high_write_throughput_threshold16777216、table_low_write_throughput_threshold4194304、table_write_throughput_retention_seconds300。注意table_stat_*系列与table_info_statistic_history_times已标记为 deprecated。恢复与并行度控制disable_recoveryfalse仅 e2e 测试用、disable_automatic_parallelism_controlfalse自适应扩缩容开关、parallelism_control_batch_size10、parallelism_control_trigger_period_sec10、parallelism_control_trigger_first_delay_sec30、default_parallelismFull作业未指定并行度时的全局默认值也支持具体数字、actor_cnt_per_worker_parallelism_soft_limit/hard_limit100/400位于[meta.developer]。checkpoint 与时间旅行hummock_version_checkpoint_interval_sec30、checkpoint_compression_algorithmzstd、checkpoint_read_chunk_size134217728大 checkpoint 并行分块读取的块大小、checkpoint_read_max_in_flight_chunks4内存占用 chunk_size × 并发数、hummock_time_travel_snapshot_interval100、max_inflight_time_travel_query1000。CDC 建表初始化cdc_table_split_init_insert_batch_size100、cdc_table_split_init_sleep_duration_millis500、cdc_table_split_init_sleep_interval_splits1000用于在写入元存储时分批、间歇避免压垮上游系统。其他meta_leader_lease_secs30、max_heartbeat_interval_secs60、dangerous_max_idle_secs空闲退出主要用于 playground、pause_on_next_bootstrap_offlinefalse单机/standalone 场景离线暂停数据源、enable_legacy_table_migrationtrue、enable_compaction_deterministicfalse仅 e2e 测试用。[meta.compaction_config]子分区定义 LSM 压缩策略参数例如max_bytes_for_level_base536870912、max_bytes_for_level_multiplier10、max_compaction_bytes2147483648、level0_tier_compact_file_number12、target_file_size_base33554432、max_sub_compaction4、max_level6、sstable_filter_type默认[xor16, ...]、sstable_filter_layout默认[auto, blocked, ...]等。[meta.meta_store_config]子分区配置 Meta 存储连接池max_connections10、min_connections1、connection_timeout_sec10、idle_timeout_sec30、acquire_timeout_sec30。[batch] 与 [batch.developer]批处理查询配置项默认值说明enable_spilltrue批查询是否允许将中间结果溢写到磁盘statement_timeout_in_sec3600批查询超时秒max_total_query_size_bytes1073741824运行中查询的总内存约束min_single_query_size_bytes1048576低于该大小的单查询不会被内存约束拒绝max_single_query_size_bytes1073741824超过该大小的单查询将因内存约束被拒绝max_batch_queries_per_frontend_node每个 Frontend 节点最大批查询数distributed_query_limit每个 SQL 会话最大查询数redact_sql_option_keywords[credential,key,password,private,secret,token]查询日志中 SQL option 脱敏依据的关键字mask_worker_temporary_secs30临时屏蔽不可用工作节点的秒数[batch.developer]下的chunk_size1024、output_channel_size64、receiver_channel_size1000、root_stage_channel_size100、local_execute_buffer_size64等控制批处理执行通道与 chunk 粒度exchange_connection_pool_size未指定时回落到server.connection_pool_size。[frontend]前端查询与认证hba_configHost-based 认证配置支持connection_typeLocal/Host、databases、users、addresses、auth_method如trust、password。示例 src/config/example.toml 中默认一条 Local/trust 加一条 Host/password[[frontend.hba_config.entries]] connection_type Local databases [all] users [all] auth_method trust [[frontend.hba_config.entries]] connection_type Host databases [all] users [all] addresses [0.0.0.0/0] auth_method passwordstream_flush_threshold_bytes65536流式 pgwire 响应的 flush 阈值0表示每行都 flush。单个 pgwire 消息是原子编码的可能超过该阈值。unsafe_enable_local_fs_connector默认 false。允许posix_fs、fs等本地文件系统 connector可访问 Frontend 主机文件生产构建默认关闭debug 构建默认开启便于本地开发。webhook_auth_max_clock_skew_ms300000WebSocket ingest 初始化认证允许的最大时钟偏差。[streaming] 与 [streaming.developer]流式执行in_flight_barrier_nums10000每个局部图最多 pending 的 barrier 数含 in-flight、已收集未提交、正在完成的 barrier。snapshot_backfill_finish_max_lagged_barriers100快照回填作业合并进主图时允许的最大滞后 barrier 数。snapshot_backfill_barrier_amplification_factor1快照回填局部图 barrier 限制的放大系数0 视为 1。actor_runtime_worker_threads_num流式 actor 运行时线程数默认由 tokio 决定。async_stack_traceReleaseVerbose为 risectl 启用的 async 栈跟踪。unique_user_stream_errors10每个 actor 允许的最大用户流错误数。[streaming.developer]是另一个大型子分区重点包括缓存与执行通道chunk_size256、exchange_initial_permits2048、exchange_batched_permits256、exchange_concurrent_barriers1、dml_channel_initial_permits32768、exchange_connection_pool_size1未指定时回落server.connection_pool_size。内存控制器memory_controller_threshold_aggressive/graceful/stable0.9/0.81/0.72、对应eviction_factor2.0/1.5/1.0、memory_controller_update_interval_ms100。backfillenable_arrangement_backfilltrue已弃用但作为默认回退回填方式、enable_snapshot_backfilltrue与会话变量streaming_use_snapshot_backfill联动、snapshot_iter_rebuild_interval_secs600。Join 与聚合hash_join_entry_state_max_rows30000、join_hash_map_evict_interval_rows16、join_encoding_typememory_optimized、hash_agg_max_dirty_groups_heap_size67108864、high_join_amplification_threshold2048、high_gap_fill_amplification_threshold2048。schema change 与共享源enable_auto_schema_changetrue、enable_shared_sourcetrue与会话变量streaming_use_shared_source联动、switch_jdbc_pg_to_nativefalse。状态表预加载default_enable_mem_preload_state_tablefalse、mem_preload_state_table_ids_whitelist/blacklist[]。cache 预填充策略cache_refill_policyenabled可取值enabled/disabled/streaming/serving/both。Iceberg 流式相关iceberg_list_interval_sec10、iceberg_fetch_batch_size1024、iceberg_sink_positional_delete_cache_size1024、iceberg_sink_write_parquet_max_row_group_rows100000。[storage] 及其子分区Hummock 存储[storage]控制 Hummock 存储引擎的缓存、文件缓存、压缩与对象存储访问是生产调优的重点。共享缓冲区shared_buffer_capacity_mb显式指定共享缓冲区容量仅当block_cache_capacity_mb与meta_cache_capacity_mb也显式设置、且三者之和不超过非保留内存 30% 时生效、shared_buffer_flush_ratio0.8容量使用率超过该比例开始向对象存储刷盘、shared_buffer_min_batch_flush_size_mb800spill 的最小批量大小、share_buffers_sync_parallelism1不能为 0、share_buffer_compaction_worker_threads_number4、share_buffer_upload_concurrency8、imm_merge_threshold0。缓存[storage.cache]block_cache_capacity_mb、meta_cache_capacity_mb顶层同名配置项已标记 deprecated应使用此子分区以及block_cache_shard_num、meta_cache_shard_num默认根据容量自动决定、vector_block_cache_capacity_mb16、vector_meta_cache_capacity_mb16与各缓存的 eviction 算法默认Lru。本地文件缓存[storage.data_file_cache]与[storage.meta_file_cache]dir默认空不启用磁盘缓存、capacity_mb1024、file_capacity_mb64、flushers4、reclaimers4、recover_modeQuiet可取值None/Quiet/Strict、blob_index_size_kb16修改会失效已有缓存数据、direct_iofalse及[storage.data_file_cache.throttle]的 IO 限流write_iops、read_iops、write_throughput、read_throughput。压缩器disable_remote_compactorfalse、compactor_memory_limit_mb、compactor_memory_available_proportion0.8、compactor_max_task_multiplier3.0max_pull_task_count worker_num × multiplier、max_concurrent_compaction_task_number16、compactor_max_sst_size536870912、compactor_max_sst_key_count2097152、enable_fast_compactiontrue、check_compaction_resultfalse、compactor_fast_max_compact_task_size2147483648、compactor_max_overlap_sst_count64、compactor_max_preload_meta_file_count32。对象存储[storage.object_store]upload_part_size16777216、opendal_upload_concurrency256、req_concurrency_limit0以及[storage.object_store.retry]的完整重试/超时矩阵如upload_attempt_timeout_ms8000、upload_retry_attempts3、read_attempt_timeout_ms8000、list_attempt_timeout_ms600000 等还有 S3 专属的[storage.object_store.s3]keepalive_ms600000、nodelaytrue 等。Iceberg 压缩[storage]下iceberg_compaction_*系列例如iceberg_compaction_memory_limit_mb、iceberg_compaction_task_parallelism_ratio4.0、iceberg_compaction_pull_interval_ms5000、iceberg_compaction_max_pull_task_count1、iceberg_compaction_enable_prefetchfalse开启后每个输入文件用单次顺序读替代 N1 次 range read降低对象存储 API 调用但提高峰值内存。其他write_conflict_detection_enabledtrue、mem_table_spill_threshold4194304、max_cached_recent_versions_number60、max_version_pinning_duration_sec10800、min_sst_size_for_streaming_upload33554432、min_sstable_size_mb32、sst_skip_bloom_filter_in_serdefalse、shorten_block_meta_key_threshold。[system]系统级参数配置项默认值说明barrier_interval_ms1000周期 barrier 间隔checkpoint_frequency1每 N 个 barrier 触发一次 checkpointsstable_size_mb256SST 目标大小parallel_compact_size_mb512单个 compact/flush 任务的并行任务大小block_size_kb64SST 中每个 block 的大小state_store状态存储 URLdata_directory数据与元数据对象存储目录backup_storage_url/backup_storage_directory备份快照的远程存储max_concurrent_creating_streaming_jobs1并发创建流式作业数上限pause_on_next_bootstrapfalse下次 bootstrap 时暂停所有数据源enable_tracingfalse是否启用分布式追踪time_travel_retention_ms600000时间旅行数据保留期per_database_isolationtrue是否启用每数据库隔离enforce_secretfalse云环境是否强制 secretlicense_key激活企业特性的 license keybloom_false_positive0.001已弃用bloom filter 不再是受支持的 SST filter 实现此字段仅为向后兼容保留[udf] 与 [session_init][udf]嵌入式 UDF 开关。enable_embedded_python_udf默认 falseenable_embedded_javascript_udf与enable_embedded_wasm_udf默认 true。[session_init]会话初始化时的流式并行度覆盖全局默认。streaming_parallelism默认等效default保留传统自适应调度行为还有streaming_parallelism_for_backfill、_for_table、_for_sink、_for_index、_for_source、_for_materialized_view等细分项未指定时分别回落全局STREAMING_PARALLELISM。配置优先级与覆盖行为总结综合 src/config/README.md 与源码实现配置生效的优先级是risingwave.toml中显式指定的条目通过--config-path或 RiseDev 注入——最高源码中的默认值定义在 src/common/src/config/ 各结构体的default函数——兜底运行时可通过ALTER SYSTEM SET覆盖的动态系统参数src/common/src/session_config/——针对流式并行度等少量可在线调整的项。由于RwConfig反序列化时对未出现的字段直接保留默认值#[serde(default)]一个空配置文件与完全不传配置文件等价。这也意味着配置文件中写错分区名或字段名不会生效unrecognized字段被扁平化收集见 mod.rs因此建议基于 src/config/example.toml 修改而不是手写同一份文件可同时用于多个节点各节点只读取与自身相关的分区。开发与测试场景的既有配置模板src/config/目录本身就是一套现成的模板库主要面向 CI 测试与本地开发src/config/README.md 明确说明这一点。常用模板包括文件用途src/config/ci.toml常规 CI 测试配置src/config/ci-mem.toml内存相关 CI 测试src/config/ci-recovery.toml恢复recovery测试src/config/ci-sim.toml、src/config/ci-sim-log-store.toml确定性模拟测试src/config/ci-backfill.tomlbackfill 测试src/config/ci-compaction-test.toml压缩测试src/config/ci-ldap-simple-bind.toml 等LDAP 认证测试src/config/ci-meta-backup-test.tomlMeta 备份测试src/config/ci-time-travel.toml时间旅行测试src/config/ci-session-init.toml会话初始化测试src/config/ci-single-node-standalone.toml单节点 standalone 模式src/config/standalone-example.toml、src/config/serving-only.tomlstandalone 与 serving-only 部署src/config/example.toml带默认值的完整示例src/config/full-with-batch-query-limit.toml带批查询限制的完整配置src/config/hummock-trace.tomlHummock 追踪调试调试时可以直接./risedev dev profile后修改.risingwave/risingwave.toml再重启节点或者新建自己的 profile 并在 risedev.yml 中设置config-path。若要为一个新需求如调整共享缓冲区容量、开启 cache 预填充、启用嵌入式 UDF快速验证配置效果建议先对比 src/config/example.toml 与 src/config/docs.md 中对应字段的默认值与约束说明例如shared_buffer_capacity_mb的三条件生效规则再写入配置。小结risingwave.toml是 RisingWave 静态配置的唯一入口采用“显式条目覆盖源码默认值”的增量模型。理解RwConfig的 9 大分区结构src/common/src/config/mod.rs、掌握--config-path与 RiseDevconfig-path两种注入方式、并善用自动生成的 src/config/example.toml 与 src/config/docs.md 两份参考文档就能针对开发、CI 测试与生产部署写出准确且可维护的配置。后续遇到任何“某个参数默认值是什么、是否已弃用、在何种条件下生效”的问题都应优先以这三份源码/文档为准。赞分享数据库流处理后端数据工程【免费下载链接】risingwaveEvent streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale.项目地址https://gitcode.com/gh_mirrors/ri/risingwave点击查看免费下载相关推荐Hydra 1.3 深入解析Package 机制与配置包覆盖实战指南Hydra 1.3 深入解析Package 机制与配置包覆盖实战指南 导读 在 Hydra 中每个输入配置Input Config最终会被安放到输出配置开发工具后端CLIRisingWave 系统配置完全指南risingwave.toml 全量配置参考与调优实践RisingWave 系统配置完全指南 risingwave.toml 全量配置参考与调优实践 risingwave.toml 是 RisingWave 各节数据库流处理后端数据工程Dalamud配置继承层级配置与覆盖机制Dalamud配置继承层级配置与覆盖机制 概述 Dalamud作为FFXIV最终幻想14的插件框架提供了强大的配置管理系统。其配置继承机制允许开发者在多上一篇Radix Themes与GraphQL Code Generator集成类型安全的数据获取下一篇LTX-Video 显存突围实战不换卡也能跑 13B 高清视频生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表