You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by le...@apache.org on 2023/10/23 18:42:33 UTC
[iotdb] 08/09: add tracing info for updated disk points
This is an automated email from the ASF dual-hosted git repository.
leirui pushed a commit to branch research/M4-visualization
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 85af5da3b1c49b204d27de678d8bc1bf2d31bef7
Author: Lei Rui <10...@qq.com>
AuthorDate: Thu Oct 5 21:19:49 2023 +0800
add tracing info for updated disk points
---
.../main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +-
.../org/apache/iotdb/db/query/control/TracingInfo.java | 10 ++++++++++
.../org/apache/iotdb/db/query/control/TracingManager.java | 14 ++++++++++++++
.../db/query/reader/universal/PriorityMergeReader.java | 7 +++++++
.../java/org/apache/iotdb/db/tools/TsFileSketchTool.java | 3 ++-
5 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index cee0f8e24b1..f45461a0690 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -153,7 +153,7 @@ public class IoTDBConfig {
private int flushWalThreshold = 10000;
/** this variable set timestamp precision as millisecond, microsecond or nanosecond */
- private String timestampPrecision = "ns";
+ private String timestampPrecision = "ms";
/**
* The cycle when write ahead log is periodically forced to be written to disk(in milliseconds) If
diff --git a/server/src/main/java/org/apache/iotdb/db/query/control/TracingInfo.java b/server/src/main/java/org/apache/iotdb/db/query/control/TracingInfo.java
index a72c9f11020..4809631b511 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/control/TracingInfo.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/control/TracingInfo.java
@@ -35,6 +35,8 @@ public class TracingInfo {
private long totalChunkPoints = 0;
private int totalPageNum = 0;
private int overlappedPageNum = 0;
+
+ private long updatedPointNum = 0;
private Set<TsFileResource> seqFileSet = new HashSet<>();
private Set<TsFileResource> unSeqFileSet = new HashSet<>();
@@ -61,6 +63,10 @@ public class TracingInfo {
this.overlappedPageNum++;
}
+ public void addUpdatedPointNum() {
+ this.updatedPointNum++;
+ }
+
public int getTotalPageNum() {
return totalPageNum;
}
@@ -69,6 +75,10 @@ public class TracingInfo {
return overlappedPageNum;
}
+ public long getUpdatedPointNum() {
+ return updatedPointNum;
+ }
+
public Set<TsFileResource> getSeqFileSet() {
return seqFileSet;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/control/TracingManager.java b/server/src/main/java/org/apache/iotdb/db/query/control/TracingManager.java
index b2dd13a891a..ba170a6f0e5 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/control/TracingManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/control/TracingManager.java
@@ -123,6 +123,8 @@ public class TracingManager {
writeChunksInfo(queryId, tracingInfo.getTotalChunkNum(), tracingInfo.getTotalChunkPoints());
writeOverlappedPageInfo(
queryId, tracingInfo.getTotalPageNum(), tracingInfo.getOverlappedPageNum());
+ writeUpdatedPointNumInfo(
+ queryId, tracingInfo.getTotalChunkPoints(), tracingInfo.getUpdatedPointNum());
}
public void writeTsFileInfo(
@@ -185,6 +187,18 @@ public class TracingManager {
writer.write(builder.toString());
}
+ public void writeUpdatedPointNumInfo(long queryId, long totalChunkPoints, long updatedPointNum)
+ throws IOException {
+ StringBuilder builder =
+ new StringBuilder(String.format(QUERY_ID, queryId))
+ .append(" - Rate of updated points: ")
+ .append(String.format("%.1f%%, ", (double) updatedPointNum / totalChunkPoints * 100))
+ .append(
+ String.format(
+ "%d updated points in total %d points.\n", updatedPointNum, totalChunkPoints));
+ writer.write(builder.toString());
+ }
+
public void writeEndTime(long queryId) throws IOException {
long endTime = System.currentTimeMillis();
StringBuilder builder =
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/universal/PriorityMergeReader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/universal/PriorityMergeReader.java
index 870ce0450ab..7f20590f89e 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/universal/PriorityMergeReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/universal/PriorityMergeReader.java
@@ -40,6 +40,8 @@ public class PriorityMergeReader implements IPointReader {
protected PriorityQueue<Element> heap;
+ private QueryContext context;
+
public PriorityMergeReader() {
heap =
new PriorityQueue<>(
@@ -77,6 +79,7 @@ public class PriorityMergeReader implements IPointReader {
public void addReader(
IPointReader reader, MergeReaderPriority priority, long endTime, QueryContext context)
throws IOException {
+ this.context = context;
if (reader.hasNextTimeValuePair()) {
heap.add(new Element(reader, reader.nextTimeValuePair(), priority));
currentReadStopTime = Math.max(currentReadStopTime, endTime);
@@ -152,6 +155,10 @@ public class PriorityMergeReader implements IPointReader {
protected void updateHeap(long topTime, long topNextTime) throws IOException {
while (!heap.isEmpty() && heap.peek().currTime() == topTime) {
+ if (IoTDBDescriptor.getInstance().getConfig().isEnablePerformanceTracing()) {
+ // TODO tracing
+ TracingManager.getInstance().getTracingInfo(context.getQueryId()).addUpdatedPointNum();
+ }
Element e = heap.poll();
if (!e.hasNext()) {
e.reader.close();
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
index 6cdb37b8ab5..568a181adb5 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
@@ -308,7 +308,8 @@ public class TsFileSketchTool {
}
private static Pair<String, String> checkArgs(String[] args) {
- String filename = "D:\\plain-plain-noindex.tsfile";
+ String filename =
+ "D:\\github\\mid\\iotdb-server-0.12.4\\data\\data\\unsequence\\root.game\\0\\0\\1696508586460-2-0-0.tsfile";
String outFile = "TsFile_sketch_view.txt";
if (args.length == 1) {
filename = args[0];