diff --git a/fe/fe-core/src/main/java/com/starrocks/common/Config.java b/fe/fe-core/src/main/java/com/starrocks/common/Config.java index f73dd5e05a34b..53362dde915b8 100644 --- a/fe/fe-core/src/main/java/com/starrocks/common/Config.java +++ b/fe/fe-core/src/main/java/com/starrocks/common/Config.java @@ -2040,6 +2040,9 @@ public class Config extends ConfigBase { @ConfField public static long statistic_dict_columns = 100000; + @ConfField + public static int dict_collect_thread_pool_size = 16; + /** * The column statistic cache update interval */ diff --git a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/CacheDictManager.java b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/CacheDictManager.java index 62fe42ad6bdbf..6ee54e8eefedc 100644 --- a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/CacheDictManager.java +++ b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/statistics/CacheDictManager.java @@ -25,6 +25,7 @@ import com.starrocks.common.Config; import com.starrocks.common.Pair; import com.starrocks.common.Status; +import com.starrocks.common.ThreadPoolManager; import com.starrocks.memory.MemoryTrackable; import com.starrocks.qe.ConnectContext; import com.starrocks.server.GlobalStateMgr; @@ -54,7 +55,7 @@ public class CacheDictManager implements IDictManager, MemoryTrackable { public static final Integer LOW_CARDINALITY_THRESHOLD = 255; - private CacheDictManager() { + public CacheDictManager() { } private static final CacheDictManager INSTANCE = new CacheDictManager(); @@ -107,6 +108,8 @@ public CompletableFuture> asyncReload( private final AsyncLoadingCache> dictStatistics = Caffeine.newBuilder() .maximumSize(Config.statistic_dict_columns) + .executor(ThreadPoolManager.newDaemonCacheThreadPool(Config.dict_collect_thread_pool_size, "cache-dict", + false)) .buildAsync(dictLoader); private Optional deserializeColumnDict(long tableId, ColumnId columnName, TStatisticData statisticData) {