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 6b85a68e720 Add count and time statistics for timeseries metadata 
modification
6b85a68e720 is described below

commit 6b85a68e72079022b031b3c4774f45fe7c518753
Author: Beyyes <[email protected]>
AuthorDate: Thu Jul 11 14:42:53 2024 +0800

    Add count and time statistics for timeseries metadata modification
---
 .../fragment/FragmentInstanceContext.java          |  73 ++++---
 .../execution/fragment/QueryStatistics.java        | 224 +++++++++++++++++----
 .../execution/operator/source/FileLoaderUtils.java |  96 +++++----
 .../execution/operator/source/SeriesScanUtil.java  |  22 +-
 .../metric/SeriesScanCostMetricSet.java            |  49 +++++
 .../read/reader/chunk/DiskAlignedChunkLoader.java  |   4 +-
 .../read/reader/chunk/DiskChunkLoader.java         |   4 +-
 .../read/reader/chunk/MemAlignedChunkLoader.java   |   4 +-
 .../read/reader/chunk/MemChunkLoader.java          |   4 +-
 9 files changed, 351 insertions(+), 129 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 7c83518fcf0..7302e7f0b45 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
@@ -631,57 +631,64 @@ public class FragmentInstanceContext extends QueryContext 
{
 
     SeriesScanCostMetricSet.getInstance()
         .recordNonAlignedTimeSeriesMetadataCount(
-            getQueryStatistics().loadTimeSeriesMetadataDiskSeqCount.get(),
-            getQueryStatistics().loadTimeSeriesMetadataDiskUnSeqCount.get(),
-            getQueryStatistics().loadTimeSeriesMetadataMemSeqCount.get(),
-            getQueryStatistics().loadTimeSeriesMetadataMemUnSeqCount.get());
+            getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataDiskUnSeqCount().get(),
+            getQueryStatistics().getLoadTimeSeriesMetadataMemSeqCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataMemUnSeqCount().get());
     SeriesScanCostMetricSet.getInstance()
         .recordNonAlignedTimeSeriesMetadataTime(
-            getQueryStatistics().loadTimeSeriesMetadataDiskSeqTime.get(),
-            getQueryStatistics().loadTimeSeriesMetadataDiskUnSeqTime.get(),
-            getQueryStatistics().loadTimeSeriesMetadataMemSeqTime.get(),
-            getQueryStatistics().loadTimeSeriesMetadataMemUnSeqTime.get());
+            getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataDiskUnSeqTime().get(),
+            getQueryStatistics().getLoadTimeSeriesMetadataMemSeqTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataMemUnSeqTime().get());
     SeriesScanCostMetricSet.getInstance()
         .recordAlignedTimeSeriesMetadataCount(
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedDiskSeqCount.get(),
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedDiskUnSeqCount.get(),
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedMemSeqCount.get(),
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedMemUnSeqCount.get());
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedDiskSeqCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedDiskUnSeqCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemSeqCount().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemUnSeqCount().get());
     SeriesScanCostMetricSet.getInstance()
         .recordAlignedTimeSeriesMetadataTime(
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedDiskSeqTime.get(),
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedDiskUnSeqTime.get(),
-            getQueryStatistics().loadTimeSeriesMetadataAlignedMemSeqTime.get(),
-            
getQueryStatistics().loadTimeSeriesMetadataAlignedMemUnSeqTime.get());
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedDiskSeqTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedDiskUnSeqTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemSeqTime().get(),
+            
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemUnSeqTime().get());
 
     SeriesScanCostMetricSet.getInstance()
         .recordConstructChunkReadersCount(
-            getQueryStatistics().constructAlignedChunkReadersMemCount.get(),
-            getQueryStatistics().constructAlignedChunkReadersDiskCount.get(),
-            getQueryStatistics().constructNonAlignedChunkReadersMemCount.get(),
-            
getQueryStatistics().constructNonAlignedChunkReadersDiskCount.get());
+            
getQueryStatistics().getConstructAlignedChunkReadersMemCount().get(),
+            
getQueryStatistics().getConstructAlignedChunkReadersDiskCount().get(),
+            
getQueryStatistics().getConstructNonAlignedChunkReadersMemCount().get(),
+            
getQueryStatistics().getConstructNonAlignedChunkReadersDiskCount().get());
     SeriesScanCostMetricSet.getInstance()
         .recordConstructChunkReadersTime(
-            getQueryStatistics().constructAlignedChunkReadersMemTime.get(),
-            getQueryStatistics().constructAlignedChunkReadersDiskTime.get(),
-            getQueryStatistics().constructNonAlignedChunkReadersMemTime.get(),
-            
getQueryStatistics().constructNonAlignedChunkReadersDiskTime.get());
+            
getQueryStatistics().getConstructAlignedChunkReadersMemTime().get(),
+            
getQueryStatistics().getConstructAlignedChunkReadersDiskTime().get(),
+            
getQueryStatistics().getConstructNonAlignedChunkReadersMemTime().get(),
+            
getQueryStatistics().getConstructNonAlignedChunkReadersDiskTime().get());
 
     SeriesScanCostMetricSet.getInstance()
         .recordPageReadersDecompressCount(
-            getQueryStatistics().pageReadersDecodeAlignedMemCount.get(),
-            getQueryStatistics().pageReadersDecodeAlignedDiskCount.get(),
-            getQueryStatistics().pageReadersDecodeNonAlignedMemCount.get(),
-            getQueryStatistics().pageReadersDecodeNonAlignedDiskCount.get());
+            getQueryStatistics().getPageReadersDecodeAlignedMemCount().get(),
+            getQueryStatistics().getPageReadersDecodeAlignedDiskCount().get(),
+            
getQueryStatistics().getPageReadersDecodeNonAlignedMemCount().get(),
+            
getQueryStatistics().getPageReadersDecodeNonAlignedDiskCount().get());
     SeriesScanCostMetricSet.getInstance()
         .recordPageReadersDecompressTime(
-            getQueryStatistics().pageReadersDecodeAlignedMemTime.get(),
-            getQueryStatistics().pageReadersDecodeAlignedDiskTime.get(),
-            getQueryStatistics().pageReadersDecodeNonAlignedMemTime.get(),
-            getQueryStatistics().pageReadersDecodeNonAlignedDiskTime.get());
+            getQueryStatistics().getPageReadersDecodeAlignedMemTime().get(),
+            getQueryStatistics().getPageReadersDecodeAlignedDiskTime().get(),
+            getQueryStatistics().getPageReadersDecodeNonAlignedMemTime().get(),
+            
getQueryStatistics().getPageReadersDecodeNonAlignedDiskTime().get());
 
     SeriesScanCostMetricSet.getInstance()
