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

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

commit adbf6cabf320d6398a2df8885ed412cece411c1c
Author: JackieTien97 <[email protected]>
AuthorDate: Tue Nov 12 21:09:17 2024 +0800

    Add Metrics
---
 .../fragment/FragmentInstanceContext.java          |  19 ++
 .../execution/fragment/QueryStatistics.java        |  12 +-
 .../metric/SeriesScanCostMetricSet.java            | 233 ++++++++++++++++++++-
 .../FragmentInstanceStatisticsDrawer.java          |  64 ++++++
 .../iotdb/commons/service/metric/enums/Metric.java |   3 +
 .../src/main/thrift/datanode.thrift                |  13 ++
 6 files changed, 339 insertions(+), 5 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 7771358e9de..6d035e1dc3c 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
@@ -677,6 +677,13 @@ public class FragmentInstanceContext extends QueryContext {
     long durationTime = System.currentTimeMillis() - executionStartTime.get();
     
QueryRelatedResourceMetricSet.getInstance().updateFragmentInstanceTime(durationTime);
 
+    SeriesScanCostMetricSet.getInstance()
+        .recordBloomFilterMetrics(
+            getQueryStatistics().getLoadBloomFilterFromCacheCount().get(),
+            getQueryStatistics().getLoadBloomFilterFromDiskCount().get(),
+            getQueryStatistics().getLoadBloomFilterActualIOSize().get(),
+            getQueryStatistics().getLoadBloomFilterTime().get());
+
     SeriesScanCostMetricSet.getInstance()
         .recordNonAlignedTimeSeriesMetadataCount(
             getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqCount().get(),
@@ -702,6 +709,12 @@ public class FragmentInstanceContext extends QueryContext {
             
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemSeqTime().get(),
             
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemUnSeqTime().get());
 
+    SeriesScanCostMetricSet.getInstance()
+        .recordTimeSeriesMetadataMetrics(
+            
getQueryStatistics().getLoadTimeSeriesMetadataFromCacheCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataFromDiskCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataActualIOSize().get());
+
     SeriesScanCostMetricSet.getInstance()
         .recordConstructChunkReadersCount(
             
getQueryStatistics().getConstructAlignedChunkReadersMemCount().get(),
@@ -715,6 +728,12 @@ public class FragmentInstanceContext extends QueryContext {
             
getQueryStatistics().getConstructNonAlignedChunkReadersMemTime().get(),
             
getQueryStatistics().getConstructNonAlignedChunkReadersDiskTime().get());
 
+    SeriesScanCostMetricSet.getInstance()
+        .recordChunkMetrics(
+            getQueryStatistics().getLoadChunkFromCacheCount().get(),
+            getQueryStatistics().getLoadChunkFromDiskCount().get(),
+            getQueryStatistics().getLoadChunkActualIOSize().get());
+
     SeriesScanCostMetricSet.getInstance()
         .recordPageReadersDecompressCount(
             getQueryStatistics().getPageReadersDecodeAlignedMemCount().get(),
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 179cc446e00..b1ddfdbf4d7 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
@@ -316,6 +316,16 @@ public class QueryStatistics {
         alignedTimeSeriesMetadataModificationCount.get(),
         alignedTimeSeriesMetadataModificationTime.get(),
         nonAlignedTimeSeriesMetadataModificationCount.get(),
-        nonAlignedTimeSeriesMetadataModificationTime.get());
+        nonAlignedTimeSeriesMetadataModificationTime.get(),
+        loadBloomFilterFromCacheCount.get(),
+        loadBloomFilterFromDiskCount.get(),
+        loadBloomFilterActualIOSize.get(),
+        loadBloomFilterTime.get(),
+        loadTimeSeriesMetadataFromCacheCount.get(),
+        loadTimeSeriesMetadataFromDiskCount.get(),
+        loadTimeSeriesMetadataActualIOSize.get(),
+        loadChunkFromCacheCount.get(),
+        loadChunkFromDiskCount.get(),
+        loadChunkActualIOSize.get());
   }
 }
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 a50381a75b3..ab6fb12f596 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
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.service.metric.enums.Tag;
 import org.apache.iotdb.metrics.AbstractMetricService;
 import org.apache.iotdb.metrics.impl.DoNothingMetricManager;
 import org.apache.iotdb.metrics.metricsets.IMetricSet;
+import org.apache.iotdb.metrics.type.Counter;
 import org.apache.iotdb.metrics.type.Histogram;
 import org.apache.iotdb.metrics.type.Timer;
 import org.apache.iotdb.metrics.utils.MetricLevel;
@@ -46,9 +47,103 @@ public class SeriesScanCostMetricSet implements IMetricSet {
   public static final String NON_ALIGNED = "non_aligned";
   public static final String MEM = "mem";
   public static final String DISK = "disk";
+  public static final String MEM_AND_DISK = "mem_and_disk";
+
   public static final String SEQUENCE = "sequence";
   public static final String UNSEQUENCE = "unsequence";
 
+  public static final String SEQ_AND_UNSEQ = "seq_and_unseq";
+
+  public static final String BLOOM_FILTER = "bloom_filter";
+  public static final String TIMESERIES_METADATA = "timeseries_metadata";
+  public static final String CHUNK = "chunk";
+
+  private Histogram loadBloomFilterFromCacheCountHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Histogram loadBloomFilterFromDiskCountHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Counter loadBloomFilterActualIOSizeCounter = 
DoNothingMetricManager.DO_NOTHING_COUNTER;
+  private Timer loadBloomFilterTime = DoNothingMetricManager.DO_NOTHING_TIMER;
+
+  public void recordBloomFilterMetrics(
+      long loadBloomFilterFromCacheCount,
+      long loadBloomFilterFromDiskCount,
+      long loadBloomFilterActualIOSize,
+      long loadBloomFilterNanoTime) {
+    
loadBloomFilterFromCacheCountHistogram.update(loadBloomFilterFromCacheCount);
+    loadBloomFilterFromDiskCountHistogram.update(loadBloomFilterFromDiskCount);
+    loadBloomFilterActualIOSizeCounter.inc(loadBloomFilterActualIOSize);
+    loadBloomFilterTime.updateNanos(loadBloomFilterNanoTime);
+  }
+
+  private void bindBloomFilter(AbstractMetricService metricService) {
+    loadBloomFilterFromCacheCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            BLOOM_FILTER,
+            Tag.FROM.toString(),
+            CACHE);
+    loadBloomFilterFromDiskCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            BLOOM_FILTER,
+            Tag.FROM.toString(),
+            DISK);
+    loadBloomFilterActualIOSizeCounter =
+        metricService.getOrCreateCounter(
+            Metric.QUERY_DISK_READ.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            BLOOM_FILTER);
+    loadBloomFilterTime =
+        metricService.getOrCreateTimer(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            BLOOM_FILTER,
+            Tag.TYPE.toString(),
+            SEQ_AND_UNSEQ,
+            Tag.FROM.toString(),
+            MEM_AND_DISK);
+  }
+
+  private void unbindBloomFilter(AbstractMetricService metricService) {
+    loadBloomFilterFromCacheCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadBloomFilterFromDiskCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadBloomFilterActualIOSizeCounter = 
DoNothingMetricManager.DO_NOTHING_COUNTER;
+    loadBloomFilterTime = DoNothingMetricManager.DO_NOTHING_TIMER;
+
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        BLOOM_FILTER,
+        Tag.FROM.toString(),
+        CACHE);
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        BLOOM_FILTER,
+        Tag.FROM.toString(),
+        DISK);
+    metricService.remove(
+        MetricType.COUNTER, Metric.QUERY_DISK_READ.toString(), 
Tag.TYPE.toString(), BLOOM_FILTER);
+    metricService.remove(
+        MetricType.TIMER,
+        Metric.SERIES_SCAN_COST.toString(),
+        Tag.STAGE.toString(),
+        BLOOM_FILTER,
+        Tag.TYPE.toString(),
+        SEQ_AND_UNSEQ,
+        Tag.FROM.toString(),
+        MEM_AND_DISK);
+  }
+
   private Histogram loadTimeSeriesMetadataDiskSeqHistogram =
       DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Histogram loadTimeSeriesMetadataDiskUnSeqHistogram =
