pub struct StorageConfig {Show 60 fields
pub share_buffers_sync_parallelism: u32,
pub share_buffer_compaction_worker_threads_number: u32,
pub shared_buffer_capacity_mb: Option<usize>,
pub shared_buffer_flush_ratio: f32,
pub shared_buffer_min_batch_flush_size_mb: usize,
pub imm_merge_threshold: usize,
pub write_conflict_detection_enabled: bool,
pub cache: CacheConfig,
pub block_cache_capacity_mb: Option<usize>,
pub meta_cache_capacity_mb: Option<usize>,
pub high_priority_ratio_in_percent: Option<usize>,
pub prefetch_buffer_capacity_mb: Option<usize>,
pub max_cached_recent_versions_number: usize,
pub max_prefetch_block_number: usize,
pub disable_remote_compactor: bool,
pub share_buffer_upload_concurrency: usize,
pub compactor_memory_limit_mb: Option<usize>,
pub compactor_max_task_multiplier: f32,
pub compactor_memory_available_proportion: f64,
pub sstable_id_remote_fetch_number: u32,
pub min_sstable_size_mb: u32,
pub data_file_cache: FileCacheConfig,
pub meta_file_cache: FileCacheConfig,
pub cache_refill: CacheRefillConfig,
pub min_sst_size_for_streaming_upload: u64,
pub max_concurrent_compaction_task_number: u64,
pub max_preload_wait_time_mill: u64,
pub max_version_pinning_duration_sec: u64,
pub compactor_max_sst_key_count: u64,
pub compact_iter_recreate_timeout_ms: u64,
pub compactor_max_sst_size: u64,
pub enable_fast_compaction: bool,
pub check_compaction_result: bool,
pub max_preload_io_retry_times: usize,
pub compactor_fast_max_compact_delete_ratio: u32,
pub compactor_fast_max_compact_task_size: u64,
pub compactor_iter_max_io_retry_times: usize,
pub table_info_statistic_history_times: usize,
pub unrecognized: Unrecognized<Self>,
pub mem_table_spill_threshold: usize,
pub compactor_concurrent_uploading_sst_count: Option<usize>,
pub compactor_max_overlap_sst_count: usize,
pub compactor_max_preload_meta_file_count: usize,
pub vector_file_block_size_kb: usize,
pub object_store: ObjectStoreConfig,
pub time_travel_version_cache_capacity: u64,
pub iceberg_compaction_target_file_size_mb: u32,
pub iceberg_compaction_enable_validate: bool,
pub iceberg_compaction_max_record_batch_rows: usize,
pub iceberg_compaction_min_size_per_partition_mb: u32,
pub iceberg_compaction_max_file_count_per_partition: u32,
pub iceberg_compaction_write_parquet_max_row_group_rows: usize,
pub iceberg_compaction_task_parallelism_ratio: f32,
pub iceberg_compaction_enable_heuristic_output_parallelism: bool,
pub iceberg_compaction_max_concurrent_closes: usize,
pub iceberg_compaction_enable_dynamic_size_estimation: bool,
pub iceberg_compaction_size_estimation_smoothing_factor: f64,
pub iceberg_compaction_small_file_threshold_mb: u32,
pub iceberg_compaction_max_task_total_size_mb: u32,
pub iceberg_compaction_pending_parallelism_budget_multiplier: f32,
}Expand description
The section [storage] in risingwave.toml.
Fields§
parallelism while syncing share buffers into L0 SST. Should NOT be 0.
Worker threads number of dedicated tokio runtime for share buffer compaction. 0 means use tokio’s default value (number of CPU core).
Configure the maximum shared buffer size in MB explicitly. Writes attempting to exceed the capacity will stall until there is enough space. The overridden value will only be effective if:
block_cache_capacity_mbandmeta_cache_capacity_mbare also configured explicitly.block_cache_capacity_mb+meta_cache_capacity_mb+meta_cache_capacity_mbdoesn’t exceed 0.3 * non-reserved memory.
The shared buffer will start flushing data to object when the ratio of memory usage to the shared buffer capacity exceed such ratio.
The minimum total flush size of shared buffer spill. When a shared buffer spilled is trigger, the total flush size across multiple epochs should be at least higher than this size.
imm_merge_threshold: usizeThe threshold for the number of immutable memtables to merge to a new imm.
write_conflict_detection_enabled: boolWhether to enable write conflict detection
cache: CacheConfig§block_cache_capacity_mb: Option<usize>DEPRECATED: This config will be deprecated in the future version, use storage.cache.block_cache_capacity_mb instead.
meta_cache_capacity_mb: Option<usize>DEPRECATED: This config will be deprecated in the future version, use storage.cache.meta_cache_capacity_mb instead.
high_priority_ratio_in_percent: Option<usize>DEPRECATED: This config will be deprecated in the future version, use storage.cache.block_cache_eviction.high_priority_ratio_in_percent with storage.cache.block_cache_eviction.algorithm = "Lru" instead.
prefetch_buffer_capacity_mb: Option<usize>max memory usage for large query
max_cached_recent_versions_number: usize§max_prefetch_block_number: usizemax prefetch block number
disable_remote_compactor: boolNumber of tasks shared buffer can upload in parallel.
compactor_memory_limit_mb: Option<usize>§compactor_max_task_multiplier: f32Compactor calculates the maximum number of tasks that can be executed on the node based on
worker_num and compactor_max_task_multiplier.
max_pull_task_count = worker_num * compactor_max_task_multiplier
compactor_memory_available_proportion: f64The percentage of memory available when compactor is deployed separately.
non_reserved_memory_bytes = system_memory_available_bytes * compactor_memory_available_proportion
sstable_id_remote_fetch_number: u32Number of SST ids fetched from meta per RPC
min_sstable_size_mb: u32§data_file_cache: FileCacheConfig§meta_file_cache: FileCacheConfig§cache_refill: CacheRefillConfig§min_sst_size_for_streaming_upload: u64Whether to enable streaming upload for sstable.
max_concurrent_compaction_task_number: u64§max_preload_wait_time_mill: u64§max_version_pinning_duration_sec: u64§compactor_max_sst_key_count: u64§compact_iter_recreate_timeout_ms: u64§compactor_max_sst_size: u64§enable_fast_compaction: bool§check_compaction_result: bool§max_preload_io_retry_times: usize§compactor_fast_max_compact_delete_ratio: u32§compactor_fast_max_compact_task_size: u64§compactor_iter_max_io_retry_times: usize§table_info_statistic_history_times: usizeDeprecated: The window size of table info statistic history.
unrecognized: Unrecognized<Self>§mem_table_spill_threshold: usizeThe spill threshold for mem table.
compactor_concurrent_uploading_sst_count: Option<usize>The concurrent uploading number of SSTables of builder
compactor_max_overlap_sst_count: usize§compactor_max_preload_meta_file_count: usizeThe maximum number of meta files that can be preloaded.
If the number of meta files exceeds this value, the compactor will try to compute parallelism only through SstableInfo, no longer preloading SstableMeta.
This is to prevent the compactor from consuming too much memory, but it may cause the compactor to be less efficient.
vector_file_block_size_kb: usize§object_store: ObjectStoreConfigObject storage configuration
- General configuration
- Some special configuration of Backend
- Retry and timeout configuration
time_travel_version_cache_capacity: u64§iceberg_compaction_target_file_size_mb: u32§iceberg_compaction_enable_validate: bool§iceberg_compaction_max_record_batch_rows: usize§iceberg_compaction_min_size_per_partition_mb: u32§iceberg_compaction_max_file_count_per_partition: u32§iceberg_compaction_write_parquet_max_row_group_rows: usize§iceberg_compaction_task_parallelism_ratio: f32The ratio of iceberg compaction max parallelism to the number of CPU cores
iceberg_compaction_enable_heuristic_output_parallelism: boolWhether to enable heuristic output parallelism in iceberg compaction.
iceberg_compaction_max_concurrent_closes: usizeMaximum number of concurrent file close operations
iceberg_compaction_enable_dynamic_size_estimation: boolWhether to enable dynamic size estimation for iceberg compaction.
iceberg_compaction_size_estimation_smoothing_factor: f64The smoothing factor for size estimation in iceberg compaction.(default: 0.3)
iceberg_compaction_small_file_threshold_mb: u32The threshold for small file compaction in MB.
iceberg_compaction_max_task_total_size_mb: u32The maximum total size of tasks in small file compaction in MB.
iceberg_compaction_pending_parallelism_budget_multiplier: f32Multiplier for pending waiting parallelism budget for iceberg compaction task queue.
Effective pending budget = ceil(max_task_parallelism * multiplier). Default 4.0.
Set < 1.0 to reduce buffering (may increase PullTask RPC frequency); set higher to batch more tasks.
Implementations§
Trait Implementations§
Source§impl Clone for StorageConfig
impl Clone for StorageConfig
Source§fn clone(&self) -> StorageConfig
fn clone(&self) -> StorageConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StorageConfig
impl Debug for StorageConfig
Source§impl Default for StorageConfig
impl Default for StorageConfig
Source§impl<'de> Deserialize<'de> for StorageConfig
impl<'de> Deserialize<'de> for StorageConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for StorageConfig
impl RefUnwindSafe for StorageConfig
impl Send for StorageConfig
impl Sync for StorageConfig
impl Unpin for StorageConfig
impl UnwindSafe for StorageConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Code for Twhere
T: Serialize + DeserializeOwned,
impl<T> Code for Twhere
T: Serialize + DeserializeOwned,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level].§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n].§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n] with metric_level set to
MetricLevel::Debug and relabel_num set to 1.§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Scope for T
impl<T> Scope for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.