1use super::*;
16
17#[derive(Copy, Clone, Debug, Default, ValueEnum, Serialize, Deserialize)]
18pub enum MetaBackend {
19 #[default]
20 Mem,
21 Sql, Sqlite,
23 Postgres,
24 Mysql,
25}
26
27#[derive(Copy, Clone, Debug, Default)]
28pub enum DefaultParallelism {
29 #[default]
30 Full,
31 Default(NonZeroUsize),
32}
33
34impl Serialize for DefaultParallelism {
35 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
36 where
37 S: Serializer,
38 {
39 #[derive(Debug, Serialize, Deserialize)]
40 #[serde(untagged)]
41 enum Parallelism {
42 Str(String),
43 Int(usize),
44 }
45 match self {
46 DefaultParallelism::Full => Parallelism::Str("Full".to_owned()).serialize(serializer),
47 DefaultParallelism::Default(val) => {
48 Parallelism::Int(val.get() as _).serialize(serializer)
49 }
50 }
51 }
52}
53
54impl<'de> Deserialize<'de> for DefaultParallelism {
55 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
56 where
57 D: serde::Deserializer<'de>,
58 {
59 #[derive(Debug, Deserialize)]
60 #[serde(untagged)]
61 enum Parallelism {
62 Str(String),
63 Int(usize),
64 }
65 let p = Parallelism::deserialize(deserializer)?;
66 match p {
67 Parallelism::Str(s) => {
68 if s.trim().eq_ignore_ascii_case("full") {
69 Ok(DefaultParallelism::Full)
70 } else {
71 Err(serde::de::Error::custom(format!(
72 "invalid default parallelism: {}",
73 s
74 )))
75 }
76 }
77 Parallelism::Int(i) => Ok(DefaultParallelism::Default(
78 NonZeroUsize::new(i).ok_or_else(|| {
81 serde::de::Error::custom("default parallelism should not be 0")
82 })?,
83 )),
84 }
85 }
86}
87
88#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
90pub struct MetaConfig {
91 #[serde(default = "default::meta::min_sst_retention_time_sec")]
94 pub min_sst_retention_time_sec: u64,
95
96 #[serde(default = "default::meta::full_gc_interval_sec")]
98 pub full_gc_interval_sec: u64,
99
100 #[serde(default = "default::meta::full_gc_object_limit")]
102 pub full_gc_object_limit: u64,
103
104 #[serde(default = "default::meta::gc_history_retention_time_sec")]
106 pub gc_history_retention_time_sec: u64,
107
108 #[serde(default = "default::meta::max_inflight_time_travel_query")]
110 pub max_inflight_time_travel_query: u64,
111
112 #[serde(default = "default::meta::periodic_compaction_interval_sec")]
114 pub periodic_compaction_interval_sec: u64,
115
116 #[serde(default = "default::meta::vacuum_interval_sec")]
119 pub vacuum_interval_sec: u64,
120
121 #[serde(default = "default::meta::vacuum_spin_interval_ms")]
124 pub vacuum_spin_interval_ms: u64,
125
126 #[serde(default = "default::meta::hummock_version_checkpoint_interval_sec")]
128 pub hummock_version_checkpoint_interval_sec: u64,
129
130 #[serde(default = "default::meta::enable_hummock_data_archive")]
136 pub enable_hummock_data_archive: bool,
137
138 #[serde(default = "default::meta::hummock_time_travel_snapshot_interval")]
142 pub hummock_time_travel_snapshot_interval: u64,
143
144 #[serde(default = "default::meta::min_delta_log_num_for_hummock_version_checkpoint")]
147 pub min_delta_log_num_for_hummock_version_checkpoint: u64,
148
149 #[serde(default = "default::meta::max_heartbeat_interval_sec")]
151 pub max_heartbeat_interval_secs: u32,
152
153 #[serde(default)]
155 pub disable_recovery: bool,
156
157 #[serde(default)]
159 pub disable_automatic_parallelism_control: bool,
160
161 #[serde(default = "default::meta::parallelism_control_batch_size")]
163 pub parallelism_control_batch_size: usize,
164
165 #[serde(default = "default::meta::parallelism_control_trigger_period_sec")]
167 pub parallelism_control_trigger_period_sec: u64,
168
169 #[serde(default = "default::meta::parallelism_control_trigger_first_delay_sec")]
171 pub parallelism_control_trigger_first_delay_sec: u64,
172
173 #[serde(default = "default::meta::meta_leader_lease_secs")]
174 pub meta_leader_lease_secs: u64,
175
176 #[serde(default)]
179 pub dangerous_max_idle_secs: Option<u64>,
180
181 #[serde(default = "default::meta::default_parallelism")]
185 pub default_parallelism: DefaultParallelism,
186
187 #[serde(default)]
191 pub enable_compaction_deterministic: bool,
192
193 #[serde(default)]
195 pub enable_committed_sst_sanity_check: bool,
196
197 #[serde(default = "default::meta::node_num_monitor_interval_sec")]
198 pub node_num_monitor_interval_sec: u64,
199
200 #[serde(default = "default::meta::backend")]
201 pub backend: MetaBackend,
202
203 #[serde(default = "default::meta::periodic_space_reclaim_compaction_interval_sec")]
205 pub periodic_space_reclaim_compaction_interval_sec: u64,
206
207 #[serde(default = "default::meta::periodic_ttl_reclaim_compaction_interval_sec")]
209 pub periodic_ttl_reclaim_compaction_interval_sec: u64,
210
211 #[serde(default = "default::meta::periodic_tombstone_reclaim_compaction_interval_sec")]
212 pub periodic_tombstone_reclaim_compaction_interval_sec: u64,
213
214 #[serde(default = "default::meta::move_table_size_limit")]
215 #[deprecated]
216 pub move_table_size_limit: u64,
217
218 #[serde(default = "default::meta::split_group_size_limit")]
219 #[deprecated]
220 pub split_group_size_limit: u64,
221
222 #[serde(default = "default::meta::cut_table_size_limit")]
223 #[deprecated]
224 pub cut_table_size_limit: u64,
225
226 #[serde(default = "default::meta::protect_drop_table_with_incoming_sink")]
228 pub protect_drop_table_with_incoming_sink: bool,
229
230 #[serde(default, flatten)]
231 #[config_doc(omitted)]
232 pub unrecognized: Unrecognized<Self>,
233
234 #[serde(default)]
236 pub do_not_config_object_storage_lifecycle: bool,
237
238 #[serde(default = "default::meta::partition_vnode_count")]
241 pub partition_vnode_count: u32,
242
243 #[serde(
245 default = "default::meta::table_high_write_throughput_threshold",
246 alias = "table_write_throughput_threshold"
247 )]
248 pub table_high_write_throughput_threshold: u64,
249
250 #[serde(
251 default = "default::meta::table_low_write_throughput_threshold",
252 alias = "min_table_split_write_throughput"
253 )]
254 pub table_low_write_throughput_threshold: u64,
256
257 #[serde(default = "default::meta::compaction_task_max_heartbeat_interval_secs")]
260 pub compaction_task_max_heartbeat_interval_secs: u64,
261
262 #[serde(default = "default::meta::compaction_task_max_progress_interval_secs")]
265 pub compaction_task_max_progress_interval_secs: u64,
266
267 #[serde(default)]
268 #[config_doc(nested)]
269 pub compaction_config: CompactionConfig,
270
271 #[serde(default = "default::meta::hybrid_partition_vnode_count")]
276 pub hybrid_partition_vnode_count: u32,
277
278 #[serde(default = "default::meta::event_log_enabled")]
279 pub event_log_enabled: bool,
280 #[serde(default = "default::meta::event_log_channel_max_size")]
282 pub event_log_channel_max_size: u32,
283
284 #[serde(default, with = "meta_prefix")]
285 #[config_doc(omitted)]
286 pub developer: MetaDeveloperConfig,
287 #[serde(default = "default::meta::enable_dropped_column_reclaim")]
289 pub enable_dropped_column_reclaim: bool,
290
291 #[serde(default = "default::meta::split_group_size_ratio")]
293 pub split_group_size_ratio: f64,
294
295 #[serde(default = "default::meta::table_stat_high_write_throughput_ratio_for_split")]
299 pub table_stat_high_write_throughput_ratio_for_split: f64,
300
301 #[serde(default = "default::meta::table_stat_low_write_throughput_ratio_for_merge")]
303 pub table_stat_low_write_throughput_ratio_for_merge: f64,
304
305 #[serde(default = "default::meta::table_stat_throuput_window_seconds_for_split")]
311 pub table_stat_throuput_window_seconds_for_split: usize,
312
313 #[serde(default = "default::meta::table_stat_throuput_window_seconds_for_merge")]
315 pub table_stat_throuput_window_seconds_for_merge: usize,
316
317 #[serde(default = "default::meta::compact_task_table_size_partition_threshold_low")]
320 pub compact_task_table_size_partition_threshold_low: u64,
321
322 #[serde(default = "default::meta::compact_task_table_size_partition_threshold_high")]
325 pub compact_task_table_size_partition_threshold_high: u64,
326
327 #[serde(
329 default = "default::meta::periodic_scheduling_compaction_group_split_interval_sec",
330 alias = "periodic_split_compact_group_interval_sec"
331 )]
332 pub periodic_scheduling_compaction_group_split_interval_sec: u64,
333
334 #[serde(default = "default::meta::periodic_scheduling_compaction_group_merge_interval_sec")]
336 pub periodic_scheduling_compaction_group_merge_interval_sec: u64,
337
338 #[serde(default = "default::meta::compaction_group_merge_dimension_threshold")]
340 pub compaction_group_merge_dimension_threshold: f64,
341
342 #[serde(default)]
343 #[config_doc(nested)]
344 pub meta_store_config: MetaStoreConfig,
345}
346
347serde_with::with_prefix!(meta_prefix "meta_");
348
349#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
351pub struct MetaStoreConfig {
352 #[serde(default = "default::meta_store_config::max_connections")]
354 pub max_connections: u32,
355 #[serde(default = "default::meta_store_config::min_connections")]
357 pub min_connections: u32,
358 #[serde(default = "default::meta_store_config::connection_timeout_sec")]
360 pub connection_timeout_sec: u64,
361 #[serde(default = "default::meta_store_config::idle_timeout_sec")]
363 pub idle_timeout_sec: u64,
364 #[serde(default = "default::meta_store_config::acquire_timeout_sec")]
366 pub acquire_timeout_sec: u64,
367}
368
369#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
373pub struct MetaDeveloperConfig {
374 #[serde(default = "default::developer::meta_cached_traces_num")]
377 pub cached_traces_num: u32,
378
379 #[serde(default = "default::developer::meta_cached_traces_memory_limit_bytes")]
382 pub cached_traces_memory_limit_bytes: usize,
383
384 #[serde(default = "default::developer::enable_trivial_move")]
386 pub enable_trivial_move: bool,
387 #[serde(default = "default::developer::enable_check_task_level_overlap")]
388 pub enable_check_task_level_overlap: bool,
389 #[serde(default = "default::developer::max_trivial_move_task_count_per_loop")]
390 pub max_trivial_move_task_count_per_loop: usize,
391
392 #[serde(default = "default::developer::max_get_task_probe_times")]
393 pub max_get_task_probe_times: usize,
394
395 #[serde(default = "default::developer::actor_cnt_per_worker_parallelism_soft_limit")]
398 pub actor_cnt_per_worker_parallelism_soft_limit: usize,
399
400 #[serde(default = "default::developer::actor_cnt_per_worker_parallelism_hard_limit")]
403 pub actor_cnt_per_worker_parallelism_hard_limit: usize,
404
405 #[serde(default = "default::developer::hummock_time_travel_sst_info_fetch_batch_size")]
407 pub hummock_time_travel_sst_info_fetch_batch_size: usize,
408
409 #[serde(default = "default::developer::hummock_time_travel_sst_info_insert_batch_size")]
411 pub hummock_time_travel_sst_info_insert_batch_size: usize,
412
413 #[serde(default = "default::developer::time_travel_vacuum_interval_sec")]
414 pub time_travel_vacuum_interval_sec: u64,
415
416 #[serde(default = "default::developer::hummock_time_travel_epoch_version_insert_batch_size")]
418 pub hummock_time_travel_epoch_version_insert_batch_size: usize,
419
420 #[serde(default = "default::developer::hummock_gc_history_insert_batch_size")]
421 pub hummock_gc_history_insert_batch_size: usize,
422
423 #[serde(default = "default::developer::hummock_time_travel_filter_out_objects_batch_size")]
424 pub hummock_time_travel_filter_out_objects_batch_size: usize,
425
426 #[serde(default = "default::developer::hummock_time_travel_filter_out_objects_v1")]
427 pub hummock_time_travel_filter_out_objects_v1: bool,
428
429 #[serde(
430 default = "default::developer::hummock_time_travel_filter_out_objects_list_version_batch_size"
431 )]
432 pub hummock_time_travel_filter_out_objects_list_version_batch_size: usize,
433
434 #[serde(
435 default = "default::developer::hummock_time_travel_filter_out_objects_list_delta_batch_size"
436 )]
437 pub hummock_time_travel_filter_out_objects_list_delta_batch_size: usize,
438
439 #[serde(default)]
440 pub compute_client_config: RpcClientConfig,
441
442 #[serde(default)]
443 pub stream_client_config: RpcClientConfig,
444
445 #[serde(default)]
446 pub frontend_client_config: RpcClientConfig,
447}
448
449#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
450pub struct CompactionConfig {
451 #[serde(default = "default::compaction_config::max_bytes_for_level_base")]
452 pub max_bytes_for_level_base: u64,
453 #[serde(default = "default::compaction_config::max_bytes_for_level_multiplier")]
454 pub max_bytes_for_level_multiplier: u64,
455 #[serde(default = "default::compaction_config::max_compaction_bytes")]
456 pub max_compaction_bytes: u64,
457 #[serde(default = "default::compaction_config::sub_level_max_compaction_bytes")]
458 pub sub_level_max_compaction_bytes: u64,
459 #[serde(default = "default::compaction_config::level0_tier_compact_file_number")]
460 pub level0_tier_compact_file_number: u64,
461 #[serde(default = "default::compaction_config::target_file_size_base")]
462 pub target_file_size_base: u64,
463 #[serde(default = "default::compaction_config::compaction_filter_mask")]
464 pub compaction_filter_mask: u32,
465 #[serde(default = "default::compaction_config::max_sub_compaction")]
466 pub max_sub_compaction: u32,
467 #[serde(default = "default::compaction_config::level0_stop_write_threshold_sub_level_number")]
468 pub level0_stop_write_threshold_sub_level_number: u64,
469 #[serde(default = "default::compaction_config::level0_sub_level_compact_level_count")]
470 pub level0_sub_level_compact_level_count: u32,
471 #[serde(
472 default = "default::compaction_config::level0_overlapping_sub_level_compact_level_count"
473 )]
474 pub level0_overlapping_sub_level_compact_level_count: u32,
475 #[serde(default = "default::compaction_config::max_space_reclaim_bytes")]
476 pub max_space_reclaim_bytes: u64,
477 #[serde(default = "default::compaction_config::level0_max_compact_file_number")]
478 pub level0_max_compact_file_number: u64,
479 #[serde(default = "default::compaction_config::tombstone_reclaim_ratio")]
480 pub tombstone_reclaim_ratio: u32,
481 #[serde(default = "default::compaction_config::enable_emergency_picker")]
482 pub enable_emergency_picker: bool,
483 #[serde(default = "default::compaction_config::max_level")]
484 pub max_level: u32,
485 #[serde(default = "default::compaction_config::sst_allowed_trivial_move_min_size")]
486 pub sst_allowed_trivial_move_min_size: u64,
487 #[serde(default = "default::compaction_config::sst_allowed_trivial_move_max_count")]
488 pub sst_allowed_trivial_move_max_count: u32,
489 #[serde(default = "default::compaction_config::max_l0_compact_level_count")]
490 pub max_l0_compact_level_count: u32,
491 #[serde(default = "default::compaction_config::disable_auto_group_scheduling")]
492 pub disable_auto_group_scheduling: bool,
493 #[serde(default = "default::compaction_config::max_overlapping_level_size")]
494 pub max_overlapping_level_size: u64,
495 #[serde(default = "default::compaction_config::emergency_level0_sst_file_count")]
496 pub emergency_level0_sst_file_count: u32,
497 #[serde(default = "default::compaction_config::emergency_level0_sub_level_partition")]
498 pub emergency_level0_sub_level_partition: u32,
499 #[serde(default = "default::compaction_config::level0_stop_write_threshold_max_sst_count")]
500 pub level0_stop_write_threshold_max_sst_count: u32,
501 #[serde(default = "default::compaction_config::level0_stop_write_threshold_max_size")]
502 pub level0_stop_write_threshold_max_size: u64,
503 #[serde(default = "default::compaction_config::enable_optimize_l0_interval_selection")]
504 pub enable_optimize_l0_interval_selection: bool,
505}
506
507pub mod default {
508 pub use crate::config::default::developer;
509
510 pub mod meta {
511 use crate::config::{DefaultParallelism, MetaBackend};
512
513 pub fn min_sst_retention_time_sec() -> u64 {
514 3600 * 6
515 }
516
517 pub fn gc_history_retention_time_sec() -> u64 {
518 3600 * 6
519 }
520
521 pub fn full_gc_interval_sec() -> u64 {
522 3600
523 }
524
525 pub fn full_gc_object_limit() -> u64 {
526 100_000
527 }
528
529 pub fn max_inflight_time_travel_query() -> u64 {
530 1000
531 }
532
533 pub fn periodic_compaction_interval_sec() -> u64 {
534 60
535 }
536
537 pub fn vacuum_interval_sec() -> u64 {
538 30
539 }
540
541 pub fn vacuum_spin_interval_ms() -> u64 {
542 100
543 }
544
545 pub fn hummock_version_checkpoint_interval_sec() -> u64 {
546 30
547 }
548
549 pub fn enable_hummock_data_archive() -> bool {
550 false
551 }
552
553 pub fn hummock_time_travel_snapshot_interval() -> u64 {
554 100
555 }
556
557 pub fn min_delta_log_num_for_hummock_version_checkpoint() -> u64 {
558 10
559 }
560
561 pub fn max_heartbeat_interval_sec() -> u32 {
562 60
563 }
564
565 pub fn meta_leader_lease_secs() -> u64 {
566 30
567 }
568
569 pub fn default_parallelism() -> DefaultParallelism {
570 DefaultParallelism::Full
571 }
572
573 pub fn node_num_monitor_interval_sec() -> u64 {
574 10
575 }
576
577 pub fn backend() -> MetaBackend {
578 MetaBackend::Mem
579 }
580
581 pub fn periodic_space_reclaim_compaction_interval_sec() -> u64 {
582 3600 }
584
585 pub fn periodic_ttl_reclaim_compaction_interval_sec() -> u64 {
586 1800 }
588
589 pub fn periodic_scheduling_compaction_group_split_interval_sec() -> u64 {
590 10 }
592
593 pub fn periodic_tombstone_reclaim_compaction_interval_sec() -> u64 {
594 600
595 }
596
597 pub fn move_table_size_limit() -> u64 {
599 10 * 1024 * 1024 * 1024 }
601
602 pub fn split_group_size_limit() -> u64 {
604 64 * 1024 * 1024 * 1024 }
606
607 pub fn protect_drop_table_with_incoming_sink() -> bool {
608 false
609 }
610
611 pub fn partition_vnode_count() -> u32 {
612 16
613 }
614
615 pub fn table_high_write_throughput_threshold() -> u64 {
616 16 * 1024 * 1024 }
618
619 pub fn table_low_write_throughput_threshold() -> u64 {
620 4 * 1024 * 1024 }
622
623 pub fn compaction_task_max_heartbeat_interval_secs() -> u64 {
624 30 }
626
627 pub fn compaction_task_max_progress_interval_secs() -> u64 {
628 60 * 10 }
630
631 pub fn cut_table_size_limit() -> u64 {
632 1024 * 1024 * 1024 }
634
635 pub fn hybrid_partition_vnode_count() -> u32 {
636 4
637 }
638
639 pub fn compact_task_table_size_partition_threshold_low() -> u64 {
640 128 * 1024 * 1024 }
642
643 pub fn compact_task_table_size_partition_threshold_high() -> u64 {
644 512 * 1024 * 1024 }
646
647 pub fn event_log_enabled() -> bool {
648 true
649 }
650
651 pub fn event_log_channel_max_size() -> u32 {
652 10
653 }
654
655 pub fn parallelism_control_batch_size() -> usize {
656 10
657 }
658
659 pub fn parallelism_control_trigger_period_sec() -> u64 {
660 10
661 }
662
663 pub fn parallelism_control_trigger_first_delay_sec() -> u64 {
664 30
665 }
666
667 pub fn enable_dropped_column_reclaim() -> bool {
668 false
669 }
670
671 pub fn split_group_size_ratio() -> f64 {
672 0.9
673 }
674
675 pub fn table_stat_high_write_throughput_ratio_for_split() -> f64 {
676 0.5
677 }
678
679 pub fn table_stat_low_write_throughput_ratio_for_merge() -> f64 {
680 0.7
681 }
682
683 pub fn table_stat_throuput_window_seconds_for_split() -> usize {
684 60
685 }
686
687 pub fn table_stat_throuput_window_seconds_for_merge() -> usize {
688 240
689 }
690
691 pub fn periodic_scheduling_compaction_group_merge_interval_sec() -> u64 {
692 60 * 10 }
694
695 pub fn compaction_group_merge_dimension_threshold() -> f64 {
696 1.2
697 }
698 }
699
700 pub mod meta_store_config {
701 const DEFAULT_MAX_CONNECTIONS: u32 = 10;
702 const DEFAULT_MIN_CONNECTIONS: u32 = 1;
703 const DEFAULT_CONNECTION_TIMEOUT_SEC: u64 = 10;
704 const DEFAULT_IDLE_TIMEOUT_SEC: u64 = 30;
705 const DEFAULT_ACQUIRE_TIMEOUT_SEC: u64 = 30;
706
707 pub fn max_connections() -> u32 {
708 DEFAULT_MAX_CONNECTIONS
709 }
710
711 pub fn min_connections() -> u32 {
712 DEFAULT_MIN_CONNECTIONS
713 }
714
715 pub fn connection_timeout_sec() -> u64 {
716 DEFAULT_CONNECTION_TIMEOUT_SEC
717 }
718
719 pub fn idle_timeout_sec() -> u64 {
720 DEFAULT_IDLE_TIMEOUT_SEC
721 }
722
723 pub fn acquire_timeout_sec() -> u64 {
724 DEFAULT_ACQUIRE_TIMEOUT_SEC
725 }
726 }
727
728 pub mod compaction_config {
729 const MB: u64 = 1024 * 1024;
730 const GB: u64 = 1024 * 1024 * 1024;
731 const DEFAULT_MAX_COMPACTION_BYTES: u64 = 2 * GB; const DEFAULT_MIN_COMPACTION_BYTES: u64 = 128 * MB; const DEFAULT_MAX_BYTES_FOR_LEVEL_BASE: u64 = 512 * MB; const DEFAULT_TIER_COMPACT_TRIGGER_NUMBER: u64 = 12;
737 const DEFAULT_TARGET_FILE_SIZE_BASE: u64 = 32 * MB;
738 const DEFAULT_MAX_SUB_COMPACTION: u32 = 4;
740 const DEFAULT_LEVEL_MULTIPLIER: u64 = 5;
741 const DEFAULT_MAX_SPACE_RECLAIM_BYTES: u64 = 512 * MB; const DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_SUB_LEVEL_NUMBER: u64 = 300;
743 const DEFAULT_MAX_COMPACTION_FILE_COUNT: u64 = 100;
744 const DEFAULT_MIN_SUB_LEVEL_COMPACT_LEVEL_COUNT: u32 = 3;
745 const DEFAULT_MIN_OVERLAPPING_SUB_LEVEL_COMPACT_LEVEL_COUNT: u32 = 12;
746 const DEFAULT_TOMBSTONE_RATIO_PERCENT: u32 = 40;
747 const DEFAULT_EMERGENCY_PICKER: bool = true;
748 const DEFAULT_MAX_LEVEL: u32 = 6;
749 const DEFAULT_MAX_L0_COMPACT_LEVEL_COUNT: u32 = 42;
750 const DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MIN_SIZE: u64 = 4 * MB;
751 const DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MAX_COUNT: u32 = 64;
752 const DEFAULT_EMERGENCY_LEVEL0_SST_FILE_COUNT: u32 = 2000; const DEFAULT_EMERGENCY_LEVEL0_SUB_LEVEL_PARTITION: u32 = 256;
754 const DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SST_COUNT: u32 = 10000; const DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SIZE: u64 = 300 * 1024 * MB; use crate::catalog::hummock::CompactionFilterFlag;
758
759 pub fn max_bytes_for_level_base() -> u64 {
760 DEFAULT_MAX_BYTES_FOR_LEVEL_BASE
761 }
762
763 pub fn max_bytes_for_level_multiplier() -> u64 {
764 DEFAULT_LEVEL_MULTIPLIER
765 }
766
767 pub fn max_compaction_bytes() -> u64 {
768 DEFAULT_MAX_COMPACTION_BYTES
769 }
770
771 pub fn sub_level_max_compaction_bytes() -> u64 {
772 DEFAULT_MIN_COMPACTION_BYTES
773 }
774
775 pub fn level0_tier_compact_file_number() -> u64 {
776 DEFAULT_TIER_COMPACT_TRIGGER_NUMBER
777 }
778
779 pub fn target_file_size_base() -> u64 {
780 DEFAULT_TARGET_FILE_SIZE_BASE
781 }
782
783 pub fn compaction_filter_mask() -> u32 {
784 (CompactionFilterFlag::STATE_CLEAN | CompactionFilterFlag::TTL).into()
785 }
786
787 pub fn max_sub_compaction() -> u32 {
788 DEFAULT_MAX_SUB_COMPACTION
789 }
790
791 pub fn level0_stop_write_threshold_sub_level_number() -> u64 {
792 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_SUB_LEVEL_NUMBER
793 }
794
795 pub fn level0_sub_level_compact_level_count() -> u32 {
796 DEFAULT_MIN_SUB_LEVEL_COMPACT_LEVEL_COUNT
797 }
798
799 pub fn level0_overlapping_sub_level_compact_level_count() -> u32 {
800 DEFAULT_MIN_OVERLAPPING_SUB_LEVEL_COMPACT_LEVEL_COUNT
801 }
802
803 pub fn max_space_reclaim_bytes() -> u64 {
804 DEFAULT_MAX_SPACE_RECLAIM_BYTES
805 }
806
807 pub fn level0_max_compact_file_number() -> u64 {
808 DEFAULT_MAX_COMPACTION_FILE_COUNT
809 }
810
811 pub fn tombstone_reclaim_ratio() -> u32 {
812 DEFAULT_TOMBSTONE_RATIO_PERCENT
813 }
814
815 pub fn enable_emergency_picker() -> bool {
816 DEFAULT_EMERGENCY_PICKER
817 }
818
819 pub fn max_level() -> u32 {
820 DEFAULT_MAX_LEVEL
821 }
822
823 pub fn max_l0_compact_level_count() -> u32 {
824 DEFAULT_MAX_L0_COMPACT_LEVEL_COUNT
825 }
826
827 pub fn sst_allowed_trivial_move_min_size() -> u64 {
828 DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MIN_SIZE
829 }
830
831 pub fn disable_auto_group_scheduling() -> bool {
832 false
833 }
834
835 pub fn max_overlapping_level_size() -> u64 {
836 256 * MB
837 }
838
839 pub fn sst_allowed_trivial_move_max_count() -> u32 {
840 DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MAX_COUNT
841 }
842
843 pub fn emergency_level0_sst_file_count() -> u32 {
844 DEFAULT_EMERGENCY_LEVEL0_SST_FILE_COUNT
845 }
846
847 pub fn emergency_level0_sub_level_partition() -> u32 {
848 DEFAULT_EMERGENCY_LEVEL0_SUB_LEVEL_PARTITION
849 }
850
851 pub fn level0_stop_write_threshold_max_sst_count() -> u32 {
852 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SST_COUNT
853 }
854
855 pub fn level0_stop_write_threshold_max_size() -> u64 {
856 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SIZE
857 }
858
859 pub fn enable_optimize_l0_interval_selection() -> bool {
860 false
861 }
862 }
863}