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

Reply via email to