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

caogaofei pushed a commit to branch beyyes/query_metrics
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 5ccb7c7a8dbe27863c312617e33efa7ee410acc8
Author: Beyyes <[email protected]>
AuthorDate: Thu Dec 14 12:33:12 2023 +0800

    tmp
---
 .../confignode1conf/iotdb-common.properties        |   4 +-
 .../fragment/FragmentInstanceContext.java          |  21 ++
 .../fragment/FragmentInstanceManager.java          |   3 +
 .../execution/fragment/QueryContext.java           |  18 +
 .../operator/source/AlignedSeriesScanUtil.java     |   5 +-
 .../execution/operator/source/SeriesScanUtil.java  |  11 +-
 .../metric/QueryRelatedResourceMetricSet.java      |  64 +++-
 .../metric/SeriesScanCostMetricSet.java            | 368 ++++++++++++---------
 .../db/service/metrics/CompactionMetrics.java      |   2 +-
 .../db/service/metrics/DataNodeMetricsHelper.java  |   2 +-
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |  57 +++-
 .../datanode1conf/iotdb-datanode.properties        |   2 +-
 .../datanode2conf/iotdb-datanode.properties        |   2 +-
 .../iotdb/commons/service/metric/enums/Metric.java |   1 +
 14 files changed, 368 insertions(+), 192 deletions(-)

diff --git 
a/iotdb-core/confignode/src/test/resources/confignode1conf/iotdb-common.properties
 
b/iotdb-core/confignode/src/test/resources/confignode1conf/iotdb-common.properties
index 8981b21285b..0ad328914e3 100644
--- 
a/iotdb-core/confignode/src/test/resources/confignode1conf/iotdb-common.properties
+++ 
b/iotdb-core/confignode/src/test/resources/confignode1conf/iotdb-common.properties
@@ -20,8 +20,8 @@
 timestamp_precision=ms
 
data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
 
schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
-schema_replication_factor=3
-data_replication_factor=3
+schema_replication_factor=1
+data_replication_factor=1
 udf_lib_dir=target/confignode1/ext/udf
 trigger_lib_dir=target/confignode1/ext/trigger
 pipe_lib_dir=target/confignode1/ext/pipe
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 195986aae3f..525cbb297c5 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
@@ -25,6 +25,8 @@ import 
org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.common.FragmentInstanceId;
 import org.apache.iotdb.db.queryengine.common.QueryId;
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
+import org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet;
+import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.queryengine.plan.analyze.PredicateUtils;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.storageengine.dataregion.IDataRegionForQuery;
@@ -49,6 +51,8 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
+import static 
org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet.QUERY_FRAGMENT_EXECUTION_TIME;
+
 public class FragmentInstanceContext extends QueryContext {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(FragmentInstanceContext.class);
@@ -450,6 +454,23 @@ public class FragmentInstanceContext extends QueryContext {
     sourcePaths = null;
     sharedQueryDataSource = null;
     releaseDataNodeQueryContext();
+
+    // record fragment instance execution time and metadata get time to metrics
+    long durationTime = System.currentTimeMillis() - executionStartTime.get();
+    QueryRelatedResourceMetricSet.getInstance()
+        .recordExecutionTimeCost(QUERY_FRAGMENT_EXECUTION_TIME, durationTime);
+    SeriesScanCostMetricSet.getInstance()
+        .recordNonAlignedSeriesExecutionTime(
+            loadTimeSeriesMetadataDiskSeqTime.get(),
+            loadTimeSeriesMetadataDiskUnSeqTime.get(),
+            loadTimeSeriesMetadataMemSeqTime.get(),
+            loadTimeSeriesMetadataMemUnSeqTime.get());
+    SeriesScanCostMetricSet.getInstance()
+        .recordAlignedSeriesExecutionTime(
+            loadTimeSeriesMetadataAlignedDiskSeqTime.get(),
+            loadTimeSeriesMetadataAlignedDiskUnSeqTime.get(),
+            loadTimeSeriesMetadataAlignedMemSeqTime.get(),
+            loadTimeSeriesMetadataAlignedMemUnSeqTime.get());
   }
 
   private void releaseDataNodeQueryContext() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
index 945a59d3894..54cd72c41b1 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
@@ -32,6 +32,7 @@ import 
org.apache.iotdb.db.queryengine.execution.exchange.sink.ISink;
 import org.apache.iotdb.db.queryengine.execution.schedule.DriverScheduler;
 import org.apache.iotdb.db.queryengine.execution.schedule.IDriverScheduler;
 import org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet;
+import org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet;
 import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner;
 import org.apache.iotdb.db.queryengine.plan.planner.PipelineDriverFactory;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.FragmentInstance;
@@ -204,6 +205,8 @@ public class FragmentInstanceManager {
         return createFailedInstanceInfo(instanceId);
       }
     } finally {
+      QueryRelatedResourceMetricSet.getInstance()
+          .updateFragmentInstance(instanceContext.size(), 
instanceExecution.size());
       QUERY_EXECUTION_METRIC_SET.recordExecutionCost(
           LOCAL_EXECUTION_PLANNER, System.nanoTime() - startTime);
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
index b22f2b5f3cc..c91d81a8efb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
@@ -37,9 +37,27 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
 
 /** QueryContext contains the shared information with in a query. */
 public class QueryContext {
+  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);
 
   /**
    * The key is the path of a ModificationFile and the value is all 
Modifications in this file. We
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
index f37fe7c23f0..98007f50c07 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
@@ -142,10 +142,11 @@ public class AlignedSeriesScanUtil extends SeriesScanUtil 
{
       PartialPath seriesPath,
       QueryContext context,
       Filter filter,
-      Set<String> allSensors)
+      Set<String> allSensors,
+      boolean isSeq)
       throws IOException {
     return FileLoaderUtils.loadTimeSeriesMetadata(
-        resource, (AlignedPath) seriesPath, context, filter, queryAllSensors);
+        resource, (AlignedPath) seriesPath, context, filter, queryAllSensors, 
isSeq);
   }
 
   @Override
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 4d7f65947d3..ba84d821bdf 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
@@ -1088,7 +1088,8 @@ public class SeriesScanUtil {
             seriesPath,
             context,
             getGlobalTimeFilter(),
-            scanOptions.getAllSensors());
+            scanOptions.getAllSensors(),
+            true);
     if (timeseriesMetadata != null) {
       timeseriesMetadata.setSeq(true);
       seqTimeSeriesMetadata.add(timeseriesMetadata);
@@ -1102,7 +1103,8 @@ public class SeriesScanUtil {
             seriesPath,
             context,
             getGlobalTimeFilter(),
-            scanOptions.getAllSensors());
+            scanOptions.getAllSensors(),
+            false);
     if (timeseriesMetadata != null) {
       timeseriesMetadata.setModified(true);
       timeseriesMetadata.setSeq(false);
@@ -1115,10 +1117,11 @@ public class SeriesScanUtil {
       PartialPath seriesPath,
       QueryContext context,
       Filter filter,
-      Set<String> allSensors)
+      Set<String> allSensors,
+      boolean isSeq)
       throws IOException {
     return FileLoaderUtils.loadTimeSeriesMetadata(
-        resource, seriesPath, context, filter, allSensors);
+        resource, seriesPath, context, filter, allSensors, isSeq);
   }
 
   protected List<TSDataType> getTsDataTypeList() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
index 93626b06290..9f63480fc54 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
@@ -30,6 +30,7 @@ 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.Gauge;
+import org.apache.iotdb.metrics.type.Timer;
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.MetricType;
 
@@ -43,12 +44,16 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
     // empty constructor
   }
 
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   // Coordinator
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final Coordinator coordinator = Coordinator.getInstance();
   private static final String METRIC_COORDINATOR = 
Metric.COORDINATOR.toString();
   private static final String QUERY_EXECUTION_MAP_SIZE = 
"query_execution_map_size";
 
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   // FragmentInstanceManager
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final FragmentInstanceManager fragmentInstanceManager =
       FragmentInstanceManager.getInstance();
   private static final String FRAGMENT_INSTANCE_MANAGER =
@@ -56,7 +61,9 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
   private static final String INSTANCE_CONTEXT_SIZE = "instance_context_size";
   private static final String INSTANCE_EXECUTION_SIZE = 
"instance_execution_size";
 
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   // MemoryPool
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final MemoryPool memoryPool =
       MPPDataExchangeService.getInstance()
           .getMPPDataExchangeManager()
@@ -68,15 +75,30 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
   private static final String QUERY_MEMORY_RESERVATION_SIZE = 
"query_memory_reservation_size";
   private static final String MEMORY_RESERVATION_SIZE = 
"memory_reservation_size";
 
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   // LocalExecutionPlanner
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final LocalExecutionPlanner localExecutionPlanner =
       LocalExecutionPlanner.getInstance();
   private static final String LOCAL_EXECUTION_PLANNER = 
Metric.LOCAL_EXECUTION_PLANNER.toString();
   private static final String FREE_MEMORY_FOR_OPERATORS = 
"free_memory_for_operators";
 
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   // FragmentInstanceStatistics
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   public static final String QUERY_FRAGMENT_INSTANCE_COUNT = 
"query_fragment_instance_count";
+  public static final String QUERY_FRAGMENT_EXECUTION_TIME =
+      "query_fragment_instance_execution_time";
+  private Gauge fragmentInstanceContextSizeGauge = 
DoNothingMetricManager.DO_NOTHING_GAUGE;
+  private Gauge fragmentInstanceExecutionSizeGauge = 
DoNothingMetricManager.DO_NOTHING_GAUGE;
   private Gauge fragmentInstanceCountGauge = 
DoNothingMetricManager.DO_NOTHING_GAUGE;
+  private Timer fragmentInstanceExecutionTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+
+  public void updateFragmentInstance(
+      long fragmentInstanceContextSize, long fragmentInstanceExecutionSize) {
+    fragmentInstanceContextSizeGauge.set(fragmentInstanceContextSize);
+    fragmentInstanceExecutionSizeGauge.set(fragmentInstanceExecutionSize);
+  }
 
   public void recordExecutionCount(String stage, long count) {
     switch (stage) {
@@ -88,6 +110,16 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
     }
   }
 
+  public void recordExecutionTimeCost(String type, long cost) {
+    switch (type) {
+      case QUERY_FRAGMENT_EXECUTION_TIME:
+        fragmentInstanceExecutionTimer.updateMillis(cost);
+        break;
+      default:
+        break;
+    }
+  }
+
   @Override
   public void bindTo(AbstractMetricService metricService) {
     // Coordinator
@@ -100,20 +132,18 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
         QUERY_EXECUTION_MAP_SIZE);
 
     // FragmentInstanceManager
-    metricService.createAutoGauge(
-        FRAGMENT_INSTANCE_MANAGER,
-        MetricLevel.IMPORTANT,
-        fragmentInstanceManager,
-        FragmentInstanceManager::getInstanceContextSize,
-        Tag.NAME.toString(),
-        INSTANCE_CONTEXT_SIZE);
-    metricService.createAutoGauge(
-        FRAGMENT_INSTANCE_MANAGER,
-        MetricLevel.IMPORTANT,
-        fragmentInstanceManager,
-        FragmentInstanceManager::getInstanceExecutionSize,
-        Tag.NAME.toString(),
-        INSTANCE_EXECUTION_SIZE);
+    fragmentInstanceContextSizeGauge =
+        metricService.getOrCreateGauge(
+            FRAGMENT_INSTANCE_MANAGER,
+            MetricLevel.IMPORTANT,
+            Tag.NAME.toString(),
+            INSTANCE_CONTEXT_SIZE);
+    fragmentInstanceExecutionSizeGauge =
+        metricService.getOrCreateGauge(
+            FRAGMENT_INSTANCE_MANAGER,
+            MetricLevel.IMPORTANT,
+            Tag.NAME.toString(),
+            INSTANCE_EXECUTION_SIZE);
 
     // MemoryPool
     metricService
@@ -157,6 +187,12 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
             MetricLevel.IMPORTANT,
             Tag.NAME.toString(),
             QUERY_FRAGMENT_INSTANCE_COUNT);
+    fragmentInstanceExecutionTimer =
+        metricService.getOrCreateTimer(
+            Metric.FRAGMENT_INSTANCE_STATISTICS.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            QUERY_FRAGMENT_EXECUTION_TIME);
   }
 
   @Override
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 dffdef2e5f3..7ac0667867b 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
@@ -28,101 +28,179 @@ import org.apache.iotdb.metrics.type.Timer;
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.MetricType;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.Arrays;
 
 public class SeriesScanCostMetricSet implements IMetricSet {
-  private static final SeriesScanCostMetricSet INSTANCE = new 
SeriesScanCostMetricSet();
 
-  private SeriesScanCostMetricSet() {
-    // empty constructor
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(SeriesScanCostMetricSet.class);
+
+  public static SeriesScanCostMetricSet getInstance() {
+    return INSTANCE;
+  }
+
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // load timeseries metadata
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  public static final String LOAD_TIMESERIES_METADATA = 
"load_timeseries_metadata";
+  public static final String LOAD_ALIGNED_TIMESERIES_METADATA = 
"load_aligned_timeseries_metadata";
+  public static final String ALIGNED = "aligned";
+  public static final String NON_ALIGNED = "non_aligned";
+  public static final String MEM = "mem";
+  public static final String DISK = "disk";
+  public static final String SEQUENCE = "sequence";
+  public static final String UNSEQUENCE = "unsequence";
+
+  public Timer loadTimeSeriesMetadataDiskSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  public Timer loadTimeSeriesMetadataDiskUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  public Timer loadTimeSeriesMetadataMemSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  public 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;
+
+  public void recordNonAlignedSeriesExecutionTime(long t1, long t2, long t3, 
long t4) {
+    loadTimeSeriesMetadataDiskSeqTime.updateNanos(t1);
+    loadTimeSeriesMetadataDiskUnSeqTime.updateNanos(t2);
+    loadTimeSeriesMetadataMemSeqTime.updateNanos(t3);
+    loadTimeSeriesMetadataMemUnSeqTime.updateNanos(t4);
   }
 
-  // region load timeseries metadata
-  private static final String LOAD_TIMESERIES_METADATA = 
"load_timeseries_metadata";
-  private static final String ALIGNED = "aligned";
-  private static final String NON_ALIGNED = "non_aligned";
-  private static final String MEM = "mem";
-  private static final String DISK = "disk";
-  public static final String LOAD_TIMESERIES_METADATA_ALIGNED_MEM =
-      LOAD_TIMESERIES_METADATA + "_" + ALIGNED + "_" + MEM;
-  public static final String LOAD_TIMESERIES_METADATA_ALIGNED_DISK =
-      LOAD_TIMESERIES_METADATA + "_" + ALIGNED + "_" + DISK;
-  public static final String LOAD_TIMESERIES_METADATA_NONALIGNED_MEM =
-      LOAD_TIMESERIES_METADATA + "_" + NON_ALIGNED + "_" + MEM;
-  public static final String LOAD_TIMESERIES_METADATA_NONALIGNED_DISK =
-      LOAD_TIMESERIES_METADATA + "_" + NON_ALIGNED + "_" + DISK;
-  private Timer loadTimeseriesMetadataAlignedMemTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  private Timer loadTimeseriesMetadataAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  private Timer loadTimeseriesMetadataNonAlignedMemTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-  private Timer loadTimeseriesMetadataNonAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+  public void recordAlignedSeriesExecutionTime(long t1, long t2, long t3, long 
t4) {
+    loadTimeSeriesMetadataAlignedDiskSeqTime.updateNanos(t1);
+    loadTimeSeriesMetadataAlignedDiskUnSeqTime.updateNanos(t2);
+    loadTimeSeriesMetadataAlignedMemSeqTime.updateNanos(t3);
+    loadTimeSeriesMetadataAlignedMemUnSeqTime.updateNanos(t4);
+  }
 
   private void bindTimeseriesMetadata(AbstractMetricService metricService) {
-    loadTimeseriesMetadataAlignedMemTimer =
+    loadTimeSeriesMetadataDiskSeqTime =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
             LOAD_TIMESERIES_METADATA,
             Tag.TYPE.toString(),
-            ALIGNED,
+            SEQUENCE,
             Tag.FROM.toString(),
-            MEM);
-    loadTimeseriesMetadataAlignedDiskTimer =
+            DISK);
+    loadTimeSeriesMetadataDiskUnSeqTime =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
             LOAD_TIMESERIES_METADATA,
             Tag.TYPE.toString(),
-            ALIGNED,
+            UNSEQUENCE,
             Tag.FROM.toString(),
             DISK);
-    loadTimeseriesMetadataNonAlignedMemTimer =
+    loadTimeSeriesMetadataMemSeqTime =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
             LOAD_TIMESERIES_METADATA,
             Tag.TYPE.toString(),
-            NON_ALIGNED,
+            SEQUENCE,
             Tag.FROM.toString(),
             MEM);
-    loadTimeseriesMetadataNonAlignedDiskTimer =
+    loadTimeSeriesMetadataMemUnSeqTime =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
             LOAD_TIMESERIES_METADATA,
             Tag.TYPE.toString(),
-            NON_ALIGNED,
+            UNSEQUENCE,
+            Tag.FROM.toString(),
+            MEM);
+  }
+
+  private void bindAlignedTimeseriesMetadata(AbstractMetricService 
metricService) {
+    loadTimeSeriesMetadataAlignedDiskSeqTime =
+        metricService.getOrCreateTimer(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            LOAD_ALIGNED_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            SEQUENCE,
+            Tag.FROM.toString(),
+            DISK);
+    loadTimeSeriesMetadataAlignedDiskUnSeqTime =
+        metricService.getOrCreateTimer(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            LOAD_ALIGNED_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            UNSEQUENCE,
             Tag.FROM.toString(),
             DISK);
+    loadTimeSeriesMetadataAlignedMemSeqTime =
+        metricService.getOrCreateTimer(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            LOAD_ALIGNED_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            SEQUENCE,
+            Tag.FROM.toString(),
+            MEM);
+    loadTimeSeriesMetadataAlignedMemUnSeqTime =
+        metricService.getOrCreateTimer(
+            Metric.SERIES_SCAN_COST.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.STAGE.toString(),
+            LOAD_ALIGNED_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            UNSEQUENCE,
+            Tag.FROM.toString(),
+            MEM);
   }
 
   private void unbindTimeseriesMetadata(AbstractMetricService metricService) {
-    loadTimeseriesMetadataAlignedMemTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-    loadTimeseriesMetadataAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-    loadTimeseriesMetadataNonAlignedMemTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-    loadTimeseriesMetadataNonAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
-    Arrays.asList(ALIGNED, NON_ALIGNED)
-        .forEach(
-            type ->
-                Arrays.asList(MEM, DISK)
-                    .forEach(
-                        from ->
-                            metricService.remove(
-                                MetricType.TIMER,
-                                Metric.SERIES_SCAN_COST.toString(),
-                                Tag.STAGE.toString(),
-                                LOAD_TIMESERIES_METADATA,
-                                Tag.TYPE.toString(),
-                                type,
-                                Tag.FROM.toString(),
-                                from)));
+    loadTimeSeriesMetadataDiskSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataDiskUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataMemSeqTime = DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataMemUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataAlignedDiskSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataAlignedDiskUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataAlignedMemSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+    loadTimeSeriesMetadataAlignedMemUnSeqTime = 
DoNothingMetricManager.DO_NOTHING_TIMER;
+
+    for (String type : Arrays.asList(ALIGNED, NON_ALIGNED)) {
+      for (String from : Arrays.asList(MEM, DISK)) {
+        metricService.remove(
+            MetricType.TIMER,
+            Metric.SERIES_SCAN_COST.toString(),
+            Tag.STAGE.toString(),
+            LOAD_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            type,
+            Tag.FROM.toString(),
+            from);
+
+        metricService.remove(
+            MetricType.TIMER,
+            Metric.SERIES_SCAN_COST.toString(),
+            Tag.STAGE.toString(),
+            LOAD_ALIGNED_TIMESERIES_METADATA,
+            Tag.TYPE.toString(),
+            type,
+            Tag.FROM.toString(),
+            from);
+      }
+    }
   }
-  // endregion
 
-  // region read timeseries metadata
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // read timeseries metadata
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String READ_TIMESERIES_METADATA = 
"read_timeseries_metadata";
   private static final String CACHE = "cache";
   private static final String FILE = "file";
@@ -161,21 +239,21 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     readTimeseriesMetadataFileTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
     Arrays.asList(CACHE, FILE)
         .forEach(
-            from -> {
-              metricService.remove(
-                  MetricType.TIMER,
-                  Metric.SERIES_SCAN_COST.toString(),
-                  Tag.STAGE.toString(),
-                  READ_TIMESERIES_METADATA,
-                  Tag.TYPE.toString(),
-                  NULL,
-                  Tag.FROM.toString(),
-                  from);
-            });
+            from ->
+                metricService.remove(
+                    MetricType.TIMER,
+                    Metric.SERIES_SCAN_COST.toString(),
+                    Tag.STAGE.toString(),
+                    READ_TIMESERIES_METADATA,
+                    Tag.TYPE.toString(),
+                    NULL,
+                    Tag.FROM.toString(),
+                    from));
   }
-  // endregion
 
-  // region read timeseries metadata aligned
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // read timeseries metadata aligned
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String TIMESERIES_METADATA_MODIFICATION = 
"timeseries_metadata_modification";
   public static final String TIMESERIES_METADATA_MODIFICATION_ALIGNED =
       TIMESERIES_METADATA_MODIFICATION + "_" + ALIGNED;
@@ -214,21 +292,21 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     timeseriesMetadataModificationNonAlignedTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
     Arrays.asList(ALIGNED, NON_ALIGNED)
         .forEach(
-            type -> {
-              metricService.remove(
-                  MetricType.TIMER,
-                  Metric.SERIES_SCAN_COST.toString(),
-                  Tag.STAGE.toString(),
-                  TIMESERIES_METADATA_MODIFICATION,
-                  Tag.TYPE.toString(),
-                  type,
-                  Tag.FROM.toString(),
-                  NULL);
-            });
+            type ->
+                metricService.remove(
+                    MetricType.TIMER,
+                    Metric.SERIES_SCAN_COST.toString(),
+                    Tag.STAGE.toString(),
+                    TIMESERIES_METADATA_MODIFICATION,
+                    Tag.TYPE.toString(),
+                    type,
+                    Tag.FROM.toString(),
+                    NULL));
   }
-  // endregion
 
-  // region load chunk metadata list
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // load chunk metadata list
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String LOAD_CHUNK_METADATA_LIST = 
"load_chunk_metadata_list";
   public static final String LOAD_CHUNK_METADATA_LIST_ALIGNED_MEM =
       LOAD_CHUNK_METADATA_LIST + "_" + ALIGNED + "_" + MEM;
@@ -293,26 +371,24 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     loadChunkMetadataListNonAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
     Arrays.asList(ALIGNED, NON_ALIGNED)
         .forEach(
-            type -> {
-              Arrays.asList(MEM, DISK)
-                  .forEach(
-                      from -> {
-                        metricService.remove(
-                            MetricType.TIMER,
-                            Metric.SERIES_SCAN_COST.toString(),
-                            Tag.STAGE.toString(),
-                            LOAD_CHUNK_METADATA_LIST,
-                            Tag.TYPE.toString(),
-                            type,
-                            Tag.FROM.toString(),
-                            from);
-                      });
-            });
+            type ->
+                Arrays.asList(MEM, DISK)
+                    .forEach(
+                        from ->
+                            metricService.remove(
+                                MetricType.TIMER,
+                                Metric.SERIES_SCAN_COST.toString(),
+                                Tag.STAGE.toString(),
+                                LOAD_CHUNK_METADATA_LIST,
+                                Tag.TYPE.toString(),
+                                type,
+                                Tag.FROM.toString(),
+                                from)));
   }
 
-  // endregion
-
-  // region chunk metadata modification
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // chunk metadata modification
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String CHUNK_METADATA_MODIFICATION = 
"chunk_metadata_modification";
   public static final String CHUNK_METADATA_MODIFICATION_ALIGNED_MEM =
       CHUNK_METADATA_MODIFICATION + "_" + ALIGNED + "_" + MEM;
@@ -393,9 +469,10 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
                                 Tag.FROM.toString(),
                                 from)));
   }
-  // endregion
 
-  // region chunk metadata filter
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // chunk metadata filter
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String CHUNK_METADATA_FILTER = "chunk_metadata_filter";
   public static final String CHUNK_METADATA_FILTER_ALIGNED_MEM =
       CHUNK_METADATA_FILTER + "_" + ALIGNED + "_" + MEM;
@@ -476,9 +553,9 @@ public class SeriesScanCostMetricSet implements IMetricSet {
                                 from)));
   }
 
-  // endregion
-
-  // region construct chunk reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // construct chunk reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String CONSTRUCT_CHUNK_READER = 
"construct_chunk_reader";
   public static final String CONSTRUCT_CHUNK_READER_ALIGNED_MEM =
       CONSTRUCT_CHUNK_READER + "_" + ALIGNED + "_" + MEM;
@@ -546,22 +623,21 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
             type ->
                 Arrays.asList(MEM, DISK)
                     .forEach(
-                        from -> {
-                          metricService.remove(
-                              MetricType.TIMER,
-                              Metric.SERIES_SCAN_COST.toString(),
-                              Tag.STAGE.toString(),
-                              CONSTRUCT_CHUNK_READER,
-                              Tag.TYPE.toString(),
-                              type,
-                              Tag.FROM.toString(),
-                              from);
-                        }));
+                        from ->
+                            metricService.remove(
+                                MetricType.TIMER,
+                                Metric.SERIES_SCAN_COST.toString(),
+                                Tag.STAGE.toString(),
+                                CONSTRUCT_CHUNK_READER,
+                                Tag.TYPE.toString(),
+                                type,
+                                Tag.FROM.toString(),
+                                from)));
   }
 
-  // endregion
-
-  // region read chunk
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // read chunk
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String READ_CHUNK = "read_chunk";
   private static final String ALL = "all";
   public static final String READ_CHUNK_ALL = READ_CHUNK + "_" + ALL;
@@ -608,9 +684,10 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
                     Tag.FROM.toString(),
                     from));
   }
-  // endregion
 
-  // region init chunk reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // init chunk reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String INIT_CHUNK_READER = "init_chunk_reader";
   public static final String INIT_CHUNK_READER_ALIGNED_MEM =
       INIT_CHUNK_READER + "_" + ALIGNED + "_" + MEM;
@@ -689,9 +766,10 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
                                 Tag.FROM.toString(),
                                 from)));
   }
-  // endregion
 
-  // region build tsblock from page reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // build tsblock from page reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String BUILD_TSBLOCK_FROM_PAGE_READER = 
"build_tsblock_from_page_reader";
   public static final String BUILD_TSBLOCK_FROM_PAGE_READER_ALIGNED_MEM =
       BUILD_TSBLOCK_FROM_PAGE_READER + "_" + ALIGNED + "_" + MEM;
@@ -760,25 +838,24 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
     buildTsBlockFromPageReaderNonAlignedDiskTimer = 
DoNothingMetricManager.DO_NOTHING_TIMER;
     Arrays.asList(ALIGNED, NON_ALIGNED)
         .forEach(
-            type -> {
-              Arrays.asList(MEM, DISK)
-                  .forEach(
-                      from -> {
-                        metricService.remove(
-                            MetricType.TIMER,
-                            Metric.SERIES_SCAN_COST.toString(),
-                            Tag.STAGE.toString(),
-                            BUILD_TSBLOCK_FROM_PAGE_READER,
-                            Tag.TYPE.toString(),
-                            type,
-                            Tag.FROM.toString(),
-                            from);
-                      });
-            });
+            type ->
+                Arrays.asList(MEM, DISK)
+                    .forEach(
+                        from ->
+                            metricService.remove(
+                                MetricType.TIMER,
+                                Metric.SERIES_SCAN_COST.toString(),
+                                Tag.STAGE.toString(),
+                                BUILD_TSBLOCK_FROM_PAGE_READER,
+                                Tag.TYPE.toString(),
+                                type,
+                                Tag.FROM.toString(),
+                                from)));
   }
-  // endregion
 
-  // region build tsblock from merge reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
+  // build tsblock from merge reader
+  
/////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String BUILD_TSBLOCK_FROM_MERGE_READER = 
"build_tsblock_from_merge_reader";
   public static final String BUILD_TSBLOCK_FROM_MERGE_READER_ALIGNED =
       BUILD_TSBLOCK_FROM_MERGE_READER + "_" + ALIGNED;
@@ -828,11 +905,12 @@ public class SeriesScanCostMetricSet implements 
IMetricSet {
                     Tag.TYPE.toString(),
                     type));
   }
-  // endregion
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
     bindTimeseriesMetadata(metricService);
+    bindAlignedTimeseriesMetadata(metricService);
+
     bindReadTimeseriesMetadata(metricService);
     bindTimeseriesMetadataModification(metricService);
     bindLoadChunkMetadataList(metricService);
@@ -862,18 +940,6 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
 
   public void recordSeriesScanCost(String type, long cost) {
     switch (type) {
-      case LOAD_TIMESERIES_METADATA_ALIGNED_MEM:
-        loadTimeseriesMetadataAlignedMemTimer.updateNanos(cost);
-        break;
-      case LOAD_TIMESERIES_METADATA_ALIGNED_DISK:
-        loadTimeseriesMetadataAlignedDiskTimer.updateNanos(cost);
-        break;
-      case LOAD_TIMESERIES_METADATA_NONALIGNED_MEM:
-        loadTimeseriesMetadataNonAlignedMemTimer.updateNanos(cost);
-        break;
-      case LOAD_TIMESERIES_METADATA_NONALIGNED_DISK:
-        loadTimeseriesMetadataNonAlignedDiskTimer.updateNanos(cost);
-        break;
       case TIMESERIES_METADATA_MODIFICATION_ALIGNED:
         timeseriesMetadataModificationAlignedTimer.updateNanos(cost);
         break;
@@ -975,7 +1041,9 @@ public class SeriesScanCostMetricSet implements IMetricSet 
{
     }
   }
 
-  public static SeriesScanCostMetricSet getInstance() {
-    return INSTANCE;
+  private static final SeriesScanCostMetricSet INSTANCE = new 
SeriesScanCostMetricSet();
+
+  private SeriesScanCostMetricSet() {
+    // empty constructor
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
index f7ca16b32aa..102a23756b4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
@@ -443,7 +443,7 @@ public class CompactionMetrics implements IMetricSet {
         Metric.COMPACTION_TASK_COUNT.toString(),
         MetricLevel.IMPORTANT,
         this,
-        (metrics) -> {
+        metrics -> {
           updateCompactionTaskInfo();
           return finishSeqInnerCompactionTaskNum.get();
         },
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
index bc7f28c184e..6e6e2afa2e0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
@@ -75,7 +75,7 @@ public class DataNodeMetricsHelper {
     
MetricService.getInstance().addMetricSet(DataExchangeCostMetricSet.getInstance());
     
MetricService.getInstance().addMetricSet(DataExchangeCountMetricSet.getInstance());
     
MetricService.getInstance().addMetricSet(DriverSchedulerMetricSet.getInstance());
-    MetricService.getInstance().addMetricSet(new 
QueryRelatedResourceMetricSet());
+    
MetricService.getInstance().addMetricSet(QueryRelatedResourceMetricSet.getInstance());
 
     // bind performance overview related metrics
     
MetricService.getInstance().addMetricSet(PerformanceOverviewMetrics.getInstance());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
index 7a08d5b3e39..1ca8e6b0142 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
@@ -55,10 +55,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_TIMESERIES_METADATA_ALIGNED_DISK;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_TIMESERIES_METADATA_ALIGNED_MEM;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_TIMESERIES_METADATA_NONALIGNED_DISK;
-import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_TIMESERIES_METADATA_NONALIGNED_MEM;
 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;
 
@@ -119,6 +115,7 @@ public class FileLoaderUtils {
    * @param seriesPath Timeseries path
    * @param allSensors measurements queried at the same time of this device
    * @param filter any filter, only used to check time range
+   * @param isSeq if it is a sequence file
    * @throws IOException IOException may be thrown while reading it from disk.
    */
   @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity 
warning
@@ -127,7 +124,8 @@ public class FileLoaderUtils {
       PartialPath seriesPath,
       QueryContext context,
       Filter filter,
-      Set<String> allSensors)
+      Set<String> allSensors,
+      boolean isSeq)
       throws IOException {
     long t1 = System.nanoTime();
     boolean loadFromMem = false;
@@ -185,11 +183,24 @@ public class FileLoaderUtils {
       }
       return timeSeriesMetadata;
     } finally {
-      SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-          loadFromMem
-              ? LOAD_TIMESERIES_METADATA_NONALIGNED_MEM
-              : LOAD_TIMESERIES_METADATA_NONALIGNED_DISK,
-          System.nanoTime() - t1);
+      long costTime = System.nanoTime() - t1;
+      if (loadFromMem) {
+        if (isSeq) {
+          context.loadTimeSeriesMetadataMemSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataMemSeqTime.getAndAdd(costTime);
+        } else {
+          context.loadTimeSeriesMetadataMemUnSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataMemUnSeqTime.getAndAdd(costTime);
+        }
+      } else {
+        if (isSeq) {
+          context.loadTimeSeriesMetadataDiskSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataDiskSeqTime.getAndAdd(costTime);
+        } else {
+          context.loadTimeSeriesMetadataDiskUnSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataDiskUnSeqTime.getAndAdd(costTime);
+        }
+      }
     }
   }
 
