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 2024/04/01 09:27:30 UTC
(iotdb) 05/05: optimize search Index
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch batch_wal
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 735852a76a08b0f73e0735c58facc55a18c1adce
Author: HTHou <hh...@outlook.com>
AuthorDate: Mon Apr 1 17:23:59 2024 +0800
optimize search Index
---
.../planner/plan/node/write/InsertRowNode.java | 27 +++++++++++++++-------
.../planner/plan/node/write/InsertRowsNode.java | 11 ++++++---
2 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
index b0d8aad94c3..f15474a6443 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
@@ -490,12 +490,12 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
/** Serialized size for wal. */
@Override
public int serializedSize() {
- return Short.BYTES + subSerializeSize();
+ return Short.BYTES + Long.BYTES + subSerializeSize();
}
- private int subSerializeSize() {
+ protected int subSerializeSize() {
int size = 0;
- size += Long.BYTES * 2;
+ size += Long.BYTES;
size += ReadWriteIOUtils.sizeToWrite(devicePath.getFullPath());
return size + serializeMeasurementsAndValuesSize();
}
@@ -553,11 +553,11 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
@Override
public void serializeToWAL(IWALByteBufferView buffer) {
buffer.putShort(PlanNodeType.INSERT_ROW.getNodeType());
+ buffer.putLong(searchIndex);
subSerialize(buffer);
}
- private void subSerialize(IWALByteBufferView buffer) {
- buffer.putLong(searchIndex);
+ protected void subSerialize(IWALByteBufferView buffer) {
buffer.putLong(time);
WALWriteUtils.write(devicePath.getFullPath(), buffer);
serializeMeasurementsAndValues(buffer);
@@ -623,9 +623,15 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
* @throws IllegalArgumentException - If meets illegal argument.
*/
public static InsertRowNode deserializeFromWAL(DataInputStream stream) throws IOException {
+ long searchIndex = stream.readLong();
+ InsertRowNode insertNode = subDeserializeFromWAL(stream);
+ insertNode.setSearchIndex(searchIndex);
+ return insertNode;
+ }
+
+ protected static InsertRowNode subDeserializeFromWAL(DataInputStream stream) throws IOException {
// we do not store plan node id in wal entry
InsertRowNode insertNode = new InsertRowNode(new PlanNodeId(""));
- insertNode.setSearchIndex(stream.readLong());
insertNode.setTime(stream.readLong());
try {
insertNode.setDevicePath(
@@ -635,7 +641,6 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
throw new IllegalArgumentException(DESERIALIZE_ERROR, e);
}
insertNode.deserializeMeasurementsAndValuesFromWAL(stream);
-
return insertNode;
}
@@ -700,9 +705,15 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
* @throws IllegalArgumentException - If meets illegal argument
*/
public static InsertRowNode deserializeFromWAL(ByteBuffer buffer) {
+ long searchIndex = buffer.getLong();
+ InsertRowNode insertNode = subDeserializeFromWAL(buffer);
+ insertNode.setSearchIndex(searchIndex);
+ return insertNode;
+ }
+
+ protected static InsertRowNode subDeserializeFromWAL(ByteBuffer buffer) {
// we do not store plan node id in wal entry
InsertRowNode insertNode = new InsertRowNode(new PlanNodeId(""));
- insertNode.setSearchIndex(buffer.getLong());
insertNode.setTime(buffer.getLong());
try {
insertNode.setDevicePath(new PartialPath(ReadWriteIOUtils.readString(buffer)));
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
index 77c2de63d8e..f4b7fae02e2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
@@ -291,13 +291,14 @@ public class InsertRowsNode extends InsertNode implements WALEntryValue {
@Override
public void serializeToWAL(IWALByteBufferView buffer) {
buffer.putShort(PlanNodeType.INSERT_ROWS.getNodeType());
+ buffer.putLong(searchIndex);
subSerialize(buffer);
}
private void subSerialize(IWALByteBufferView buffer) {
buffer.putInt(insertRowNodeList.size());
for (InsertRowNode insertRowNode : insertRowNodeList) {
- insertRowNode.serializeToWAL(buffer);
+ insertRowNode.subSerialize(buffer);
}
}
@@ -312,11 +313,13 @@ public class InsertRowsNode extends InsertNode implements WALEntryValue {
public static InsertRowsNode deserializeFromWAL(DataInputStream stream) throws IOException {
// we do not store plan node id in wal entry
InsertRowsNode insertRowsNode = new InsertRowsNode(new PlanNodeId(""));
+ long searchIndex = stream.readLong();
int listSize = stream.readInt();
for (int i = 0; i < listSize; i++) {
- InsertRowNode insertRowNode = InsertRowNode.deserializeFromWAL(stream);
+ InsertRowNode insertRowNode = InsertRowNode.subDeserializeFromWAL(stream);
insertRowsNode.addOneInsertRowNode(insertRowNode, i);
}
+ insertRowsNode.setSearchIndex(searchIndex);
return insertRowsNode;
}
@@ -330,11 +333,13 @@ public class InsertRowsNode extends InsertNode implements WALEntryValue {
public static InsertRowsNode deserializeFromWAL(ByteBuffer buffer) {
// we do not store plan node id in wal entry
InsertRowsNode insertRowsNode = new InsertRowsNode(new PlanNodeId(""));
+ long searchIndex = buffer.getLong();
int listSize = buffer.getInt();
for (int i = 0; i < listSize; i++) {
- InsertRowNode insertRowNode = InsertRowNode.deserializeFromWAL(buffer);
+ InsertRowNode insertRowNode = InsertRowNode.subDeserializeFromWAL(buffer);
insertRowsNode.addOneInsertRowNode(insertRowNode, i);
}
+ insertRowsNode.setSearchIndex(searchIndex);
return insertRowsNode;
}
// endregion