This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch lazy_page_reader_in_compaction
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/lazy_page_reader_in_compaction
by this push:
new a80a4247221 add comments for newly added method
a80a4247221 is described below
commit a80a4247221cf49a04d5a4751f23f86c95b5830f
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Mon Aug 28 15:29:18 2023 +0800
add comments for newly added method
---
.../compaction/execute/utils/executor/fast/element/PageElement.java | 2 ++
.../compaction/execute/utils/executor/fast/element/PointElement.java | 2 ++
.../iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java | 4 ++++
3 files changed, 8 insertions(+)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
index 46e37df479a..b2477137f65 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
@@ -39,6 +39,8 @@ public class PageElement {
public TsBlock batchData;
+ // pointReader is used to replace batchData to get rid of huge memory cost
by loading data point
+ // in a lazy way
public IPointReader pointReader;
// compressed page data
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
index 8ad82c66f5e..52f661926c6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
@@ -39,6 +39,8 @@ public class PointElement {
if (pageElement.iChunkReader instanceof ChunkReader) {
this.pointReader =
pageElement.batchData.getTsBlockSingleColumnIterator();
} else {
+ // For aligned page, we use pointReader rather than deserialize all data
point to get rid of
+ // huge memory cost
this.pointReader = pageElement.pointReader;
}
this.timeValuePair = pointReader.nextTimeValuePair();
diff --git
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
index 3f100074497..121928357b3 100644
---
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
+++
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
@@ -26,6 +26,10 @@ import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
import java.io.IOException;
import java.util.List;
+/**
+ * This class is used to read data of aligned-series row by row. It won't
deserialize all data point
+ * of one page in memory. In contrast, it constructs row one by one as needed
+ */
public class LazyLoadAlignedPagePointReader implements IPointReader {
private TimePageReader timeReader;