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;
}
}