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

Reply via email to