@@ -206,7 +217,8 @@ public class FileLoaderUtils {
       AlignedPath alignedPath,
       QueryContext context,
       Filter filter,
-      boolean queryAllSensors)
+      boolean queryAllSensors,
+      boolean isSeq)
       throws IOException {
     final long t1 = System.nanoTime();
     boolean loadFromMem = false;
@@ -248,11 +260,24 @@ public class FileLoaderUtils {
       }
       return alignedTimeSeriesMetadata;
     } finally {
-      SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-          loadFromMem
-              ? LOAD_TIMESERIES_METADATA_ALIGNED_MEM
-              : LOAD_TIMESERIES_METADATA_ALIGNED_DISK,
-          System.nanoTime() - t1);
+      long costTime = System.nanoTime() - t1;
+      if (loadFromMem) {
+        if (isSeq) {
+          context.loadTimeSeriesMetadataAlignedMemSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataAlignedMemSeqTime.getAndAdd(costTime);
+        } else {
+          context.loadTimeSeriesMetadataAlignedMemUnSeqCount.getAndAdd(1);
+          
context.loadTimeSeriesMetadataAlignedMemUnSeqTime.getAndAdd(costTime);
+        }
+      } else {
+        if (isSeq) {
+          context.loadTimeSeriesMetadataAlignedDiskSeqCount.getAndAdd(1);
+          context.loadTimeSeriesMetadataAlignedDiskSeqTime.getAndAdd(costTime);
+        } else {
+          context.loadTimeSeriesMetadataAlignedDiskUnSeqCount.getAndAdd(1);
+          
context.loadTimeSeriesMetadataAlignedDiskUnSeqTime.getAndAdd(costTime);
+        }
+      }
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-datanode.properties
 
