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 2023/03/09 10:07:00 UTC
[iotdb] 01/01: Seprate TargetMemoryBinaryChunkSize and TargetChunkSize configurations
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch seprate_binary_chunk_size
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3c8566cb8ba80610708ce270963aeb61478cdd2b
Author: HTHou <hh...@outlook.com>
AuthorDate: Thu Mar 9 18:06:42 2023 +0800
Seprate TargetMemoryBinaryChunkSize and TargetChunkSize configurations
---
docs/UserGuide/Reference/Common-Config-Manual.md | 9 +++++++++
docs/zh/UserGuide/Reference/Common-Config-Manual.md | 9 +++++++++
.../src/assembly/resources/conf/iotdb-common.properties | 7 ++++++-
.../src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 11 +++++++++++
.../main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java | 6 ++++++
.../apache/iotdb/db/utils/datastructure/AlignedTVList.java | 4 ++--
.../org/apache/iotdb/db/utils/datastructure/BinaryTVList.java | 2 +-
.../java/org/apache/iotdb/db/utils/datastructure/TVList.java | 4 ++--
8 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/docs/UserGuide/Reference/Common-Config-Manual.md b/docs/UserGuide/Reference/Common-Config-Manual.md
index 5e6538fe9c..965508893c 100644
--- a/docs/UserGuide/Reference/Common-Config-Manual.md
+++ b/docs/UserGuide/Reference/Common-Config-Manual.md
@@ -754,6 +754,15 @@ Different configuration parameters take effect in the following three ways:
|Default| 100000 |
|Effective| After restarting system |
+* target\_memory\_binary\_chunk\_size
+
+|Name| target\_memory\_binary\_chunk\_size |
+|:---:|:-----------------------------------------------------------------------------------------------------------|
+|Description| When a Binary type of timeseries's size in a memtable reaches this threshold, flush this memtable to disk. |
+|Type| int64 |
+|Default| 1048576 |
+|Effective| After restarting system |
+
* flush\_thread\_count
|Name| flush\_thread\_count |
diff --git a/docs/zh/UserGuide/Reference/Common-Config-Manual.md b/docs/zh/UserGuide/Reference/Common-Config-Manual.md
index 78883d6711..544e6454b2 100644
--- a/docs/zh/UserGuide/Reference/Common-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/Common-Config-Manual.md
@@ -802,6 +802,15 @@ IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。
|默认值| 100000 |
|改后生效方式| 重启服务生效 |
+* target\_memory\_binary\_chunk\_size
+
+|名字| target\_memory\_binary\_chunk\_size |
+|:---:|:----------------------------------------------|
+|描述| Memtable 中当一个 Binary 类型的序列内存大小超过这个阈值,触发 flush |
+|类型| int64 |
+|默认值| 1048576 |
+|改后生效方式| 重启服务生效 |
+
* flush\_thread\_count
|名字| flush\_thread\_count |
diff --git a/node-commons/src/assembly/resources/conf/iotdb-common.properties b/node-commons/src/assembly/resources/conf/iotdb-common.properties
index 05a496dc89..7783db1da0 100644
--- a/node-commons/src/assembly/resources/conf/iotdb-common.properties
+++ b/node-commons/src/assembly/resources/conf/iotdb-common.properties
@@ -501,6 +501,11 @@ cluster_name=defaultCluster
# Datatype: int
# avg_series_point_number_threshold=100000
+# When a Binary type of timeseries's size in a memtable reaches this threshold, flush this memtable to disk.
+# default is 1MB
+# Datatype: long, Unit: byte
+# target_memory_binary_chunk_size=1048576
+
# How many threads can concurrently flush. When <= 0, use CPU core number.
# Datatype: int
# flush_thread_count=0
@@ -572,7 +577,7 @@ cluster_name=defaultCluster
# Datatype: long, Unit: byte
# target_compaction_file_size=1073741824
-# The target chunk size in compaction and when memtable reaches this threshold, flush the memtable to disk.
+# The target chunk size in compaction
# default is 1MB
# Datatype: long, Unit: byte
# target_chunk_size=1048576
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 70a0b0f3da..400fac2279 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
@@ -387,6 +387,9 @@ public class IoTDBConfig {
/** When average series point number reaches this, flush the memtable to disk */
private int avgSeriesPointNumberThreshold = 100000;
+ /** The target memory Binary chunk size in TVList. */
+ private long targetMemoryBinaryChunkSize = 1048576L;
+
/** Enable inner space compaction for sequence files */
private boolean enableSeqSpaceCompaction = true;
@@ -1966,6 +1969,14 @@ public class IoTDBConfig {
this.avgSeriesPointNumberThreshold = avgSeriesPointNumberThreshold;
}
+ public long getTargetMemoryBinaryChunkSize() {
+ return targetMemoryBinaryChunkSize;
+ }
+
+ public void setTargetMemoryBinaryChunkSize(long targetMemoryBinaryChunkSize) {
+ this.targetMemoryBinaryChunkSize = targetMemoryBinaryChunkSize;
+ }
+
public long getCrossCompactionFileSelectionTimeBudget() {
return crossCompactionFileSelectionTimeBudget;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 0432754ab7..894cd88514 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -392,6 +392,12 @@ public class IoTDBDescriptor {
"avg_series_point_number_threshold",
Integer.toString(conf.getAvgSeriesPointNumberThreshold()))));
+ conf.setTargetMemoryBinaryChunkSize(
+ Long.parseLong(
+ properties.getProperty(
+ "target_memory_binary_chunk_size",
+ Long.toString(conf.getTargetMemoryBinaryChunkSize()))));
+
conf.setCheckPeriodWhenInsertBlocked(
Integer.parseInt(
properties.getProperty(
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
index dfba829696..ec1c97ef27 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
@@ -186,7 +186,7 @@ public abstract class AlignedTVList extends TVList {
columnValue != null
? getBinarySize((Binary) columnValue)
: getBinarySize(Binary.EMPTY_VALUE);
- if (memoryBinaryChunkSize[i] >= targetChunkSize) {
+ if (memoryBinaryChunkSize[i] >= targetMemoryBinaryChunkSize) {
reachMaxChunkSizeFlag = true;
}
break;
@@ -773,7 +773,7 @@ public abstract class AlignedTVList extends TVList {
memoryBinaryChunkSize[i] +=
arrayT[elementIndex + i1] != null ? getBinarySize(arrayT[elementIndex + i1]) : 0;
}
- if (memoryBinaryChunkSize[i] > targetChunkSize) {
+ if (memoryBinaryChunkSize[i] > targetMemoryBinaryChunkSize) {
reachMaxChunkSizeFlag = true;
}
break;
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
index 1e644e41a6..49ec892213 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
@@ -99,7 +99,7 @@ public abstract class BinaryTVList extends TVList {
@Override
public boolean reachMaxChunkSizeThreshold() {
- return memoryBinaryChunkSize >= targetChunkSize;
+ return memoryBinaryChunkSize >= targetMemoryBinaryChunkSize;
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
index 01d68e445a..1c0c70e521 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
@@ -49,8 +49,8 @@ public abstract class TVList implements WALEntryValue {
protected static final int SMALL_ARRAY_LENGTH = 32;
protected static final String ERR_DATATYPE_NOT_CONSISTENT = "DataType not consistent";
- protected static final long targetChunkSize =
- IoTDBDescriptor.getInstance().getConfig().getTargetChunkSize();
+ protected static final long targetMemoryBinaryChunkSize =
+ IoTDBDescriptor.getInstance().getConfig().getTargetMemoryBinaryChunkSize();
// list of timestamp array, add 1 when expanded -> data point timestamp array
// index relation: arrayIndex -> elementIndex
protected List<long[]> timestamps;