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

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


The following commit(s) were added to refs/heads/beyyes/explain by this push:
     new cd810641f08 fix dispatch
cd810641f08 is described below

commit cd810641f08f61590819e8a823386cd931d55452
Author: Beyyes <[email protected]>
AuthorDate: Fri Jul 12 19:16:36 2024 +0800

    fix dispatch
---
 .../iotdb/db/queryengine/common/MPPQueryContext.java      | 15 ++++++---------
 .../plan/scheduler/FragmentInstanceDispatcherImpl.java    |  6 +++---
 .../statistics/FragmentInstanceStatisticsDrawer.java      |  4 +++-
 .../db/queryengine/statistics/QueryPlanStatistics.java    | 14 +++++++-------
 4 files changed, 19 insertions(+), 20 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 bb83aca6a14..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
@@ -125,6 +125,7 @@ public class FragmentInstanceDispatcherImpl implements 
IFragInstanceDispatcher {
   //  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) {
       try (SetThreadName threadName = new 
SetThreadName(instance.getId().getFullId())) {
         dispatchOneInstance(instance);
@@ -146,11 +147,10 @@ public class FragmentInstanceDispatcherImpl implements 
IFragInstanceDispatcher {
           // TypeProvider is not used in EXPLAIN ANALYZE, so we can clear it
           instance.getFragment().clearTypeProvider();
         }
+        QUERY_EXECUTION_METRIC_SET.recordExecutionCost(
+            DISPATCH_READ, System.nanoTime() - startTime);
       }
     }
-    long dispatchReadTime = System.nanoTime() - startTime;
-    QUERY_EXECUTION_METRIC_SET.recordExecutionCost(DISPATCH_READ, 
dispatchReadTime);
-    queryContext.recordDispatchCost(dispatchReadTime);
     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 4db9679377b..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(
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