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