b/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-datanode.properties
index 72acbce4157..6f02870b280 100644
--- 
a/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-datanode.properties
+++ 
b/iotdb-core/datanode/src/test/resources/datanode1conf/iotdb-datanode.properties
@@ -39,4 +39,4 @@ sort_tmp_dir=target/datanode1/tmp
 dn_metric_reporter_list=PROMETHEUS
 dn_metric_level=IMPORTANT
 dn_metric_async_collect_period=5
-dn_metric_prometheus_reporter_port=9097
\ No newline at end of file
+dn_metric_prometheus_reporter_port=9093
\ No newline at end of file
diff --git 
a/iotdb-core/datanode/src/test/resources/datanode2conf/iotdb-datanode.properties
 
b/iotdb-core/datanode/src/test/resources/datanode2conf/iotdb-datanode.properties
index b1037c8457b..f766356f275 100644
--- 
a/iotdb-core/datanode/src/test/resources/datanode2conf/iotdb-datanode.properties
+++ 
b/iotdb-core/datanode/src/test/resources/datanode2conf/iotdb-datanode.properties
@@ -39,4 +39,4 @@ sort_tmp_dir=target/datanode2/tmp
 dn_metric_reporter_list=PROMETHEUS
 dn_metric_level=IMPORTANT
 dn_metric_async_collect_period=5
-dn_metric_prometheus_reporter_port=9099
+dn_metric_prometheus_reporter_port=9094
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 872f873fd3c..fe0dc34aef2 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
@@ -86,6 +86,7 @@ public enum Metric {
   OPERATOR_EXECUTION_COST("operator_execution_cost"),
   OPERATOR_EXECUTION_COUNT("operator_execution_count"),
   SERIES_SCAN_COST("series_scan_cost"),
+  QUERY_METADATA_COST("query_metadata_cost"),
   DISPATCHER("dispatcher"),
   QUERY_EXECUTION("query_execution"),
   AGGREGATION("aggregation"),

Reply via email to