diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCleaner.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCleaner.java index 1af219baa6..3a142351a2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCleaner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCleaner.java @@ -169,12 +169,15 @@ public class StatisticsCleaner extends MasterDaemon { doDelete("idx_id", expiredStats.expiredIdxId.stream() .map(String::valueOf).collect(Collectors.toList()), FeConstants.INTERNAL_DB_NAME + "." + tblName, false); + doDelete("part_id", expiredStats.expiredPartitionId.stream() + .map(String::valueOf).collect(Collectors.toList()), + FeConstants.INTERNAL_DB_NAME + "." + tblName, false); doDelete("id", expiredStats.ids.stream() .map(String::valueOf).collect(Collectors.toList()), FeConstants.INTERNAL_DB_NAME + "." + tblName, false); } - private void doDelete(String/*col name*/ colName, List pred, String tblName, boolean taskOnly) { + private void doDelete(String colName, List pred, String tblName, boolean taskOnly) { String deleteTemplate = "DELETE FROM " + tblName + " WHERE ${left} IN (${right})"; if (CollectionUtils.isEmpty(pred)) { return; @@ -241,7 +244,7 @@ public class StatisticsCleaner extends MasterDaemon { continue; } if (!olapTable.getPartitionIds().contains(Long.parseLong(partId))) { - expiredStats.ids.add(id); + expiredStats.expiredPartitionId.add(Long.parseLong(partId)); } } catch (Exception e) { LOG.warn("Error occurred when retrieving expired stats", e); @@ -256,9 +259,8 @@ public class StatisticsCleaner extends MasterDaemon { Set expiredCatalog = new HashSet<>(); Set expiredDatabase = new HashSet<>(); Set expiredTable = new HashSet<>(); - Set expiredIdxId = new HashSet<>(); - + Set expiredPartitionId = new HashSet<>(); Set ids = new HashSet<>(); public boolean isFull() { @@ -266,6 +268,7 @@ public class StatisticsCleaner extends MasterDaemon { || expiredDatabase.size() >= Config.max_allowed_in_element_num_of_delete || expiredTable.size() >= Config.max_allowed_in_element_num_of_delete || expiredIdxId.size() >= Config.max_allowed_in_element_num_of_delete + || expiredPartitionId.size() >= Config.max_allowed_in_element_num_of_delete || ids.size() >= Config.max_allowed_in_element_num_of_delete; } @@ -274,6 +277,7 @@ public class StatisticsCleaner extends MasterDaemon { && expiredDatabase.isEmpty() && expiredTable.isEmpty() && expiredIdxId.isEmpty() + && expiredPartitionId.isEmpty() && ids.size() < Config.max_allowed_in_element_num_of_delete / 10; } }