@@ -72,10 +167,18 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
   private Timer loadTimeSeriesMetadataMemSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
   private Timer loadTimeSeriesMetadataMemUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
 
-  public Timer loadTimeSeriesMetadataAlignedDiskSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  public Timer loadTimeSeriesMetadataAlignedDiskUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  public Timer loadTimeSeriesMetadataAlignedMemSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  public Timer loadTimeSeriesMetadataAlignedMemUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer loadTimeSeriesMetadataAlignedDiskSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer loadTimeSeriesMetadataAlignedDiskUnSeqTime =
+      DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer loadTimeSeriesMetadataAlignedMemSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer loadTimeSeriesMetadataAlignedMemUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+
+  private Histogram loadTimeSeriesMetadataFromCacheCountHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Histogram loadTimeSeriesMetadataFromDiskCountHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Counter loadTimeSeriesMetadataActualIOSizeCounter =
+      DoNothingMetricManager.DO_NOTHING_COUNTER;
 
   public void recordNonAlignedTimeSeriesMetadataCount(long c1, long c2, long 
c3, long c4) {
     loadTimeSeriesMetadataDiskSeqHistogram.update(c1);
@@ -105,6 +208,15 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
     loadTimeSeriesMetadataAlignedMemUnSeqTime.updateNanos(t4);
   }
 
