You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2025/03/17 13:37:01 UTC

(iotdb) branch optimize_single_device_tablet_v3 created (now a3d6b3525ed)

This is an automated email from the ASF dual-hosted git repository.

haonan pushed a change to branch optimize_single_device_tablet_v3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at a3d6b3525ed Optimize single device tablet insert

This branch includes the following new commits:

     new a3d6b3525ed Optimize single device tablet insert

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(iotdb) 01/01: Optimize single device tablet insert

Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch optimize_single_device_tablet_v3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit a3d6b3525ed7e9a6da6650c8826eb7966a853a19
Author: HTHou <hh...@outlook.com>
AuthorDate: Mon Mar 17 21:36:37 2025 +0800

    Optimize single device tablet insert
---
 .../planner/plan/node/write/InsertTabletNode.java  | 16 ++++++++--
 .../node/write/RelationalInsertTabletNode.java     | 35 ++++++++++++++++------
 2 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
index 08557346c39..a963564516d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
@@ -455,7 +455,7 @@ public class InsertTabletNode extends InsertNode implements WALEntryValue {
     writeTimes(buffer);
     writeBitMaps(buffer);
     writeValues(buffer);
-    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), buffer);
+    writeTabletAttribute(buffer);
   }
 
   void subSerialize(DataOutputStream stream) throws IOException {
@@ -465,7 +465,7 @@ public class InsertTabletNode extends InsertNode implements WALEntryValue {
     writeTimes(stream);
     writeBitMaps(stream);
     writeValues(stream);
-    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), stream);
+    writeTabletAttribute(stream);
   }
 
   /** Serialize measurements or measurement schemas, ignoring failed time series */
@@ -707,6 +707,14 @@ public class InsertTabletNode extends InsertNode implements WALEntryValue {
     }
   }
 
+  void writeTabletAttribute(ByteBuffer buffer) {
+    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), buffer);
+  }
+
+  void writeTabletAttribute(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write((byte) (isAligned ? 1 : 0), stream);
+  }
+
   public static InsertTabletNode deserialize(ByteBuffer byteBuffer) {
     InsertTabletNode insertNode = new InsertTabletNode(new PlanNodeId(""));
     insertNode.subDeserialize(byteBuffer);
@@ -753,6 +761,10 @@ public class InsertTabletNode extends InsertNode implements WALEntryValue {
     }
     columns =
         QueryDataSetUtils.readTabletValuesFromBuffer(buffer, dataTypes, measurementSize, rowCount);
+    readTabletAttribute(buffer);
+  }
+
+  void readTabletAttribute(ByteBuffer buffer) {
     isAligned = buffer.get() == 1;
   }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
index 70321743453..8a89a3a1d01 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertTabletNode.java
@@ -221,16 +221,10 @@ public class RelationalInsertTabletNode extends InsertTabletNode {
     return splitMap;
   }
 
-  public static RelationalInsertTabletNode deserialize(ByteBuffer byteBuffer) {
-    RelationalInsertTabletNode insertNode = new RelationalInsertTabletNode(new PlanNodeId(""));
-    insertNode.subDeserialize(byteBuffer);
-    insertNode.setPlanNodeId(PlanNodeId.deserialize(byteBuffer));
-    return insertNode;
-  }
-
   @Override
   protected void serializeAttributes(ByteBuffer byteBuffer) {
-    super.serializeAttributes(byteBuffer);
+    getType().serialize(byteBuffer);
+    subSerialize(byteBuffer);
     for (int i = 0; i < measurements.length; i++) {
       if (measurements[i] != null) {
         columnCategories[i].serialize(byteBuffer);
@@ -240,7 +234,8 @@ public class RelationalInsertTabletNode extends InsertTabletNode {
 
   @Override
   protected void serializeAttributes(DataOutputStream stream) throws IOException {
-    super.serializeAttributes(stream);
+    getType().serialize(stream);
+    subSerialize(stream);
     for (int i = 0; i < measurements.length; i++) {
       if (measurements[i] != null) {
         columnCategories[i].serialize(stream);
@@ -248,6 +243,23 @@ public class RelationalInsertTabletNode extends InsertTabletNode {
     }
   }
 
+  @Override
+  void writeTabletAttribute(ByteBuffer byteBuffer) {
+    ReadWriteIOUtils.write((byte) (singleDevice ? -1 : 0), byteBuffer);
+  }
+
+  @Override
+  void writeTabletAttribute(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write((byte) (singleDevice ? -1 : 0), stream);
+  }
+
+  public static RelationalInsertTabletNode deserialize(ByteBuffer byteBuffer) {
+    RelationalInsertTabletNode insertNode = new RelationalInsertTabletNode(new PlanNodeId(""));
+    insertNode.subDeserialize(byteBuffer);
+    insertNode.setPlanNodeId(PlanNodeId.deserialize(byteBuffer));
+    return insertNode;
+  }
+
   @Override
   public void subDeserialize(ByteBuffer buffer) {
     super.subDeserialize(buffer);
@@ -258,6 +270,11 @@ public class RelationalInsertTabletNode extends InsertTabletNode {
     setColumnCategories(columnCategories);
   }
 
+  @Override
+  void readTabletAttribute(ByteBuffer buffer) {
+    singleDevice = buffer.get() == -1;
+  }
+
   @Override
   void subSerialize(IWALByteBufferView buffer, List<int[]> rangeList) {
     super.subSerialize(buffer, rangeList);