-        
.updatePageReaderMemoryUsage(getQueryStatistics().pageReaderMaxUsedMemorySize.get());
+        .recordTimeSeriesMetadataModification(
+            
getQueryStatistics().getAlignedTimeSeriesMetadataModificationCount().get(),
+            
getQueryStatistics().getNonAlignedTimeSeriesMetadataModificationCount().get(),
+            
getQueryStatistics().getAlignedTimeSeriesMetadataModificationTime().get(),
+            
getQueryStatistics().getNonAlignedTimeSeriesMetadataModificationTime().get());
+
+    SeriesScanCostMetricSet.getInstance()
+        
.updatePageReaderMemoryUsage(getQueryStatistics().getPageReaderMaxUsedMemorySize().get());
   }
 
   private synchronized void releaseDataNodeQueryContext() {
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 82094467034..74c0cf77f2f 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
@@ -30,46 +30,200 @@ import java.util.concurrent.atomic.AtomicLong;
 public class QueryStatistics {
 
   // statistics for count and time of load timeseriesmetadata
-  public AtomicLong loadTimeSeriesMetadataDiskSeqCount = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataDiskUnSeqCount = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataMemSeqCount = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataMemUnSeqCount = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedDiskSeqCount = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedDiskUnSeqCount = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedMemSeqCount = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqCount = new 
AtomicLong(0);
-
-  public AtomicLong loadTimeSeriesMetadataDiskSeqTime = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataDiskUnSeqTime = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataMemSeqTime = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataMemUnSeqTime = new AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedDiskSeqTime = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedDiskUnSeqTime = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedMemSeqTime = new 
AtomicLong(0);
-  public AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataDiskSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataDiskUnSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataMemSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataMemUnSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedDiskSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedDiskUnSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedMemSeqCount = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqCount = new 
AtomicLong(0);
+
+  private final AtomicLong loadTimeSeriesMetadataDiskSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataDiskUnSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataMemSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataMemUnSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedDiskSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedDiskUnSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedMemSeqTime = new 
AtomicLong(0);
+  private final AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqTime = new 
AtomicLong(0);
 
   // statistics for count and time of construct chunk readers(disk io and 
decompress)
-  public AtomicLong constructNonAlignedChunkReadersDiskCount = new 
AtomicLong(0);
-  public AtomicLong constructNonAlignedChunkReadersMemCount = new 
AtomicLong(0);
-  public AtomicLong constructAlignedChunkReadersDiskCount = new AtomicLong(0);
-  public AtomicLong constructAlignedChunkReadersMemCount = new AtomicLong(0);
+  private final AtomicLong constructNonAlignedChunkReadersDiskCount = new 
AtomicLong(0);
+  private final AtomicLong constructNonAlignedChunkReadersMemCount = new 
AtomicLong(0);
+  private final AtomicLong constructAlignedChunkReadersDiskCount = new 
AtomicLong(0);
+  private final AtomicLong constructAlignedChunkReadersMemCount = new 
AtomicLong(0);
 
-  public AtomicLong constructNonAlignedChunkReadersDiskTime = new 
AtomicLong(0);
-  public AtomicLong constructNonAlignedChunkReadersMemTime = new AtomicLong(0);
-  public AtomicLong constructAlignedChunkReadersDiskTime = new AtomicLong(0);
-  public AtomicLong constructAlignedChunkReadersMemTime = new AtomicLong(0);
+  private final AtomicLong constructNonAlignedChunkReadersDiskTime = new 
AtomicLong(0);
+  private final AtomicLong constructNonAlignedChunkReadersMemTime = new 
AtomicLong(0);
+  private final AtomicLong constructAlignedChunkReadersDiskTime = new 
AtomicLong(0);
+  private final AtomicLong constructAlignedChunkReadersMemTime = new 
AtomicLong(0);
 
   // statistics for count and time of page decode
-  public AtomicLong pageReadersDecodeAlignedDiskCount = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeAlignedDiskTime = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeAlignedMemCount = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeAlignedMemTime = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeNonAlignedDiskCount = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeNonAlignedDiskTime = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeNonAlignedMemCount = new AtomicLong(0);
-  public AtomicLong pageReadersDecodeNonAlignedMemTime = new AtomicLong(0);
-
-  public AtomicLong pageReaderMaxUsedMemorySize = new AtomicLong(0);
+  private final AtomicLong pageReadersDecodeAlignedDiskCount = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeAlignedDiskTime = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeAlignedMemCount = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeAlignedMemTime = new AtomicLong(0);
+  private final AtomicLong pageReadersDecodeNonAlignedDiskCount = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeNonAlignedDiskTime = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeNonAlignedMemCount = new 
AtomicLong(0);
+  private final AtomicLong pageReadersDecodeNonAlignedMemTime = new 
AtomicLong(0);
+
+  private final AtomicLong nonAlignedTimeSeriesMetadataModificationCount = new 
AtomicLong(0);
+  private final AtomicLong nonAlignedTimeSeriesMetadataModificationTime = new 
AtomicLong(0);
+  private final AtomicLong alignedTimeSeriesMetadataModificationCount = new 
AtomicLong(0);
+  private final AtomicLong alignedTimeSeriesMetadataModificationTime = new 
AtomicLong(0);
+
+  // statistics for count and time of page decode
+  private final AtomicLong pageReaderMaxUsedMemorySize = new AtomicLong(0);
+
+  public AtomicLong getLoadTimeSeriesMetadataDiskSeqCount() {
+    return loadTimeSeriesMetadataDiskSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataDiskUnSeqCount() {
+    return loadTimeSeriesMetadataDiskUnSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataMemSeqCount() {
+    return loadTimeSeriesMetadataMemSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataMemUnSeqCount() {
+    return loadTimeSeriesMetadataMemUnSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedDiskSeqCount() {
+    return loadTimeSeriesMetadataAlignedDiskSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedDiskUnSeqCount() {
+    return loadTimeSeriesMetadataAlignedDiskUnSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedMemSeqCount() {
+    return loadTimeSeriesMetadataAlignedMemSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedMemUnSeqCount() {
+    return loadTimeSeriesMetadataAlignedMemUnSeqCount;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataDiskSeqTime() {
+    return loadTimeSeriesMetadataDiskSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataDiskUnSeqTime() {
+    return loadTimeSeriesMetadataDiskUnSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataMemSeqTime() {
+    return loadTimeSeriesMetadataMemSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataMemUnSeqTime() {
+    return loadTimeSeriesMetadataMemUnSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedDiskSeqTime() {
+    return loadTimeSeriesMetadataAlignedDiskSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedDiskUnSeqTime() {
+    return loadTimeSeriesMetadataAlignedDiskUnSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedMemSeqTime() {
+    return loadTimeSeriesMetadataAlignedMemSeqTime;
+  }
+
+  public AtomicLong getLoadTimeSeriesMetadataAlignedMemUnSeqTime() {
+    return loadTimeSeriesMetadataAlignedMemUnSeqTime;
+  }
+
+  public AtomicLong getConstructNonAlignedChunkReadersDiskCount() {
+    return constructNonAlignedChunkReadersDiskCount;
+  }
+
+  public AtomicLong getConstructNonAlignedChunkReadersMemCount() {
+    return constructNonAlignedChunkReadersMemCount;
+  }
+
+  public AtomicLong getConstructAlignedChunkReadersDiskCount() {
+    return constructAlignedChunkReadersDiskCount;
+  }
+
+  public AtomicLong getConstructAlignedChunkReadersMemCount() {
+    return constructAlignedChunkReadersMemCount;
+  }
+
+  public AtomicLong getConstructNonAlignedChunkReadersDiskTime() {
+    return constructNonAlignedChunkReadersDiskTime;
+  }
+
+  public AtomicLong getConstructNonAlignedChunkReadersMemTime() {
+    return constructNonAlignedChunkReadersMemTime;
+  }
+
+  public AtomicLong getConstructAlignedChunkReadersDiskTime() {
+    return constructAlignedChunkReadersDiskTime;
+  }
+
+  public AtomicLong getConstructAlignedChunkReadersMemTime() {
+    return constructAlignedChunkReadersMemTime;
+  }
+
+  public AtomicLong getPageReadersDecodeAlignedDiskCount() {
+    return pageReadersDecodeAlignedDiskCount;
+  }
+
+  public AtomicLong getPageReadersDecodeAlignedDiskTime() {
+    return pageReadersDecodeAlignedDiskTime;
+  }
+
+  public AtomicLong getPageReadersDecodeAlignedMemCount() {
+    return pageReadersDecodeAlignedMemCount;
+  }
+
+  public AtomicLong getPageReadersDecodeAlignedMemTime() {
+    return pageReadersDecodeAlignedMemTime;
+  }
+
+  public AtomicLong getPageReadersDecodeNonAlignedDiskCount() {
+    return pageReadersDecodeNonAlignedDiskCount;
+  }
+
+  public AtomicLong getPageReadersDecodeNonAlignedDiskTime() {
+    return pageReadersDecodeNonAlignedDiskTime;
+  }
+
+  public AtomicLong getPageReadersDecodeNonAlignedMemCount() {
+    return pageReadersDecodeNonAlignedMemCount;
+  }
+
+  public AtomicLong getPageReadersDecodeNonAlignedMemTime() {
+    return pageReadersDecodeNonAlignedMemTime;
+  }
+
+  public AtomicLong getNonAlignedTimeSeriesMetadataModificationCount() {
+    return nonAlignedTimeSeriesMetadataModificationCount;
+  }
+
+  public AtomicLong getNonAlignedTimeSeriesMetadataModificationTime() {
+    return nonAlignedTimeSeriesMetadataModificationTime;
+  }
+
+  public AtomicLong getAlignedTimeSeriesMetadataModificationCount() {
+    return alignedTimeSeriesMetadataModificationCount;
+  }
+
+  public AtomicLong getAlignedTimeSeriesMetadataModificationTime() {
+    return alignedTimeSeriesMetadataModificationTime;
+  }
+
+  public AtomicLong getPageReaderMaxUsedMemorySize() {
+    return pageReaderMaxUsedMemorySize;
+  }
 
   public TQueryStatistics toThrift() {
     return new TQueryStatistics(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
index b45990a7f21..22f6b7f50aa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
@@ -51,8 +51,6 @@ import java.util.List;
 import java.util.Set;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.TIMESERIES_METADATA_MODIFICATION_ALIGNED;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.TIMESERIES_METADATA_MODIFICATION_NONALIGNED;
 
 public class FileLoaderUtils {
 
@@ -102,10 +100,20 @@ public class FileLoaderUtils {
                     resource.getTimeIndexType() != 1,
                     context.isDebug());
         if (timeSeriesMetadata != null) {
+          long t2 = System.nanoTime();
           List<Modification> pathModifications = 
context.getPathModifications(resource, seriesPath);
           timeSeriesMetadata.setModified(!pathModifications.isEmpty());
           timeSeriesMetadata.setChunkMetadataLoader(
               new DiskChunkMetadataLoader(resource, context, globalTimeFilter, 
pathModifications));
+          long costTime = System.nanoTime() - t2;
+          context
+              .getQueryStatistics()
+              .getNonAlignedTimeSeriesMetadataModificationCount()
+              .getAndAdd(pathModifications.size());
+          context
+              .getQueryStatistics()
+              .getNonAlignedTimeSeriesMetadataModificationTime()
+              .getAndAdd(costTime);
         }
       } else { // if the tsfile is unclosed, we just get it directly from 
TsFileResource
         loadFromMem = true;
@@ -118,18 +126,12 @@ public class FileLoaderUtils {
       }
 
       if (timeSeriesMetadata != null) {
-        long t2 = System.nanoTime();
-        try {
-          if (timeSeriesMetadata.getStatistics().getStartTime()
-              > timeSeriesMetadata.getStatistics().getEndTime()) {
-            return null;
-          }
-          if (globalTimeFilter != null && 
globalTimeFilter.canSkip(timeSeriesMetadata)) {
-            return null;
-          }
-        } finally {
-          SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-              TIMESERIES_METADATA_MODIFICATION_NONALIGNED, System.nanoTime() - 
t2);
+        if (timeSeriesMetadata.getStatistics().getStartTime()
+            > timeSeriesMetadata.getStatistics().getEndTime()) {
+          return null;
+        }
+        if (globalTimeFilter != null && 
globalTimeFilter.canSkip(timeSeriesMetadata)) {
+          return null;
         }
       }
       return timeSeriesMetadata;
@@ -137,19 +139,19 @@ public class FileLoaderUtils {
       long costTime = System.nanoTime() - t1;
       if (loadFromMem) {
         if (isSeq) {
-          
context.getQueryStatistics().loadTimeSeriesMetadataMemSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataMemSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataMemSeqCount().getAndAdd(1);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataMemSeqTime().getAndAdd(costTime);
         } else {
-          
context.getQueryStatistics().loadTimeSeriesMetadataMemUnSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataMemUnSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataMemUnSeqCount().getAndAdd(1);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataMemUnSeqTime().getAndAdd(costTime);
         }
       } else {
         if (isSeq) {
-          
context.getQueryStatistics().loadTimeSeriesMetadataDiskSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataDiskSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqCount().getAndAdd(1);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqTime().getAndAdd(costTime);
         } else {
-          
context.getQueryStatistics().loadTimeSeriesMetadataDiskUnSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataDiskUnSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataDiskUnSeqCount().getAndAdd(1);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataDiskUnSeqTime().getAndAdd(costTime);
         }
       }
     }
@@ -190,18 +192,12 @@ public class FileLoaderUtils {
       }
 
       if (alignedTimeSeriesMetadata != null) {
-        final long t2 = System.nanoTime();
-        try {
-          if 
(alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime()
-              > 
alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime()) 
{
-            return null;
-          }
-          if (globalTimeFilter != null && 
globalTimeFilter.canSkip(alignedTimeSeriesMetadata)) {
-            return null;
-          }
-        } finally {
-          SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-              TIMESERIES_METADATA_MODIFICATION_ALIGNED, System.nanoTime() - 
t2);
+        if 
(alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime()
+            > 
alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime()) 
{
+          return null;
+        }
+        if (globalTimeFilter != null && 
globalTimeFilter.canSkip(alignedTimeSeriesMetadata)) {
+          return null;
         }
       }
       return alignedTimeSeriesMetadata;
@@ -209,24 +205,33 @@ public class FileLoaderUtils {
       long costTime = System.nanoTime() - t1;
       if (loadFromMem) {
         if (isSeq) {
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedMemSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedMemSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemSeqCount().getAndAdd(1);
+          context
+              .getQueryStatistics()
+              .getLoadTimeSeriesMetadataAlignedMemSeqTime()
+              .getAndAdd(costTime);
         } else {
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedMemUnSeqCount.getAndAdd(1);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemUnSeqCount().getAndAdd(1);
           context
               .getQueryStatistics()
-              .loadTimeSeriesMetadataAlignedMemUnSeqTime
+              .getLoadTimeSeriesMetadataAlignedMemUnSeqTime()
               .getAndAdd(costTime);
         }
       } else {
         if (isSeq) {
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedDiskSeqCount.getAndAdd(1);
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedDiskSeqTime.getAndAdd(costTime);
+          
context.getQueryStatistics().getLoadTimeSeriesMetadataAlignedDiskSeqCount().getAndAdd(1);
+          context
+              .getQueryStatistics()
+              .getLoadTimeSeriesMetadataAlignedDiskSeqTime()
+              .getAndAdd(costTime);
         } else {
-          
context.getQueryStatistics().loadTimeSeriesMetadataAlignedDiskUnSeqCount.getAndAdd(1);
           context
               .getQueryStatistics()
-              .loadTimeSeriesMetadataAlignedDiskUnSeqTime
+              .getLoadTimeSeriesMetadataAlignedDiskUnSeqCount()
+              .getAndAdd(1);
+          context
+              .getQueryStatistics()
+              .getLoadTimeSeriesMetadataAlignedDiskUnSeqTime()
               .getAndAdd(costTime);
         }
       }
@@ -306,6 +311,7 @@ public class FileLoaderUtils {
       AlignedTimeSeriesMetadata alignedTimeSeriesMetadata,
       AlignedPath alignedPath,
       QueryContext context) {
+    long startTime = System.nanoTime();
     List<TimeseriesMetadata> valueTimeSeriesMetadataList =
         alignedTimeSeriesMetadata.getValueTimeseriesMetadataList();
     List<List<Modification>> res = new ArrayList<>();
@@ -317,11 +323,17 @@ public class FileLoaderUtils {
         
valueTimeSeriesMetadataList.get(i).setModified(!pathModifications.isEmpty());
         res.add(pathModifications);
         modified = (modified || !pathModifications.isEmpty());
+        context
+            .getQueryStatistics()
+            .getAlignedTimeSeriesMetadataModificationCount()
+            .getAndAdd(pathModifications.size());
       } else {
         res.add(Collections.emptyList());
       }
     }
     alignedTimeSeriesMetadata.getTimeseriesMetadata().setModified(modified);
+    long costTime = System.nanoTime() - startTime;
+    
context.getQueryStatistics().getAlignedTimeSeriesMetadataModificationTime().getAndAdd(costTime);
     return res;
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
index 66c833401a8..2c687dcc1a5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
@@ -811,7 +811,7 @@ public class SeriesScanUtil implements Accountable {
                     
orderUtils.getOverlapCheckTime(firstPageReader.getStatistics()));
                 context
                     .getQueryStatistics()
-                    .pageReaderMaxUsedMemorySize
+                    .getPageReaderMaxUsedMemorySize()
                     .updateAndGet(v -> Math.max(v, 
mergeReader.getUsedMemorySize()));
                 currentPageEndPointTime =
                     updateEndPointTime(currentPageEndPointTime, 
firstPageReader);
@@ -839,7 +839,7 @@ public class SeriesScanUtil implements Accountable {
                     
orderUtils.getOverlapCheckTime(pageReader.getStatistics()));
                 context
                     .getQueryStatistics()
-                    .pageReaderMaxUsedMemorySize
+                    .getPageReaderMaxUsedMemorySize()
                     .updateAndGet(v -> Math.max(v, 
mergeReader.getUsedMemorySize()));
                 currentPageEndPointTime = 
updateEndPointTime(currentPageEndPointTime, pageReader);
               }
@@ -1019,7 +1019,7 @@ public class SeriesScanUtil implements Accountable {
         orderUtils.getOverlapCheckTime(pageReader.getStatistics()));
     context
         .getQueryStatistics()
-        .pageReaderMaxUsedMemorySize
+        .getPageReaderMaxUsedMemorySize()
         .updateAndGet(v -> Math.max(v, mergeReader.getUsedMemorySize()));
   }
 
@@ -1233,19 +1233,19 @@ public class SeriesScanUtil implements Accountable {
         long time = System.nanoTime() - startTime;
         if (isAligned) {
           if (isMem) {
-            
context.getQueryStatistics().pageReadersDecodeAlignedMemCount.getAndAdd(1);
-            
context.getQueryStatistics().pageReadersDecodeAlignedMemTime.getAndAdd(time);
+            
context.getQueryStatistics().getPageReadersDecodeAlignedMemCount().getAndAdd(1);
+            
context.getQueryStatistics().getPageReadersDecodeAlignedMemTime().getAndAdd(time);
           } else {
-            
context.getQueryStatistics().pageReadersDecodeAlignedDiskCount.getAndAdd(1);
-            
context.getQueryStatistics().pageReadersDecodeAlignedDiskTime.getAndAdd(time);
+            
context.getQueryStatistics().getPageReadersDecodeAlignedDiskCount().getAndAdd(1);
+            
context.getQueryStatistics().getPageReadersDecodeAlignedDiskTime().getAndAdd(time);
           }
         } else {
           if (isMem) {
-            
context.getQueryStatistics().pageReadersDecodeNonAlignedMemCount.getAndAdd(1);
-            
context.getQueryStatistics().pageReadersDecodeNonAlignedMemTime.getAndAdd(time);
+            
context.getQueryStatistics().getPageReadersDecodeNonAlignedMemCount().getAndAdd(1);
+            
context.getQueryStatistics().getPageReadersDecodeNonAlignedMemTime().getAndAdd(time);
           } else {
-            
context.getQueryStatistics().pageReadersDecodeNonAlignedDiskCount.getAndAdd(1);
-            
context.getQueryStatistics().pageReadersDecodeNonAlignedDiskTime.getAndAdd(time);
+            
context.getQueryStatistics().getPageReadersDecodeNonAlignedDiskCount().getAndAdd(1);
+            
context.getQueryStatistics().getPageReadersDecodeNonAlignedDiskTime().getAndAdd(time);
           }
         }
       }
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 d6232f4c4c6..a50381a75b3 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
@@ -377,16 +377,51 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
   // read timeseries metadata aligned
   
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String TIMESERIES_METADATA_MODIFICATION = 
"timeseries_metadata_modification";
+  private static final String HISTOGRAM_TIMESERIES_METADATA_MODIFICATION =
+      "histogram_timeseries_metadata_modification";
   public static final String TIMESERIES_METADATA_MODIFICATION_ALIGNED =
       TIMESERIES_METADATA_MODIFICATION + "_" + ALIGNED;
   public static final String TIMESERIES_METADATA_MODIFICATION_NONALIGNED =
       TIMESERIES_METADATA_MODIFICATION + "_" + NON_ALIGNED;
+  private Histogram timeseriesMetadataModificationAlignedHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Histogram timeseriesMetadataModificationNonAlignedHistogram =
+      DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Timer timeseriesMetadataModificationAlignedTimer =
       DoNothingMetricManager.DO_NOTHING_TIMER;
   private Timer timeseriesMetadataModificationNonAlignedTimer =
       DoNothingMetricManager.DO_NOTHING_TIMER;
 
+  public void recordTimeSeriesMetadataModification(
+      long alignedCount, long nonAlignedCount, long alignedTime, long 
nonAlignedTime) {
+    timeseriesMetadataModificationAlignedHistogram.update(alignedCount);
+    timeseriesMetadataModificationNonAlignedHistogram.update(nonAlignedCount);
+    timeseriesMetadataModificationAlignedTimer.updateNanos(alignedTime);
+    timeseriesMetadataModificationNonAlignedTimer.updateNanos(nonAlignedTime);
+  }
+
   private void bindTimeseriesMetadataModification(AbstractMetricService 
metricService) {
+    timeseriesMetadataModificationAlignedHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            HISTOGRAM_TIMESERIES_METADATA_MODIFICATION,
+            Tag.TYPE.toString(),
+            ALIGNED,
+            Tag.FROM.toString(),
+            NULL);
+    timeseriesMetadataModificationNonAlignedHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            HISTOGRAM_TIMESERIES_METADATA_MODIFICATION,
+            Tag.TYPE.toString(),
+            NON_ALIGNED,
+            Tag.FROM.toString(),
+            NULL);
+
     timeseriesMetadataModificationAlignedTimer =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
@@ -410,6 +445,8 @@ public class SeriesScanCostMetricSet implements IMetricSet {
   }
 
   private void unbindTimeseriesMetadataModification(AbstractMetricService 
metricService) {
+    timeseriesMetadataModificationAlignedHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    timeseriesMetadataModificationNonAlignedHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     timeseriesMetadataModificationAlignedTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
     timeseriesMetadataModificationNonAlignedTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
     Arrays.asList(ALIGNED, NON_ALIGNED)
@@ -424,6 +461,18 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
                     type,
                     Tag.FROM.toString(),
                     NULL));
+    Arrays.asList(ALIGNED, NON_ALIGNED)
+        .forEach(
+            type ->
+                metricService.remove(
+                    MetricType.HISTOGRAM,
+                    Metric.SERIES_SCAN_COST.toString(),
+                    Tag.STAGE.toString(),
+                    HISTOGRAM_TIMESERIES_METADATA_MODIFICATION,
+                    Tag.TYPE.toString(),
+                    type,
+                    Tag.FROM.toString(),
+                    NULL));
   }
 
   
/////////////////////////////////////////////////////////////////////////////////////////////////
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
index 7340204bea6..c69dc59607d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
@@ -109,8 +109,8 @@ public class DiskAlignedChunkLoader implements IChunkLoader 
{
       return chunkReader;
     } finally {
       long time = System.nanoTime() - t1;
-      
context.getQueryStatistics().constructAlignedChunkReadersDiskCount.getAndAdd(1);
-      
context.getQueryStatistics().constructAlignedChunkReadersDiskTime.getAndAdd(time);
+      
context.getQueryStatistics().getConstructAlignedChunkReadersDiskCount().getAndAdd(1);
+      
context.getQueryStatistics().getConstructAlignedChunkReadersDiskTime().getAndAdd(time);
     }
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
index cc702414bf4..38cc7215d21 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
@@ -95,8 +95,8 @@ public class DiskChunkLoader implements IChunkLoader {
       return chunkReader;
     } finally {
       long time = System.nanoTime() - t1;
-      
context.getQueryStatistics().constructNonAlignedChunkReadersDiskCount.getAndAdd(1);
-      
context.getQueryStatistics().constructNonAlignedChunkReadersDiskTime.getAndAdd(time);
+      
context.getQueryStatistics().getConstructNonAlignedChunkReadersDiskCount().getAndAdd(1);
+      
context.getQueryStatistics().getConstructNonAlignedChunkReadersDiskTime().getAndAdd(time);
     }
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
index 6b25deaeb31..c9c92bc7398 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
@@ -62,8 +62,8 @@ public class MemAlignedChunkLoader implements IChunkLoader {
       return new MemAlignedChunkReader(chunk, globalTimeFilter);
     } finally {
       long duration = System.nanoTime() - startTime;
-      
context.getQueryStatistics().constructAlignedChunkReadersMemCount.getAndAdd(1);
-      
context.getQueryStatistics().constructAlignedChunkReadersMemTime.getAndAdd(duration);
+      
context.getQueryStatistics().getConstructAlignedChunkReadersMemCount().getAndAdd(1);
+      
context.getQueryStatistics().getConstructAlignedChunkReadersMemTime().getAndAdd(duration);
       
SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(INIT_CHUNK_READER_ALIGNED_MEM, 
duration);
     }
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
index 56a4ec4e81e..7683b38a23f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
@@ -62,8 +62,8 @@ public class MemChunkLoader implements IChunkLoader {
       return new MemChunkReader(chunk, globalTimeFilter);
     } finally {
       long duration = System.nanoTime() - startTime;
-      
context.getQueryStatistics().constructNonAlignedChunkReadersMemCount.getAndAdd(1);
-      
context.getQueryStatistics().constructNonAlignedChunkReadersMemTime.getAndAdd(duration);
+      
context.getQueryStatistics().getConstructNonAlignedChunkReadersMemCount().getAndAdd(1);
+      
context.getQueryStatistics().getConstructNonAlignedChunkReadersMemTime().getAndAdd(duration);
       
SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(INIT_CHUNK_READER_NONALIGNED_MEM,
 duration);
     }
   }


Reply via email to