diff --git a/src/mito2/src/memtable/simple_bulk_memtable.rs b/src/mito2/src/memtable/simple_bulk_memtable.rs index ac7a4d4364..7ea60df05f 100644 --- a/src/mito2/src/memtable/simple_bulk_memtable.rs +++ b/src/mito2/src/memtable/simple_bulk_memtable.rs @@ -65,7 +65,7 @@ impl SimpleBulkMemtable { } else { dedup }; - let series = RwLock::new(Series::new(®ion_metadata)); + let series = RwLock::new(Series::with_capacity(®ion_metadata, 1024)); Self { id, diff --git a/src/mito2/src/memtable/time_series.rs b/src/mito2/src/memtable/time_series.rs index e9ca61fffb..b6e6db2c64 100644 --- a/src/mito2/src/memtable/time_series.rs +++ b/src/mito2/src/memtable/time_series.rs @@ -60,7 +60,7 @@ use crate::region::options::MergeMode; use crate::row_converter::{DensePrimaryKeyCodec, PrimaryKeyCodecExt}; /// Initial vector builder capacity. -const INITIAL_BUILDER_CAPACITY: usize = 1024 * 8; +const INITIAL_BUILDER_CAPACITY: usize = 4; /// Vector builder capacity. const BUILDER_CAPACITY: usize = 512; @@ -663,15 +663,19 @@ pub(crate) struct Series { } impl Series { - pub(crate) fn new(region_metadata: &RegionMetadataRef) -> Self { + pub(crate) fn with_capacity(region_metadata: &RegionMetadataRef, builder_cap: usize) -> Self { Self { pk_cache: None, - active: ValueBuilder::new(region_metadata, INITIAL_BUILDER_CAPACITY), + active: ValueBuilder::new(region_metadata, builder_cap), frozen: vec![], region_metadata: region_metadata.clone(), } } + pub(crate) fn new(region_metadata: &RegionMetadataRef) -> Self { + Self::with_capacity(region_metadata, INITIAL_BUILDER_CAPACITY) + } + pub fn is_empty(&self) -> bool { self.active.len() == 0 && self.frozen.is_empty() }