+  public void recordTimeSeriesMetadataMetrics(
+      long loadTimeSeriesMetadataFromCacheCount,
+      long loadTimeSeriesMetadataFromDiskCount,
+      long loadTimeSeriesMetadataActualIOSize) {
+    
loadTimeSeriesMetadataFromCacheCountHistogram.update(loadTimeSeriesMetadataFromCacheCount);
+    
loadTimeSeriesMetadataFromDiskCountHistogram.update(loadTimeSeriesMetadataFromDiskCount);
+    
loadTimeSeriesMetadataActualIOSizeCounter.inc(loadTimeSeriesMetadataActualIOSize);
+  }
+
   private void bindTimeseriesMetadata(AbstractMetricService metricService) {
     loadTimeSeriesMetadataDiskSeqHistogram =
         metricService.getOrCreateHistogram(
@@ -273,6 +385,57 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
             MEM);
   }
 
+  private void bindTimeSeriesMetadataCache(AbstractMetricService 
metricService) {
+    loadTimeSeriesMetadataFromCacheCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            TIMESERIES_METADATA,
+            Tag.FROM.toString(),
+            CACHE);
+    loadTimeSeriesMetadataFromDiskCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            TIMESERIES_METADATA,
+            Tag.FROM.toString(),
+            DISK);
+    loadTimeSeriesMetadataActualIOSizeCounter =
+        metricService.getOrCreateCounter(
+            Metric.QUERY_DISK_READ.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            TIMESERIES_METADATA);
+  }
+
+  private void unbindTimeSeriesMetadataCache(AbstractMetricService 
metricService) {
+    loadTimeSeriesMetadataFromCacheCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadTimeSeriesMetadataFromDiskCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadTimeSeriesMetadataActualIOSizeCounter = 
DoNothingMetricManager.DO_NOTHING_COUNTER;
+
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        TIMESERIES_METADATA,
+        Tag.FROM.toString(),
+        CACHE);
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        TIMESERIES_METADATA,
+        Tag.FROM.toString(),
+        DISK);
+    metricService.remove(
+        MetricType.COUNTER,
+        Metric.QUERY_DISK_READ.toString(),
+        Tag.TYPE.toString(),
+        TIMESERIES_METADATA);
+  }
+
   private void unbindTimeseriesMetadata(AbstractMetricService metricService) {
     loadTimeSeriesMetadataDiskSeqHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     loadTimeSeriesMetadataDiskUnSeqHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
@@ -744,6 +907,10 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
   private Timer constructChunkReadersNonAlignedMemTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
   private Timer constructChunkReadersNonAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
 
+  private Histogram loadChunkFromCacheCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Histogram loadChunkFromDiskCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Counter loadChunkActualIOSizeCounter = 
DoNothingMetricManager.DO_NOTHING_COUNTER;
+
   public void recordConstructChunkReadersCount(
       long alignedMemCount,
       long alignedDiskCount,
@@ -763,6 +930,58 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
     constructChunkReadersNonAlignedDiskTimer.updateNanos(nonAlignedDiskTime);
   }
 
+  public void recordChunkMetrics(
+      long loadChunkFromCacheCount, long loadChunkFromDiskCount, long 
loadChunkActualIOSize) {
+    loadChunkFromCacheCountHistogram.update(loadChunkFromCacheCount);
+    loadChunkFromDiskCountHistogram.update(loadChunkFromDiskCount);
+    loadChunkActualIOSizeCounter.inc(loadChunkActualIOSize);
+  }
+
+  private void bindChunk(AbstractMetricService metricService) {
+    loadChunkFromCacheCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            CHUNK,
+            Tag.FROM.toString(),
+            CACHE);
+    loadChunkFromDiskCountHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.METRIC_QUERY_CACHE.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.TYPE.toString(),
+            CHUNK,
+            Tag.FROM.toString(),
+            DISK);
+    loadChunkActualIOSizeCounter =
+        metricService.getOrCreateCounter(
+            Metric.QUERY_DISK_READ.toString(), MetricLevel.IMPORTANT, 
Tag.TYPE.toString(), CHUNK);
+  }
+
+  private void unbindChunk(AbstractMetricService metricService) {
+    loadChunkFromCacheCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadChunkFromDiskCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    loadChunkActualIOSizeCounter = DoNothingMetricManager.DO_NOTHING_COUNTER;
+
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        CHUNK,
+        Tag.FROM.toString(),
+        CACHE);
+    metricService.remove(
+        MetricType.HISTOGRAM,
+        Metric.METRIC_QUERY_CACHE.toString(),
+        Tag.TYPE.toString(),
+        CHUNK,
+        Tag.FROM.toString(),
+        DISK);
+    metricService.remove(
+        MetricType.COUNTER, Metric.QUERY_DISK_READ.toString(), 
Tag.TYPE.toString(), CHUNK);
+  }
+
   private void bindConstructChunkReader(AbstractMetricService metricService) {
     constructChunkReadersAlignedMemHistogram =
         metricService.getOrCreateHistogram(
@@ -1249,8 +1468,10 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
+    bindBloomFilter(metricService);
     bindTimeseriesMetadata(metricService);
     bindAlignedTimeseriesMetadata(metricService);
+    bindTimeSeriesMetadataCache(metricService);
     bindReadTimeseriesMetadata(metricService);
     bindTimeseriesMetadataModification(metricService);
     bindLoadChunkMetadataList(metricService);
@@ -1258,6 +1479,7 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     bindChunkMetadataFilter(metricService);
     bindConstructChunkReader(metricService);
     bindReadChunk(metricService);
+    bindChunk(metricService);
     bindInitChunkReader(metricService);
     bindTsBlockFromPageReader(metricService);
     bindBuildTsBlockFromMergeReader(metricService);
@@ -1265,7 +1487,9 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
 
   @Override
   public void unbindFrom(AbstractMetricService metricService) {
+    unbindBloomFilter(metricService);
     unbindTimeseriesMetadata(metricService);
+    unbindTimeSeriesMetadataCache(metricService);
     unbindReadTimeseriesMetadata(metricService);
     unbindTimeseriesMetadataModification(metricService);
     unbindLoadChunkMetadataList(metricService);
@@ -1273,6 +1497,7 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     unbindChunkMetadataFilter(metricService);
     unbindConstructChunkReader(metricService);
     unbindReadChunk(metricService);
+    unbindChunk(metricService);
     unbindInitChunkReader(metricService);
     unbindTsBlockFromPageReader(metricService);
     unbindBuildTsBlockFromMergeReader(metricService);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
index bb40301506a..0141a86e627 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
@@ -152,6 +152,11 @@ public class FragmentInstanceStatisticsDrawer {
     }
   }
 
+  private void addLineWithoutValueCheck(
+      List<StatisticLine> singleFragmentInstanceArea, int level, String 
valueName, long value) {
+    addLine(singleFragmentInstanceArea, level, valueName + String.format(": 
%s", value));
+  }
+
   private void addLineWithValueCheck(
       List<StatisticLine> singleFragmentInstanceArea, int level, String 
valueName, double value) {
     if (Math.abs(value) > EPSILON) {
@@ -159,6 +164,11 @@ public class FragmentInstanceStatisticsDrawer {
     }
   }
 
+  private void addLineWithoutValueCheck(
+      List<StatisticLine> singleFragmentInstanceArea, int level, String 
valueName, double value) {
+    addLine(singleFragmentInstanceArea, level, valueName + String.format(": 
%.3f", value));
+  }
+
   private void addBlankLine(List<StatisticLine> singleFragmentInstanceArea) {
     addLine(singleFragmentInstanceArea, 0, " ");
   }
@@ -167,6 +177,27 @@ public class FragmentInstanceStatisticsDrawer {
       TQueryStatistics queryStatistics, List<StatisticLine> 
singleFragmentInstanceArea) {
     addLine(singleFragmentInstanceArea, 1, "Query Statistics:");
 
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadBloomFilterFromCacheCount",
+        queryStatistics.loadBloomFilterFromCacheCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadBloomFilterFromDiskCount",
+        queryStatistics.loadBloomFilterFromDiskCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadBloomFilterActualIOSize",
+        queryStatistics.loadBloomFilterActualIOSize);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadBloomFilterTime",
+        queryStatistics.loadBloomFilterTime * NS_TO_MS_FACTOR);
+
     addLineWithValueCheck(
         singleFragmentInstanceArea,
         2,
@@ -248,6 +279,23 @@ public class FragmentInstanceStatisticsDrawer {
         2,
         "loadTimeSeriesMetadataAlignedMemUnSeqTime",
         queryStatistics.loadTimeSeriesMetadataAlignedMemUnSeqTime * 
NS_TO_MS_FACTOR);
+
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadTimeSeriesMetadataFromCacheCount",
+        queryStatistics.loadTimeSeriesMetadataFromCacheCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadTimeSeriesMetadataFromDiskCount",
+        queryStatistics.loadTimeSeriesMetadataFromDiskCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadTimeSeriesMetadataActualIOSize",
+        queryStatistics.loadTimeSeriesMetadataActualIOSize);
+
     addLineWithValueCheck(
         singleFragmentInstanceArea,
         2,
@@ -311,6 +359,22 @@ public class FragmentInstanceStatisticsDrawer {
         "constructAlignedChunkReadersMemTime",
         queryStatistics.constructAlignedChunkReadersMemTime * NS_TO_MS_FACTOR);
 
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadChunkFromCacheCount",
+        queryStatistics.loadChunkFromCacheCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadChunkFromDiskCount",
+        queryStatistics.loadChunkFromDiskCount);
+    addLineWithoutValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "loadChunkActualIOSize",
+        queryStatistics.loadChunkActualIOSize);
+
     addLineWithValueCheck(
         singleFragmentInstanceArea,
         2,
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 39bf5f9289c..5812fac36f2 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
@@ -107,6 +107,7 @@ public enum Metric {
   SERIES_SCAN_COST("series_scan_cost"),
   MEMORY_USAGE_MONITOR("memory_usage_monitor"),
   METRIC_LOAD_TIME_SERIES_METADATA("metric_load_time_series_metadata"),
+  METRIC_QUERY_CACHE("metric_query_cache"),
   QUERY_METADATA_COST("query_metadata_cost"),
   DISPATCHER("dispatcher"),
   QUERY_EXECUTION("query_execution"),
@@ -120,6 +121,8 @@ public enum Metric {
   FRAGMENT_INSTANCE_MANAGER("fragment_instance_manager"),
   MEMORY_POOL("memory_pool"),
   LOCAL_EXECUTION_PLANNER("local_execution_planner"),
+  QUERY_DISK_READ("query_disk_read"),
+
   // file related
   FILE_SIZE("file_size"),
   FILE_COUNT("file_count"),
diff --git a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift 
b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
index 09f779a28dc..24261566d5f 100644
--- a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
+++ b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
@@ -678,6 +678,19 @@ struct TQueryStatistics {
   35: i64 alignedTimeSeriesMetadataModificationTime
   36: i64 nonAlignedTimeSeriesMetadataModificationCount
   37: i64 nonAlignedTimeSeriesMetadataModificationTime
+
+  38: i64 loadBloomFilterFromCacheCount
+  39: i64 loadBloomFilterFromDiskCount
+  40: i64 loadBloomFilterActualIOSize
+  41: i64 loadBloomFilterTime
+
+  42: i64 loadTimeSeriesMetadataFromCacheCount
+  43: i64 loadTimeSeriesMetadataFromDiskCount
+  44: i64 loadTimeSeriesMetadataActualIOSize
+
+  45: i64 loadChunkFromCacheCount
+  46: i64 loadChunkFromDiskCount
+  47: i64 loadChunkActualIOSize
 }
 
 

Reply via email to