[improvement](statistics)Stop analyze quickly after user close auto analyze. #29809

This commit is contained in:
Jibing-Li
2024-01-12 16:36:28 +08:00
committed by yiguolei
parent 9d3a017706
commit 1dc0c74ad9
2 changed files with 90 additions and 7 deletions

View File

@ -59,24 +59,32 @@ public class StatisticsAutoCollector extends StatisticsCollector {
@Override
protected void collect() {
if (!StatisticsUtil.inAnalyzeTime(LocalTime.now(TimeUtils.getTimeZone().toZoneId()))) {
analysisTaskExecutor.clear();
return;
}
if (StatisticsUtil.enableAutoAnalyze()) {
if (canCollect()) {
analyzeAll();
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
private void analyzeAll() {
protected boolean canCollect() {
return StatisticsUtil.enableAutoAnalyze()
&& StatisticsUtil.inAnalyzeTime(LocalTime.now(TimeUtils.getTimeZone().toZoneId()));
}
protected void analyzeAll() {
List<CatalogIf> catalogs = getCatalogsInOrder();
for (CatalogIf ctl : catalogs) {
if (!canCollect()) {
analysisTaskExecutor.clear();
break;
}
if (!ctl.enableAutoAnalyze()) {
continue;
}
List<DatabaseIf> dbs = getDatabasesInOrder(ctl);
for (DatabaseIf<TableIf> databaseIf : dbs) {
if (!canCollect()) {
analysisTaskExecutor.clear();
break;
}
if (StatisticConstants.SYSTEM_DBS.contains(databaseIf.getFullName())) {
continue;
}
@ -109,6 +117,10 @@ public class StatisticsAutoCollector extends StatisticsCollector {
List<AnalysisInfo> analysisInfos = constructAnalysisInfo(databaseIf);
for (AnalysisInfo analysisInfo : analysisInfos) {
try {
if (!canCollect()) {
analysisTaskExecutor.clear();
break;
}
analysisInfo = getReAnalyzeRequiredPart(analysisInfo);
if (analysisInfo == null) {
continue;