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 ce4ed6a5024 Perfect the print result of dispatch and timeseries 
metadata modification in explain analyze
ce4ed6a5024 is described below

commit ce4ed6a5024af15411f9a2fe3221c8eaab2e2c0c
Author: Beyyes <[email protected]>
AuthorDate: Sun Jul 14 14:34:39 2024 +0800

    Perfect the print result of dispatch and timeseries metadata modification 
in explain analyze
---
 .../db/queryengine/common/MPPQueryContext.java     | 15 +++-----
 .../scheduler/FragmentInstanceDispatcherImpl.java  |  8 ++--
 .../FragmentInstanceStatisticsDrawer.java          | 44 +++++++++++-----------
 .../statistics/QueryPlanStatistics.java            | 14 +++----
 4 files changed, 40 insertions(+), 41 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
index b8ac5a4fb31..a117d9f421d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
@@ -258,8 +258,12 @@ public class MPPQueryContext {
     return queryPlanStatistics.getLogicalOptimizationCost();
   }
 
-  public long getDispatchCost() {
-    return queryPlanStatistics.getDispatchCost();
+  public void setDispatchStartTime(long time) {
+    this.queryPlanStatistics.setDispatchStartTime(time);
+  }
+
+  public long getDispatchStartTime() {
+    return queryPlanStatistics.getDispatchStartTime();
   }
 
   public void setAnalyzeCost(long analyzeCost) {
@@ -304,13 +308,6 @@ public class MPPQueryContext {
     queryPlanStatistics.setLogicalOptimizationCost(logicalOptimizeCost);
   }
 
-  public void recordDispatchCost(long dispatchCost) {
-    if (queryPlanStatistics == null) {
-      queryPlanStatistics = new QueryPlanStatistics();
-    }
-    queryPlanStatistics.recordDispatchCost(dispatchCost);
-  }
-
   // region =========== FE memory related, make sure its not called 
concurrently ===========
 
   /**
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FragmentInstanceDispatcherImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FragmentInstanceDispatcherImpl.java
index 2b0738ea59f..986eb8c9b15 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FragmentInstanceDispatcherImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FragmentInstanceDispatcherImpl.java
@@ -124,8 +124,9 @@ public class FragmentInstanceDispatcherImpl implements 
IFragInstanceDispatcher {
   //  unsafe for current FragmentInstance scheduler framework. We need to 
implement the
   //  topological dispatch according to dependency relations between 
FragmentInstances
   private Future<FragInstanceDispatchResult> 
dispatchRead(List<FragmentInstance> instances) {
+    long startTime = System.nanoTime();
+    queryContext.setDispatchStartTime(startTime);
     for (FragmentInstance instance : instances) {
-      long startTime = System.nanoTime();
       try (SetThreadName threadName = new 
SetThreadName(instance.getId().getFullId())) {
         dispatchOneInstance(instance);
       } catch (FragmentInstanceDispatchException e) {
@@ -146,9 +147,8 @@ public class FragmentInstanceDispatcherImpl implements 
IFragInstanceDispatcher {
           // TypeProvider is not used in EXPLAIN ANALYZE, so we can clear it
           instance.getFragment().clearTypeProvider();
         }
-        long dispatchReadTime = System.nanoTime() - startTime;
-        QUERY_EXECUTION_METRIC_SET.recordExecutionCost(DISPATCH_READ, 
dispatchReadTime);
-        queryContext.recordDispatchCost(dispatchReadTime);
+        QUERY_EXECUTION_METRIC_SET.recordExecutionCost(
+            DISPATCH_READ, System.nanoTime() - startTime);
       }
     }
     return immediateFuture(new FragInstanceDispatchResult(true));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
index d971c3a8f15..71638a9c83f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/FragmentInstanceStatisticsDrawer.java
@@ -72,7 +72,9 @@ public class FragmentInstanceStatisticsDrawer {
     addLine(
         planHeader,
         0,
-        String.format("Dispatch Cost: %.3f ms", context.getDispatchCost() * 
NS_TO_MS_FACTOR));
+        String.format(
+            "Single Dispatch Cost: %.3f ms",
+            (System.nanoTime() - context.getDispatchStartTime()) * 
NS_TO_MS_FACTOR));
   }
 
   public List<StatisticLine> renderFragmentInstances(
@@ -245,6 +247,26 @@ public class FragmentInstanceStatisticsDrawer {
         2,
         "loadTimeSeriesMetadataAlignedMemUnSeqTime",
         queryStatistics.loadTimeSeriesMetadataAlignedMemUnSeqTime * 
NS_TO_MS_FACTOR);
+    addLineWithValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "alignedTimeSeriesMetadataModificationCount",
+        queryStatistics.getAlignedTimeSeriesMetadataModificationCount());
+    addLineWithValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "alignedTimeSeriesMetadataModificationTime",
+        queryStatistics.getAlignedTimeSeriesMetadataModificationTime() * 
NS_TO_MS_FACTOR);
+    addLineWithValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "nonAlignedTimeSeriesMetadataModificationCount",
+        queryStatistics.getNonAlignedTimeSeriesMetadataModificationCount());
+    addLineWithValueCheck(
+        singleFragmentInstanceArea,
+        2,
+        "nonAlignedTimeSeriesMetadataModificationTime",
+        queryStatistics.getNonAlignedTimeSeriesMetadataModificationTime() * 
NS_TO_MS_FACTOR);
 
     addLineWithValueCheck(
         singleFragmentInstanceArea,
@@ -333,26 +355,6 @@ public class FragmentInstanceStatisticsDrawer {
         2,
         "pageReaderMaxUsedMemorySize",
         queryStatistics.pageReaderMaxUsedMemorySize);
-    addLineWithValueCheck(
-        singleFragmentInstanceArea,
-        1,
-        "AlignedTimeSeriesMetadataModificationCount",
-        queryStatistics.getAlignedTimeSeriesMetadataModificationCount());
-    addLineWithValueCheck(
-        singleFragmentInstanceArea,
-        1,
-        "AlignedTimeSeriesMetadataModificationTime",
-        queryStatistics.getAlignedTimeSeriesMetadataModificationTime() * 
NS_TO_MS_FACTOR);
-    addLineWithValueCheck(
-        singleFragmentInstanceArea,
-        1,
-        "NonAlignedTimeSeriesMetadataModificationCount",
-        queryStatistics.getNonAlignedTimeSeriesMetadataModificationCount());
-    addLineWithValueCheck(
-        singleFragmentInstanceArea,
-        1,
-        "NonAlignedTimeSeriesMetadataModificationTime",
-        queryStatistics.getNonAlignedTimeSeriesMetadataModificationTime() * 
NS_TO_MS_FACTOR);
   }
 
   private void addLine(List<StatisticLine> resultForSingleInstance, int level, 
String value) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/QueryPlanStatistics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/QueryPlanStatistics.java
index 845934aae1b..ad4d549e697 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/QueryPlanStatistics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/statistics/QueryPlanStatistics.java
@@ -26,7 +26,7 @@ public class QueryPlanStatistics {
   private long logicalPlanCost;
   private long logicalOptimizationCost;
   private long distributionPlanCost;
-  private long dispatchCost = 0;
+  private long dispatchStartTime = 0;
 
   public void setAnalyzeCost(long analyzeCost) {
     this.analyzeCost = analyzeCost;
@@ -52,10 +52,6 @@ public class QueryPlanStatistics {
     this.logicalOptimizationCost = logicalOptimizationCost;
   }
 
-  public void recordDispatchCost(long dispatchCost) {
-    this.dispatchCost += dispatchCost;
-  }
-
   public long getAnalyzeCost() {
     return analyzeCost;
   }
@@ -80,7 +76,11 @@ public class QueryPlanStatistics {
     return logicalOptimizationCost;
   }
 
-  public long getDispatchCost() {
-    return dispatchCost;
+  public void setDispatchStartTime(long dispatchStartTime) {
+    this.dispatchStartTime = dispatchStartTime;
+  }
+
+  public long getDispatchStartTime() {
+    return dispatchStartTime;
   }
 }

Reply via email to