pub struct CompactionConfig {Show 30 fields
pub max_bytes_for_level_base: u64,
pub max_bytes_for_level_multiplier: u64,
pub max_compaction_bytes: u64,
pub sub_level_max_compaction_bytes: u64,
pub level0_tier_compact_file_number: u64,
pub target_file_size_base: u64,
pub compaction_filter_mask: u32,
pub max_sub_compaction: u32,
pub level0_stop_write_threshold_sub_level_number: u64,
pub level0_sub_level_compact_level_count: u32,
pub level0_overlapping_sub_level_compact_level_count: u32,
pub max_space_reclaim_bytes: u64,
pub level0_max_compact_file_number: u64,
pub tombstone_reclaim_ratio: u32,
pub enable_emergency_picker: bool,
pub max_level: u32,
pub sst_allowed_trivial_move_min_size: u64,
pub sst_allowed_trivial_move_max_count: u32,
pub max_l0_compact_level_count: u32,
pub disable_auto_group_scheduling: bool,
pub max_overlapping_level_size: u64,
pub emergency_level0_sst_file_count: u32,
pub emergency_level0_sub_level_partition: u32,
pub level0_stop_write_threshold_max_sst_count: u32,
pub level0_stop_write_threshold_max_size: u64,
pub enable_optimize_l0_interval_selection: bool,
pub blocked_xor_filter_kv_count_threshold: Option<u64>,
pub max_vnode_key_range_bytes: Option<u64>,
pub sstable_filter_kind: Vec<String>,
pub sstable_filter_layout: Vec<String>,
}Fields§
§max_bytes_for_level_base: u64§max_bytes_for_level_multiplier: u64§max_compaction_bytes: u64§sub_level_max_compaction_bytes: u64§level0_tier_compact_file_number: u64§target_file_size_base: u64§compaction_filter_mask: u32§max_sub_compaction: u32§level0_stop_write_threshold_sub_level_number: u64§level0_sub_level_compact_level_count: u32§level0_overlapping_sub_level_compact_level_count: u32§max_space_reclaim_bytes: u64§level0_max_compact_file_number: u64§tombstone_reclaim_ratio: u32§enable_emergency_picker: bool§max_level: u32§sst_allowed_trivial_move_min_size: u64§sst_allowed_trivial_move_max_count: u32§max_l0_compact_level_count: u32§disable_auto_group_scheduling: bool§max_overlapping_level_size: u64§emergency_level0_sst_file_count: u32§emergency_level0_sub_level_partition: u32§level0_stop_write_threshold_max_sst_count: u32§level0_stop_write_threshold_max_size: u64§enable_optimize_l0_interval_selection: bool§blocked_xor_filter_kv_count_threshold: Option<u64>KV-count threshold for using blocked xor filters when output filter layout is “auto”.
When sstable_filter_layout[level] is “auto”, compaction will build blocked xor filters if
the estimated key count of one output SST exceeds this threshold. Otherwise it will build a
single non-blocked xor filter for that output.
This is an output-SST-level heuristic. Older versions compared the threshold with the total key count of the whole compaction task, which could classify many small output SSTs as blocked only because they came from a large task. With the current heuristic, those outputs can be classified back to plain filters.
Note: shared-buffer flush does not read compaction group config, and always uses the built-in default threshold.
max_vnode_key_range_bytes: Option<u64>§sstable_filter_kind: Vec<String>Per-level xor filter family for compaction output.
Index by LSM level: 0..=max_level. Note: L0 (index 0) is currently ignored by shared-buffer
flush, which always uses “xor16”.
sstable_filter_layout: Vec<String>Per-level xor filter layout for compaction output.
auto uses the kv-count heuristic; plain/normal forces non-blocked filters; blocked
forces block-based filters. Explicit plain and blocked values ignore the kv-count
threshold.
Index by LSM level: 0..=max_level. Note: L0 (index 0) is currently ignored by shared-buffer
flush, which always uses “auto”.
Implementations§
Trait Implementations§
Source§impl Clone for CompactionConfig
impl Clone for CompactionConfig
Source§fn clone(&self) -> CompactionConfig
fn clone(&self) -> CompactionConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompactionConfig
impl Debug for CompactionConfig
Source§impl Default for CompactionConfig
impl Default for CompactionConfig
Source§impl<'de> Deserialize<'de> for CompactionConfig
impl<'de> Deserialize<'de> for CompactionConfig
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 CompactionConfig
impl RefUnwindSafe for CompactionConfig
impl Send for CompactionConfig
impl Sync for CompactionConfig
impl Unpin for CompactionConfig
impl UnwindSafe for CompactionConfig
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§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<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].Source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
Source§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.Source§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.Source§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.