From 9b61a7167c3ed115eb89105279e6cdef6efad8d4 Mon Sep 17 00:00:00 2001 From: Ruihang Xia Date: Tue, 3 Mar 2026 07:08:27 +0800 Subject: [PATCH] resolve tiny cr comments Signed-off-by: Ruihang Xia --- src/mito2/src/cache/index/result_cache.rs | 6 ++++-- src/mito2/src/read/scan_util.rs | 16 ++++++++++++++++ src/mito2/src/sst/parquet/reader.rs | 19 +++++++++++++++---- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/mito2/src/cache/index/result_cache.rs b/src/mito2/src/cache/index/result_cache.rs index d4a62f573d..dfed662a14 100644 --- a/src/mito2/src/cache/index/result_cache.rs +++ b/src/mito2/src/cache/index/result_cache.rs @@ -258,8 +258,10 @@ pub struct MinMaxKey { impl MinMaxKey { pub fn new(exprs: Arc>, schema_version: u64, skip_fields: bool) -> Self { - let mem_usage = - exprs.iter().map(|s| s.len()).sum::() + size_of::() + size_of::(); + let mem_usage = size_of::() + + size_of::>() + + exprs.len() * size_of::() + + exprs.iter().map(|s| s.len()).sum::(); Self { exprs, schema_version, diff --git a/src/mito2/src/read/scan_util.rs b/src/mito2/src/read/scan_util.rs index a1bd055242..1d970d7bd0 100644 --- a/src/mito2/src/read/scan_util.rs +++ b/src/mito2/src/read/scan_util.rs @@ -182,6 +182,10 @@ pub(crate) struct ScanMetricsSet { bloom_filter_cache_hit: usize, /// Number of index result cache misses for bloom filter index. bloom_filter_cache_miss: usize, + /// Number of index result cache hits for minmax pruning. + minmax_cache_hit: usize, + /// Number of index result cache misses for minmax pruning. + minmax_cache_miss: usize, /// Number of pruner builder cache hits. pruner_cache_hit: usize, /// Number of pruner builder cache misses. @@ -308,6 +312,8 @@ impl fmt::Debug for ScanMetricsSet { inverted_index_cache_miss, bloom_filter_cache_hit, bloom_filter_cache_miss, + minmax_cache_hit, + minmax_cache_miss, pruner_cache_hit, pruner_cache_miss, pruner_prune_cost, @@ -433,6 +439,12 @@ impl fmt::Debug for ScanMetricsSet { if *bloom_filter_cache_miss > 0 { write!(f, ", \"bloom_filter_cache_miss\":{bloom_filter_cache_miss}")?; } + if *minmax_cache_hit > 0 { + write!(f, ", \"minmax_cache_hit\":{minmax_cache_hit}")?; + } + if *minmax_cache_miss > 0 { + write!(f, ", \"minmax_cache_miss\":{minmax_cache_miss}")?; + } if *pruner_cache_hit > 0 { write!(f, ", \"pruner_cache_hit\":{pruner_cache_hit}")?; } @@ -639,6 +651,8 @@ impl ScanMetricsSet { inverted_index_cache_miss, bloom_filter_cache_hit, bloom_filter_cache_miss, + minmax_cache_hit, + minmax_cache_miss, pruner_cache_hit, pruner_cache_miss, pruner_prune_cost, @@ -680,6 +694,8 @@ impl ScanMetricsSet { self.inverted_index_cache_miss += *inverted_index_cache_miss; self.bloom_filter_cache_hit += *bloom_filter_cache_hit; self.bloom_filter_cache_miss += *bloom_filter_cache_miss; + self.minmax_cache_hit += *minmax_cache_hit; + self.minmax_cache_miss += *minmax_cache_miss; self.pruner_cache_hit += *pruner_cache_hit; self.pruner_cache_miss += *pruner_cache_miss; self.pruner_prune_cost += *pruner_prune_cost; diff --git a/src/mito2/src/sst/parquet/reader.rs b/src/mito2/src/sst/parquet/reader.rs index 794007c1a4..73322b85c9 100644 --- a/src/mito2/src/sst/parquet/reader.rs +++ b/src/mito2/src/sst/parquet/reader.rs @@ -1177,11 +1177,16 @@ impl ParquetReaderBuilder { if let Some(index_result_cache) = index_result_cache && let Some(predicate_key) = cached_minmax_key.as_ref() - && let Some(result) = index_result_cache.get(predicate_key, file_id) { - let num_row_groups = parquet_meta.num_row_groups(); - metrics.rg_minmax_filtered += num_row_groups.saturating_sub(result.row_group_count()); - return (*result).clone(); + if let Some(result) = index_result_cache.get(predicate_key, file_id) { + metrics.minmax_cache_hit += 1; + let num_row_groups = parquet_meta.num_row_groups(); + metrics.rg_minmax_filtered += + num_row_groups.saturating_sub(result.row_group_count()); + return (*result).clone(); + } + + metrics.minmax_cache_miss += 1; } let region_meta = read_format.metadata(); @@ -1334,6 +1339,10 @@ pub(crate) struct ReaderFilterMetrics { pub(crate) bloom_filter_cache_hit: usize, /// Number of index result cache misses for bloom filter index. pub(crate) bloom_filter_cache_miss: usize, + /// Number of index result cache hits for minmax pruning. + pub(crate) minmax_cache_hit: usize, + /// Number of index result cache misses for minmax pruning. + pub(crate) minmax_cache_miss: usize, /// Optional metrics for inverted index applier. pub(crate) inverted_index_apply_metrics: Option, @@ -1374,6 +1383,8 @@ impl ReaderFilterMetrics { self.inverted_index_cache_miss += other.inverted_index_cache_miss; self.bloom_filter_cache_hit += other.bloom_filter_cache_hit; self.bloom_filter_cache_miss += other.bloom_filter_cache_miss; + self.minmax_cache_hit += other.minmax_cache_hit; + self.minmax_cache_miss += other.minmax_cache_miss; self.pruner_cache_hit += other.pruner_cache_hit; self.pruner_cache_miss += other.pruner_cache_miss;