From b19d23d6653fbb0918933ecee66fe5652e370b89 Mon Sep 17 00:00:00 2001 From: "Lei, HUANG" <6406592+v0y4g3r@users.noreply.github.com> Date: Tue, 3 Jun 2025 16:25:02 +0800 Subject: [PATCH] fix(mito): revert initial builder capacity for TimeSeriesMemtable (#6231) * fix/initial-builder-cap: ### Enhance Series Initialization and Capacity Management - **`simple_bulk_memtable.rs`**: Updated the `Series` initialization to use `with_capacity` with a specified capacity of 8192, improving memory management. - **`time_series.rs`**: Introduced `with_capacity` method in `Series` to allow custom initial capacity for `ValueBuilder`. Adjusted `INITIAL_BUILDER_CAPACITY` to 16 for more efficient memory usage. Added a new `new` method to maintain backward compatibility. * fix/initial-builder-cap: ### Adjust Memory Allocation in Memtable - **`simple_bulk_memtable.rs`**: Reduced the initial capacity of `Series` from 8192 to 1024 to optimize memory usage. - **`time_series.rs`**: Decreased `INITIAL_BUILDER_CAPACITY` from 16 to 4 to improve efficiency in vector building. --- src/mito2/src/memtable/time_series.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mito2/src/memtable/time_series.rs b/src/mito2/src/memtable/time_series.rs index 751e0cdc5d..8d32995264 100644 --- a/src/mito2/src/memtable/time_series.rs +++ b/src/mito2/src/memtable/time_series.rs @@ -57,7 +57,7 @@ use crate::region::options::MergeMode; use crate::row_converter::{DensePrimaryKeyCodec, PrimaryKeyCodecExt}; /// Initial vector builder capacity. -const INITIAL_BUILDER_CAPACITY: usize = 16; +const INITIAL_BUILDER_CAPACITY: usize = 4; /// Vector builder capacity. const BUILDER_CAPACITY: usize = 512; @@ -645,15 +645,19 @@ struct Series { } impl Series { - 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) + } + /// Pushes a row of values into Series. Return the size of values. fn push<'a>( &mut self,