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