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 <[email protected]> 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];
