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::iceberg_gc_interval_sec")]
128 pub iceberg_gc_interval_sec: u64,
129
130 #[serde(default = "default::meta::hummock_version_checkpoint_interval_sec")]
132 pub hummock_version_checkpoint_interval_sec: u64,
133
134 #[serde(default = "default::meta::enable_hummock_data_archive")]
140 pub enable_hummock_data_archive: bool,
141
142 #[serde(default = "default::meta::hummock_time_travel_snapshot_interval")]
146 pub hummock_time_travel_snapshot_interval: u64,
147
148 #[serde(default = "default::meta::min_delta_log_num_for_hummock_version_checkpoint")]
151 pub min_delta_log_num_for_hummock_version_checkpoint: u64,
152
153 #[serde(default = "default::meta::max_heartbeat_interval_sec")]
155 pub max_heartbeat_interval_secs: u32,
156
157 #[serde(default)]
159 pub disable_recovery: bool,
160
161 #[serde(default)]
163 pub disable_automatic_parallelism_control: bool,
164
165 #[serde(default = "default::meta::parallelism_control_batch_size")]
167 pub parallelism_control_batch_size: usize,
168
169 #[serde(default = "default::meta::parallelism_control_trigger_period_sec")]
171 pub parallelism_control_trigger_period_sec: u64,
172
173 #[serde(default = "default::meta::parallelism_control_trigger_first_delay_sec")]
175 pub parallelism_control_trigger_first_delay_sec: u64,
176
177 #[serde(default = "default::meta::meta_leader_lease_secs")]
178 pub meta_leader_lease_secs: u64,
179
180 #[serde(default)]
183 pub dangerous_max_idle_secs: Option<u64>,
184
185 #[serde(default = "default::meta::default_parallelism")]
189 pub default_parallelism: DefaultParallelism,
190
191 #[serde(default)]
195 pub enable_compaction_deterministic: bool,
196
197 #[serde(default)]
199 pub enable_committed_sst_sanity_check: bool,
200
201 #[serde(default = "default::meta::node_num_monitor_interval_sec")]
202 pub node_num_monitor_interval_sec: u64,
203
204 #[serde(default = "default::meta::backend")]
205 pub backend: MetaBackend,
206
207 #[serde(default = "default::meta::periodic_space_reclaim_compaction_interval_sec")]
209 pub periodic_space_reclaim_compaction_interval_sec: u64,
210
211 #[serde(default = "default::meta::periodic_ttl_reclaim_compaction_interval_sec")]
213 pub periodic_ttl_reclaim_compaction_interval_sec: u64,
214
215 #[serde(default = "default::meta::periodic_tombstone_reclaim_compaction_interval_sec")]
216 pub periodic_tombstone_reclaim_compaction_interval_sec: u64,
217
218 #[serde(default = "default::meta::move_table_size_limit")]
219 #[deprecated]
220 pub move_table_size_limit: u64,
221
222 #[serde(default = "default::meta::split_group_size_limit")]
223 #[deprecated]
224 pub split_group_size_limit: u64,
225
226 #[serde(default = "default::meta::cut_table_size_limit")]
227 #[deprecated]
228 pub cut_table_size_limit: u64,
229
230 #[serde(default = "default::meta::protect_drop_table_with_incoming_sink")]
232 pub protect_drop_table_with_incoming_sink: bool,
233
234 #[serde(default, flatten)]
235 #[config_doc(omitted)]
236 pub unrecognized: Unrecognized<Self>,
237
238 #[serde(default)]
240 pub do_not_config_object_storage_lifecycle: bool,
241
242 #[serde(default = "default::meta::partition_vnode_count")]
245 pub partition_vnode_count: u32,
246
247 #[serde(
249 default = "default::meta::table_high_write_throughput_threshold",
250 alias = "table_write_throughput_threshold"
251 )]
252 pub table_high_write_throughput_threshold: u64,
253
254 #[serde(
255 default = "default::meta::table_low_write_throughput_threshold",
256 alias = "min_table_split_write_throughput"
257 )]
258 pub table_low_write_throughput_threshold: u64,
260
261 #[serde(default = "default::meta::compaction_task_max_heartbeat_interval_secs")]
264 pub compaction_task_max_heartbeat_interval_secs: u64,
265
266 #[serde(default = "default::meta::compaction_task_max_progress_interval_secs")]
269 pub compaction_task_max_progress_interval_secs: u64,
270
271 #[serde(default)]
272 #[config_doc(nested)]
273 pub compaction_config: CompactionConfig,
274
275 #[serde(default = "default::meta::hybrid_partition_vnode_count")]
280 pub hybrid_partition_vnode_count: u32,
281
282 #[serde(default = "default::meta::event_log_enabled")]
283 pub event_log_enabled: bool,
284 #[serde(default = "default::meta::event_log_channel_max_size")]
286 pub event_log_channel_max_size: u32,
287
288 #[serde(default, with = "meta_prefix")]
289 #[config_doc(omitted)]
290 pub developer: MetaDeveloperConfig,
291 #[serde(default = "default::meta::enable_dropped_column_reclaim")]
293 pub enable_dropped_column_reclaim: bool,
294
295 #[serde(default = "default::meta::split_group_size_ratio")]
297 pub split_group_size_ratio: f64,
298
299 #[serde(default = "default::meta::table_stat_high_write_throughput_ratio_for_split")]
303 pub table_stat_high_write_throughput_ratio_for_split: f64,
304
305 #[serde(default = "default::meta::table_stat_low_write_throughput_ratio_for_merge")]
307 pub table_stat_low_write_throughput_ratio_for_merge: f64,
308
309 #[serde(default = "default::meta::table_stat_throuput_window_seconds_for_split")]
315 pub table_stat_throuput_window_seconds_for_split: usize,
316
317 #[serde(default = "default::meta::table_stat_throuput_window_seconds_for_merge")]
319 pub table_stat_throuput_window_seconds_for_merge: usize,
320
321 #[serde(default = "default::meta::compact_task_table_size_partition_threshold_low")]
324 pub compact_task_table_size_partition_threshold_low: u64,
325
326 #[serde(default = "default::meta::compact_task_table_size_partition_threshold_high")]
329 pub compact_task_table_size_partition_threshold_high: u64,
330
331 #[serde(
333 default = "default::meta::periodic_scheduling_compaction_group_split_interval_sec",
334 alias = "periodic_split_compact_group_interval_sec"
335 )]
336 pub periodic_scheduling_compaction_group_split_interval_sec: u64,
337
338 #[serde(default = "default::meta::periodic_scheduling_compaction_group_merge_interval_sec")]
340 pub periodic_scheduling_compaction_group_merge_interval_sec: u64,
341
342 #[serde(default = "default::meta::compaction_group_merge_dimension_threshold")]
344 pub compaction_group_merge_dimension_threshold: f64,
345
346 #[serde(default = "default::meta::cdc_table_split_init_sleep_interval_splits")]
348 pub cdc_table_split_init_sleep_interval_splits: u64,
349
350 #[serde(default = "default::meta::cdc_table_split_init_sleep_duration_millis")]
352 pub cdc_table_split_init_sleep_duration_millis: u64,
353
354 #[serde(default = "default::meta::cdc_table_split_init_insert_batch_size")]
356 pub cdc_table_split_init_insert_batch_size: u64,
357
358 #[serde(default = "default::meta::enable_legacy_table_migration")]
360 pub enable_legacy_table_migration: bool,
361
362 #[serde(default)]
363 #[config_doc(nested)]
364 pub meta_store_config: MetaStoreConfig,
365}
366
367serde_with::with_prefix!(meta_prefix "meta_");
368
369#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
371pub struct MetaStoreConfig {
372 #[serde(default = "default::meta_store_config::max_connections")]
374 pub max_connections: u32,
375 #[serde(default = "default::meta_store_config::min_connections")]
377 pub min_connections: u32,
378 #[serde(default = "default::meta_store_config::connection_timeout_sec")]
380 pub connection_timeout_sec: u64,
381 #[serde(default = "default::meta_store_config::idle_timeout_sec")]
383 pub idle_timeout_sec: u64,
384 #[serde(default = "default::meta_store_config::acquire_timeout_sec")]
386 pub acquire_timeout_sec: u64,
387}
388
389#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
393pub struct MetaDeveloperConfig {
394 #[serde(default = "default::developer::meta_cached_traces_num")]
397 pub cached_traces_num: u32,
398
399 #[serde(default = "default::developer::meta_cached_traces_memory_limit_bytes")]
402 pub cached_traces_memory_limit_bytes: usize,
403
404 #[serde(default = "default::developer::enable_trivial_move")]
406 pub enable_trivial_move: bool,
407 #[serde(default = "default::developer::enable_check_task_level_overlap")]
408 pub enable_check_task_level_overlap: bool,
409 #[serde(default = "default::developer::max_trivial_move_task_count_per_loop")]
410 pub max_trivial_move_task_count_per_loop: usize,
411
412 #[serde(default = "default::developer::max_get_task_probe_times")]
413 pub max_get_task_probe_times: usize,
414
415 #[serde(default = "default::developer::actor_cnt_per_worker_parallelism_soft_limit")]
418 pub actor_cnt_per_worker_parallelism_soft_limit: usize,
419
420 #[serde(default = "default::developer::actor_cnt_per_worker_parallelism_hard_limit")]
423 pub actor_cnt_per_worker_parallelism_hard_limit: usize,
424
425 #[serde(default = "default::developer::hummock_time_travel_sst_info_fetch_batch_size")]
427 pub hummock_time_travel_sst_info_fetch_batch_size: usize,
428
429 #[serde(default = "default::developer::hummock_time_travel_sst_info_insert_batch_size")]
431 pub hummock_time_travel_sst_info_insert_batch_size: usize,
432
433 #[serde(default = "default::developer::time_travel_vacuum_interval_sec")]
434 pub time_travel_vacuum_interval_sec: u64,
435
436 #[serde(default = "default::developer::hummock_time_travel_epoch_version_insert_batch_size")]
438 pub hummock_time_travel_epoch_version_insert_batch_size: usize,
439
440 #[serde(default = "default::developer::hummock_gc_history_insert_batch_size")]
441 pub hummock_gc_history_insert_batch_size: usize,
442
443 #[serde(default = "default::developer::hummock_time_travel_filter_out_objects_batch_size")]
444 pub hummock_time_travel_filter_out_objects_batch_size: usize,
445
446 #[serde(default = "default::developer::hummock_time_travel_filter_out_objects_v1")]
447 pub hummock_time_travel_filter_out_objects_v1: bool,
448
449 #[serde(
450 default = "default::developer::hummock_time_travel_filter_out_objects_list_version_batch_size"
451 )]
452 pub hummock_time_travel_filter_out_objects_list_version_batch_size: usize,
453
454 #[serde(
455 default = "default::developer::hummock_time_travel_filter_out_objects_list_delta_batch_size"
456 )]
457 pub hummock_time_travel_filter_out_objects_list_delta_batch_size: usize,
458
459 #[serde(default)]
460 pub compute_client_config: RpcClientConfig,
461
462 #[serde(default)]
463 pub stream_client_config: RpcClientConfig,
464
465 #[serde(default)]
466 pub frontend_client_config: RpcClientConfig,
467}
468
469#[derive(Clone, Debug, Serialize, Deserialize, DefaultFromSerde, ConfigDoc)]
470pub struct CompactionConfig {
471 #[serde(default = "default::compaction_config::max_bytes_for_level_base")]
472 pub max_bytes_for_level_base: u64,
473 #[serde(default = "default::compaction_config::max_bytes_for_level_multiplier")]
474 pub max_bytes_for_level_multiplier: u64,
475 #[serde(default = "default::compaction_config::max_compaction_bytes")]
476 pub max_compaction_bytes: u64,
477 #[serde(default = "default::compaction_config::sub_level_max_compaction_bytes")]
478 pub sub_level_max_compaction_bytes: u64,
479 #[serde(default = "default::compaction_config::level0_tier_compact_file_number")]
480 pub level0_tier_compact_file_number: u64,
481 #[serde(default = "default::compaction_config::target_file_size_base")]
482 pub target_file_size_base: u64,
483 #[serde(default = "default::compaction_config::compaction_filter_mask")]
484 pub compaction_filter_mask: u32,
485 #[serde(default = "default::compaction_config::max_sub_compaction")]
486 pub max_sub_compaction: u32,
487 #[serde(default = "default::compaction_config::level0_stop_write_threshold_sub_level_number")]
488 pub level0_stop_write_threshold_sub_level_number: u64,
489 #[serde(default = "default::compaction_config::level0_sub_level_compact_level_count")]
490 pub level0_sub_level_compact_level_count: u32,
491 #[serde(
492 default = "default::compaction_config::level0_overlapping_sub_level_compact_level_count"
493 )]
494 pub level0_overlapping_sub_level_compact_level_count: u32,
495 #[serde(default = "default::compaction_config::max_space_reclaim_bytes")]
496 pub max_space_reclaim_bytes: u64,
497 #[serde(default = "default::compaction_config::level0_max_compact_file_number")]
498 pub level0_max_compact_file_number: u64,
499 #[serde(default = "default::compaction_config::tombstone_reclaim_ratio")]
500 pub tombstone_reclaim_ratio: u32,
501 #[serde(default = "default::compaction_config::enable_emergency_picker")]
502 pub enable_emergency_picker: bool,
503 #[serde(default = "default::compaction_config::max_level")]
504 pub max_level: u32,
505 #[serde(default = "default::compaction_config::sst_allowed_trivial_move_min_size")]
506 pub sst_allowed_trivial_move_min_size: u64,
507 #[serde(default = "default::compaction_config::sst_allowed_trivial_move_max_count")]
508 pub sst_allowed_trivial_move_max_count: u32,
509 #[serde(default = "default::compaction_config::max_l0_compact_level_count")]
510 pub max_l0_compact_level_count: u32,
511 #[serde(default = "default::compaction_config::disable_auto_group_scheduling")]
512 pub disable_auto_group_scheduling: bool,
513 #[serde(default = "default::compaction_config::max_overlapping_level_size")]
514 pub max_overlapping_level_size: u64,
515 #[serde(default = "default::compaction_config::emergency_level0_sst_file_count")]
516 pub emergency_level0_sst_file_count: u32,
517 #[serde(default = "default::compaction_config::emergency_level0_sub_level_partition")]
518 pub emergency_level0_sub_level_partition: u32,
519 #[serde(default = "default::compaction_config::level0_stop_write_threshold_max_sst_count")]
520 pub level0_stop_write_threshold_max_sst_count: u32,
521 #[serde(default = "default::compaction_config::level0_stop_write_threshold_max_size")]
522 pub level0_stop_write_threshold_max_size: u64,
523 #[serde(default = "default::compaction_config::enable_optimize_l0_interval_selection")]
524 pub enable_optimize_l0_interval_selection: bool,
525}
526
527pub mod default {
528 pub use crate::config::default::developer;
529
530 pub mod meta {
531 use crate::config::{DefaultParallelism, MetaBackend};
532
533 pub fn min_sst_retention_time_sec() -> u64 {
534 3600 * 6
535 }
536
537 pub fn gc_history_retention_time_sec() -> u64 {
538 3600 * 6
539 }
540
541 pub fn full_gc_interval_sec() -> u64 {
542 3600
543 }
544
545 pub fn full_gc_object_limit() -> u64 {
546 100_000
547 }
548
549 pub fn max_inflight_time_travel_query() -> u64 {
550 1000
551 }
552
553 pub fn periodic_compaction_interval_sec() -> u64 {
554 60
555 }
556
557 pub fn vacuum_interval_sec() -> u64 {
558 30
559 }
560
561 pub fn vacuum_spin_interval_ms() -> u64 {
562 100
563 }
564
565 pub fn iceberg_gc_interval_sec() -> u64 {
566 3600
567 }
568
569 pub fn hummock_version_checkpoint_interval_sec() -> u64 {
570 30
571 }
572
573 pub fn enable_hummock_data_archive() -> bool {
574 false
575 }
576
577 pub fn hummock_time_travel_snapshot_interval() -> u64 {
578 100
579 }
580
581 pub fn min_delta_log_num_for_hummock_version_checkpoint() -> u64 {
582 10
583 }
584
585 pub fn max_heartbeat_interval_sec() -> u32 {
586 60
587 }
588
589 pub fn meta_leader_lease_secs() -> u64 {
590 30
591 }
592
593 pub fn default_parallelism() -> DefaultParallelism {
594 DefaultParallelism::Full
595 }
596
597 pub fn node_num_monitor_interval_sec() -> u64 {
598 10
599 }
600
601 pub fn backend() -> MetaBackend {
602 MetaBackend::Mem
603 }
604
605 pub fn periodic_space_reclaim_compaction_interval_sec() -> u64 {
606 3600 }
608
609 pub fn periodic_ttl_reclaim_compaction_interval_sec() -> u64 {
610 1800 }
612
613 pub fn periodic_scheduling_compaction_group_split_interval_sec() -> u64 {
614 10 }
616
617 pub fn periodic_tombstone_reclaim_compaction_interval_sec() -> u64 {
618 600
619 }
620
621 pub fn move_table_size_limit() -> u64 {
623 10 * 1024 * 1024 * 1024 }
625
626 pub fn split_group_size_limit() -> u64 {
628 64 * 1024 * 1024 * 1024 }
630
631 pub fn protect_drop_table_with_incoming_sink() -> bool {
632 false
633 }
634
635 pub fn partition_vnode_count() -> u32 {
636 16
637 }
638
639 pub fn table_high_write_throughput_threshold() -> u64 {
640 16 * 1024 * 1024 }
642
643 pub fn table_low_write_throughput_threshold() -> u64 {
644 4 * 1024 * 1024 }
646
647 pub fn compaction_task_max_heartbeat_interval_secs() -> u64 {
648 30 }
650
651 pub fn compaction_task_max_progress_interval_secs() -> u64 {
652 60 * 10 }
654
655 pub fn cut_table_size_limit() -> u64 {
656 1024 * 1024 * 1024 }
658
659 pub fn hybrid_partition_vnode_count() -> u32 {
660 4
661 }
662
663 pub fn compact_task_table_size_partition_threshold_low() -> u64 {
664 128 * 1024 * 1024 }
666
667 pub fn compact_task_table_size_partition_threshold_high() -> u64 {
668 512 * 1024 * 1024 }
670
671 pub fn event_log_enabled() -> bool {
672 true
673 }
674
675 pub fn event_log_channel_max_size() -> u32 {
676 10
677 }
678
679 pub fn parallelism_control_batch_size() -> usize {
680 10
681 }
682
683 pub fn parallelism_control_trigger_period_sec() -> u64 {
684 10
685 }
686
687 pub fn parallelism_control_trigger_first_delay_sec() -> u64 {
688 30
689 }
690
691 pub fn enable_dropped_column_reclaim() -> bool {
692 false
693 }
694
695 pub fn split_group_size_ratio() -> f64 {
696 0.9
697 }
698
699 pub fn table_stat_high_write_throughput_ratio_for_split() -> f64 {
700 0.5
701 }
702
703 pub fn table_stat_low_write_throughput_ratio_for_merge() -> f64 {
704 0.7
705 }
706
707 pub fn table_stat_throuput_window_seconds_for_split() -> usize {
708 60
709 }
710
711 pub fn table_stat_throuput_window_seconds_for_merge() -> usize {
712 240
713 }
714
715 pub fn periodic_scheduling_compaction_group_merge_interval_sec() -> u64 {
716 60 * 10 }
718
719 pub fn compaction_group_merge_dimension_threshold() -> f64 {
720 1.2
721 }
722
723 pub fn cdc_table_split_init_sleep_interval_splits() -> u64 {
724 1000
725 }
726
727 pub fn cdc_table_split_init_sleep_duration_millis() -> u64 {
728 500
729 }
730
731 pub fn cdc_table_split_init_insert_batch_size() -> u64 {
732 100
733 }
734
735 pub fn enable_legacy_table_migration() -> bool {
736 true
737 }
738 }
739
740 pub mod meta_store_config {
741 const DEFAULT_MAX_CONNECTIONS: u32 = 10;
742 const DEFAULT_MIN_CONNECTIONS: u32 = 1;
743 const DEFAULT_CONNECTION_TIMEOUT_SEC: u64 = 10;
744 const DEFAULT_IDLE_TIMEOUT_SEC: u64 = 30;
745 const DEFAULT_ACQUIRE_TIMEOUT_SEC: u64 = 30;
746
747 pub fn max_connections() -> u32 {
748 DEFAULT_MAX_CONNECTIONS
749 }
750
751 pub fn min_connections() -> u32 {
752 DEFAULT_MIN_CONNECTIONS
753 }
754
755 pub fn connection_timeout_sec() -> u64 {
756 DEFAULT_CONNECTION_TIMEOUT_SEC
757 }
758
759 pub fn idle_timeout_sec() -> u64 {
760 DEFAULT_IDLE_TIMEOUT_SEC
761 }
762
763 pub fn acquire_timeout_sec() -> u64 {
764 DEFAULT_ACQUIRE_TIMEOUT_SEC
765 }
766 }
767
768 pub mod compaction_config {
769 const MB: u64 = 1024 * 1024;
770 const GB: u64 = 1024 * 1024 * 1024;
771 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;
777 const DEFAULT_TARGET_FILE_SIZE_BASE: u64 = 32 * MB;
778 const DEFAULT_MAX_SUB_COMPACTION: u32 = 4;
780 const DEFAULT_LEVEL_MULTIPLIER: u64 = 5;
781 const DEFAULT_MAX_SPACE_RECLAIM_BYTES: u64 = 512 * MB; const DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_SUB_LEVEL_NUMBER: u64 = 300;
783 const DEFAULT_MAX_COMPACTION_FILE_COUNT: u64 = 100;
784 const DEFAULT_MIN_SUB_LEVEL_COMPACT_LEVEL_COUNT: u32 = 3;
785 const DEFAULT_MIN_OVERLAPPING_SUB_LEVEL_COMPACT_LEVEL_COUNT: u32 = 12;
786 const DEFAULT_TOMBSTONE_RATIO_PERCENT: u32 = 40;
787 const DEFAULT_EMERGENCY_PICKER: bool = true;
788 const DEFAULT_MAX_LEVEL: u32 = 6;
789 const DEFAULT_MAX_L0_COMPACT_LEVEL_COUNT: u32 = 42;
790 const DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MIN_SIZE: u64 = 4 * MB;
791 const DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MAX_COUNT: u32 = 64;
792 const DEFAULT_EMERGENCY_LEVEL0_SST_FILE_COUNT: u32 = 2000; const DEFAULT_EMERGENCY_LEVEL0_SUB_LEVEL_PARTITION: u32 = 256;
794 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;
798
799 pub fn max_bytes_for_level_base() -> u64 {
800 DEFAULT_MAX_BYTES_FOR_LEVEL_BASE
801 }
802
803 pub fn max_bytes_for_level_multiplier() -> u64 {
804 DEFAULT_LEVEL_MULTIPLIER
805 }
806
807 pub fn max_compaction_bytes() -> u64 {
808 DEFAULT_MAX_COMPACTION_BYTES
809 }
810
811 pub fn sub_level_max_compaction_bytes() -> u64 {
812 DEFAULT_MIN_COMPACTION_BYTES
813 }
814
815 pub fn level0_tier_compact_file_number() -> u64 {
816 DEFAULT_TIER_COMPACT_TRIGGER_NUMBER
817 }
818
819 pub fn target_file_size_base() -> u64 {
820 DEFAULT_TARGET_FILE_SIZE_BASE
821 }
822
823 pub fn compaction_filter_mask() -> u32 {
824 (CompactionFilterFlag::STATE_CLEAN | CompactionFilterFlag::TTL).into()
825 }
826
827 pub fn max_sub_compaction() -> u32 {
828 DEFAULT_MAX_SUB_COMPACTION
829 }
830
831 pub fn level0_stop_write_threshold_sub_level_number() -> u64 {
832 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_SUB_LEVEL_NUMBER
833 }
834
835 pub fn level0_sub_level_compact_level_count() -> u32 {
836 DEFAULT_MIN_SUB_LEVEL_COMPACT_LEVEL_COUNT
837 }
838
839 pub fn level0_overlapping_sub_level_compact_level_count() -> u32 {
840 DEFAULT_MIN_OVERLAPPING_SUB_LEVEL_COMPACT_LEVEL_COUNT
841 }
842
843 pub fn max_space_reclaim_bytes() -> u64 {
844 DEFAULT_MAX_SPACE_RECLAIM_BYTES
845 }
846
847 pub fn level0_max_compact_file_number() -> u64 {
848 DEFAULT_MAX_COMPACTION_FILE_COUNT
849 }
850
851 pub fn tombstone_reclaim_ratio() -> u32 {
852 DEFAULT_TOMBSTONE_RATIO_PERCENT
853 }
854
855 pub fn enable_emergency_picker() -> bool {
856 DEFAULT_EMERGENCY_PICKER
857 }
858
859 pub fn max_level() -> u32 {
860 DEFAULT_MAX_LEVEL
861 }
862
863 pub fn max_l0_compact_level_count() -> u32 {
864 DEFAULT_MAX_L0_COMPACT_LEVEL_COUNT
865 }
866
867 pub fn sst_allowed_trivial_move_min_size() -> u64 {
868 DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MIN_SIZE
869 }
870
871 pub fn disable_auto_group_scheduling() -> bool {
872 false
873 }
874
875 pub fn max_overlapping_level_size() -> u64 {
876 256 * MB
877 }
878
879 pub fn sst_allowed_trivial_move_max_count() -> u32 {
880 DEFAULT_SST_ALLOWED_TRIVIAL_MOVE_MAX_COUNT
881 }
882
883 pub fn emergency_level0_sst_file_count() -> u32 {
884 DEFAULT_EMERGENCY_LEVEL0_SST_FILE_COUNT
885 }
886
887 pub fn emergency_level0_sub_level_partition() -> u32 {
888 DEFAULT_EMERGENCY_LEVEL0_SUB_LEVEL_PARTITION
889 }
890
891 pub fn level0_stop_write_threshold_max_sst_count() -> u32 {
892 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SST_COUNT
893 }
894
895 pub fn level0_stop_write_threshold_max_size() -> u64 {
896 DEFAULT_LEVEL0_STOP_WRITE_THRESHOLD_MAX_SIZE
897 }
898
899 pub fn enable_optimize_l0_interval_selection() -> bool {
900 false
901 }
902 }
903}