This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 865975485b2 modify compaction schedule (#12826)
865975485b2 is described below
commit 865975485b2b0430c54db0efb75149c45f602ce0
Author: shuwenwei <[email protected]>
AuthorDate: Thu Jul 4 13:10:34 2024 +0800
modify compaction schedule (#12826)
---
.../src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +-
.../dataregion/compaction/schedule/CompactionScheduler.java | 5 ++++-
.../dataregion/compaction/schedule/CompactionTaskManager.java | 8 ++++++++
.../src/assembly/resources/conf/iotdb-system.properties.template | 2 +-
4 files changed, 14 insertions(+), 3 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index c38c17535fa..05539f9fab1 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -465,7 +465,7 @@ public class IoTDBConfig {
* cross space compaction, eliminate the unsequence files first BALANCE:
alternate two compaction
* types
*/
- private CompactionPriority compactionPriority = CompactionPriority.BALANCE;
+ private CompactionPriority compactionPriority =
CompactionPriority.INNER_CROSS;
private double chunkMetadataSizeProportion = 0.1;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
index a601c8df361..43f706173bb 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
@@ -103,11 +103,11 @@ public class CompactionScheduler {
// evicted due to the low priority of the task
int trySubmitCount = 0;
try {
- trySubmitCount += tryToSubmitCrossSpaceCompactionTask(tsFileManager,
timePartition, summary);
trySubmitCount +=
tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
true, summary);
trySubmitCount +=
tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
false, summary);
+ trySubmitCount += tryToSubmitCrossSpaceCompactionTask(tsFileManager,
timePartition, summary);
trySubmitCount +=
tryToSubmitSettleCompactionTask(tsFileManager, timePartition,
summary, false);
} catch (InterruptedException e) {
@@ -258,6 +258,9 @@ public class CompactionScheduler {
if (!config.isEnableCrossSpaceCompaction()) {
return 0;
}
+ if
(!CompactionTaskManager.getInstance().shouldSelectCrossSpaceCompactionTask()) {
+ return 0;
+ }
String logicalStorageGroupName = tsFileManager.getStorageGroupName();
String dataRegionId = tsFileManager.getDataRegionId();
long compactionConfigVersionWhenSelectTask =
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionTaskManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionTaskManager.java
index 80a0a58f2d5..27eadff4874 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionTaskManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionTaskManager.java
@@ -240,6 +240,14 @@ public class CompactionTaskManager implements IService {
return ServiceType.COMPACTION_SERVICE;
}
+ public boolean shouldSelectCrossSpaceCompactionTask() {
+ // If the queue size accounts for less than 0.8 of the total capacity,
select cross space
+ // compaction task
+ int waitingQueueRestSize =
+ candidateCompactionTaskQueue.getMaxSize() -
candidateCompactionTaskQueue.size();
+ return 5 * waitingQueueRestSize >= candidateCompactionTaskQueue.size();
+ }
+
public boolean isWaitingQueueFull() {
return candidateCompactionTaskQueue.size() ==
candidateCompactionTaskQueue.getMaxSize();
}
diff --git
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index b1048098de6..6c252a210f0 100644
---
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -1205,7 +1205,7 @@ inner_unseq_performer=fast
# CROSS_INNER: prioritize cross space compaction, eliminate the unsequence
files first
# BALANCE: alternate two compaction types
# effectiveMode: restart
-compaction_priority=BALANCE
+compaction_priority=INNER_CROSS
# The size of candidate compaction task queue.
# effectiveMode: restart