diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 2b69b18bec5d9c..8d20b2b1168899 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1345,6 +1345,14 @@ public class Config extends ConfigBase { @ConfField(mutable = true, masterOnly = true) public static long dynamic_partition_check_interval_seconds = 600; + /** + * When scheduling dynamic partition tables, + * the execution interval of each table to prevent excessive consumption of FE CPU at the same time + * default is 0 + */ + @ConfField(mutable = true, masterOnly = true) + public static long dynamic_partition_step_interval_ms = 0; + /** * If set to true, dynamic partition feature will open */ diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java index dcd3631b117f7b..d40cc702eb3946 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java @@ -672,6 +672,20 @@ public void executeDynamicPartition(Collection> dynamicPartitio } cloudBatchAfterCreatePartitions(executeFirstTime, partsInfo, addPartitionClauses, db, olapTable, indexIds, tableName); + + // ATTN: Breaking up dynamic partition table scheduling, consuming peak CPU consumption + if (!executeFirstTime && !addPartitionClauses.isEmpty() + && Config.dynamic_partition_step_interval_ms > 0) { + long sleep = Config.dynamic_partition_step_interval_ms; + if (sleep > 1800 * 1000) { + LOG.warn("fe conf dynamic_partition_step_interval_ms bigger than 1800s, plz check it"); + } + try { + Thread.sleep(sleep); + } catch (InterruptedException e) { + LOG.warn("sleep err", e); + } + } } } }