This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new a8e5080fc9c Remove useless metrics in AggTableScan and make the 
TimeseriesMetadataCache get time as FI level
a8e5080fc9c is described below

commit a8e5080fc9c785efbe5d8e8d4d3b8eef6023203b
Author: Beyyes <[email protected]>
AuthorDate: Mon Mar 17 10:26:46 2025 +0800

    Remove useless metrics in AggTableScan and make the TimeseriesMetadataCache 
get time as FI level
---
 .../fragment/FragmentInstanceContext.java          |  4 ++-
 .../execution/fragment/QueryStatistics.java        | 10 ++++++
 .../relational/aggregation/TableAggregator.java    |  9 +----
 .../metric/SeriesScanCostMetricSet.java            | 40 +++++++++++++++++++++-
 .../buffer/TimeSeriesMetadataCache.java            | 20 +++++------
 .../iotdb/commons/service/metric/enums/Metric.java |  1 +
 6 files changed, 62 insertions(+), 22 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
index f467ee14c77..561eb432c6a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
@@ -766,7 +766,9 @@ public class FragmentInstanceContext extends QueryContext {
         .recordTimeSeriesMetadataMetrics(
             
getQueryStatistics().getLoadTimeSeriesMetadataFromCacheCount().get(),
             
getQueryStatistics().getLoadTimeSeriesMetadataFromDiskCount().get(),
-            
getQueryStatistics().getLoadTimeSeriesMetadataActualIOSize().get());
+            getQueryStatistics().getLoadTimeSeriesMetadataActualIOSize().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataFromCacheTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataFromDiskTime().get());
 
     SeriesScanCostMetricSet.getInstance()
         .recordConstructChunkReadersCount(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryStatistics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryStatistics.java
index b1ddfdbf4d7..277e9106520 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryStatistics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryStatistics.java
@@ -54,7 +54,9 @@ public class QueryStatistics {
   private final AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqTime = new 
AtomicLong(0);
 
   private final AtomicLong loadTimeSeriesMetadataFromCacheCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataFromCacheTime = new 
AtomicLong(0);
   private final AtomicLong loadTimeSeriesMetadataFromDiskCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataFromDiskTime = new 
AtomicLong(0);
   private final AtomicLong loadTimeSeriesMetadataActualIOSize = new 
AtomicLong(0);
 
   // statistics for count and time of construct chunk readers(disk io and 
decompress)
@@ -274,10 +276,18 @@ public class QueryStatistics {
     return loadTimeSeriesMetadataFromCacheCount;
   }
 
+  public AtomicLong getLoadTimeSeriesMetadataFromCacheTime() {
+    return loadTimeSeriesMetadataFromCacheTime;
+  }
+
   public AtomicLong getLoadTimeSeriesMetadataFromDiskCount() {
     return loadTimeSeriesMetadataFromDiskCount;
   }
 
+  public AtomicLong getLoadTimeSeriesMetadataFromDiskTime() {
+    return loadTimeSeriesMetadataFromDiskTime;
+  }
+
   public TQueryStatistics toThrift() {
     return new TQueryStatistics(
         loadTimeSeriesMetadataDiskSeqCount.get(),
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java
index fbbc7083127..955532cea6d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java
@@ -37,7 +37,6 @@ import static java.util.Objects.requireNonNull;
 import static 
org.apache.iotdb.db.queryengine.execution.aggregation.TreeAggregator.QUERY_EXECUTION_METRICS;
 import static 
org.apache.iotdb.db.queryengine.execution.operator.source.relational.TableScanOperator.TIME_COLUMN_TEMPLATE;
 import static 
org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet.AGGREGATION_FROM_RAW_DATA;
-import static 
org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet.AGGREGATION_FROM_STATISTICS;
 
 public class TableAggregator {
   private final TableAccumulator accumulator;
@@ -106,13 +105,7 @@ public class TableAggregator {
   }
 
   public void processStatistics(Statistics[] statistics) {
-    long startTime = System.nanoTime();
-    try {
-      accumulator.addStatistics(statistics);
-    } finally {
-      QUERY_EXECUTION_METRICS.recordExecutionCost(
-          AGGREGATION_FROM_STATISTICS, System.nanoTime() - startTime);
-    }
+    accumulator.addStatistics(statistics);
   }
 
   public boolean hasFinalResult() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
index ebaa7c030d9..bd006dca7ef 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
@@ -179,6 +179,8 @@ public class SeriesScanCostMetricSet implements IMetricSet {
       DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Counter loadTimeSeriesMetadataActualIOSizeCounter =
       DoNothingMetricManager.DO_NOTHING_COUNTER;
+  private Timer loadTimeSeriesMetadataFromCacheTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer loadTimeSeriesMetadataFromDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
 
   public void recordNonAlignedTimeSeriesMetadataCount(long c1, long c2, long 
c3, long c4) {
     loadTimeSeriesMetadataDiskSeqHistogram.update(c1);
@@ -211,10 +213,14 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
   public void recordTimeSeriesMetadataMetrics(
       long loadTimeSeriesMetadataFromCacheCount,
       long loadTimeSeriesMetadataFromDiskCount,
-      long loadTimeSeriesMetadataActualIOSize) {
+      long loadTimeSeriesMetadataActualIOSize,
+      long loadTimeSeriesMetadataFromCacheTime,
+      long loadTimeSeriesMetadataFromDiskTime) {
     
loadTimeSeriesMetadataFromCacheCountHistogram.update(loadTimeSeriesMetadataFromCacheCount);
     
loadTimeSeriesMetadataFromDiskCountHistogram.update(loadTimeSeriesMetadataFromDiskCount);
     
loadTimeSeriesMetadataActualIOSizeCounter.inc(loadTimeSeriesMetadataActualIOSize);
+    
loadTimeSeriesMetadataFromCacheTimer.updateNanos(loadTimeSeriesMetadataFromCacheTime);
+    
loadTimeSeriesMetadataFromDiskTimer.updateNanos(loadTimeSeriesMetadataFromDiskTime);
   }
 
   private void bindTimeseriesMetadata(AbstractMetricService metricService) {
@@ -408,12 +414,30 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
             MetricLevel.IMPORTANT,
             Tag.TYPE.toString(),
             TIMESERIES_METADATA);
+    loadTimeSeriesMetadataFromCacheTimer =
+        metricService.getOrCreateTimer(
+            Metric.METRIC_QUERY_CACHE_TIMER.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            TIMESERIES_METADATA,
+            Tag.FROM.toString(),
+            CACHE);
+    loadTimeSeriesMetadataFromDiskTimer =
+        metricService.getOrCreateTimer(
+            Metric.METRIC_QUERY_CACHE_TIMER.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            TIMESERIES_METADATA,
+            Tag.FROM.toString(),
+            DISK);
   }
 
   private void unbindTimeSeriesMetadataCache(AbstractMetricService 
metricService) {
     loadTimeSeriesMetadataFromCacheCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     loadTimeSeriesMetadataFromDiskCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     loadTimeSeriesMetadataActualIOSizeCounter = 
DoNothingMetricManager.DO_NOTHING_COUNTER;
+    loadTimeSeriesMetadataFromCacheTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataFromDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
 
     metricService.remove(
         MetricType.HISTOGRAM,
@@ -434,6 +458,20 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
         Metric.QUERY_DISK_READ.toString(),
         Tag.TYPE.toString(),
         TIMESERIES_METADATA);
+    metricService.remove(
+        MetricType.TIMER,
+        Metric.METRIC_QUERY_CACHE_TIMER.toString(),
+        Tag.TYPE.toString(),
+        TIMESERIES_METADATA,
+        Tag.FROM.toString(),
+        CACHE);
+    metricService.remove(
+        MetricType.TIMER,
+        Metric.METRIC_QUERY_CACHE_TIMER.toString(),
+        Tag.TYPE.toString(),
+        TIMESERIES_METADATA,
+        Tag.FROM.toString(),
+        DISK);
   }
 
   private void unbindTimeseriesMetadata(AbstractMetricService metricService) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
index 9b4bb17f63c..3fb377fabba 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
@@ -27,7 +27,6 @@ import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.DataNodeMemoryConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
-import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.queryengine.metric.TimeSeriesMetadataCacheMetrics;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
@@ -55,8 +54,6 @@ import java.util.WeakHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.LongConsumer;
 
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_TIMESERIES_METADATA_CACHE;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_TIMESERIES_METADATA_FILE;
 import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
 
 /**
@@ -73,9 +70,6 @@ public class TimeSeriesMetadataCache {
   private static final IMemoryBlock CACHE_MEMORY_BLOCK;
   private static final boolean CACHE_ENABLE = 
memoryConfig.isMetaDataCacheEnable();
 
-  private static final SeriesScanCostMetricSet SERIES_SCAN_COST_METRIC_SET =
-      SeriesScanCostMetricSet.getInstance();
-
   private final Cache<TimeSeriesMetadataCacheKey, TimeseriesMetadata> lruCache;
 
   private final AtomicLong entryAverageSize = new AtomicLong(0);
@@ -244,17 +238,19 @@ public class TimeSeriesMetadataCache {
             .getQueryStatistics()
             .getLoadTimeSeriesMetadataFromCacheCount()
             .incrementAndGet();
-        // in metric panel, loading BloomFilter time is included in loading 
TimeSeriesMetadata
-        SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-            READ_TIMESERIES_METADATA_CACHE, System.nanoTime() - startTime);
+        queryContext
+            .getQueryStatistics()
+            .getLoadTimeSeriesMetadataFromCacheTime()
+            .getAndAdd(System.nanoTime() - startTime - loadBloomFilterTime);
       } else {
         queryContext
             .getQueryStatistics()
             .getLoadTimeSeriesMetadataFromDiskCount()
             .incrementAndGet();
-        // in metric panel, loading BloomFilter time is included in loading 
TimeSeriesMetadata
-        SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-            READ_TIMESERIES_METADATA_FILE, System.nanoTime() - startTime);
+        queryContext
+            .getQueryStatistics()
+            .getLoadTimeSeriesMetadataFromDiskTime()
+            .getAndAdd(System.nanoTime() - startTime - loadBloomFilterTime);
       }
     }
   }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Metric.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Metric.java
index c1f94c76e38..554f7d6226b 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Metric.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Metric.java
@@ -111,6 +111,7 @@ public enum Metric {
   MEMORY_USAGE_MONITOR("memory_usage_monitor"),
   METRIC_LOAD_TIME_SERIES_METADATA("metric_load_time_series_metadata"),
   METRIC_QUERY_CACHE("metric_query_cache"),
+  METRIC_QUERY_CACHE_TIMER("metric_query_cache_timer"),
   QUERY_METADATA_COST("query_metadata_cost"),
   DISPATCHER("dispatcher"),
   QUERY_EXECUTION("query_execution"),

Reply via email to