Skip to content

Commit f460d70

Browse files
committed
delete standard_statistics by step
1 parent 8545cad commit f460d70

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

cachecloud-open-web/src/main/java/com/sohu/cache/dao/InstanceStatsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@ public List<StandardStats> getDiffJsonList(@Param("beginTime") long beginTime, @
3434

3535
public int deleteStandardStatsByCreatedTime(@Param("createdTime") Date createdTime);
3636

37+
public int deleteStandardStatsByScanTime(@Param("startTime") Date startTime,@Param("endTime") Date endTime);
38+
3739
public List<StandardStats> getStandardStatsByCreateTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime, @Param("dbType") String dbType);
3840
}

cachecloud-open-web/src/main/java/com/sohu/cache/stats/instance/impl/InstanceStatsCenterImpl.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
import org.apache.commons.collections4.MapUtils;
1616
import org.apache.commons.lang.BooleanUtils;
1717
import org.apache.commons.lang.StringUtils;
18+
import org.apache.commons.lang.time.DateUtils;
1819
import org.slf4j.Logger;
1920
import org.slf4j.LoggerFactory;
2021
import org.springframework.util.Assert;
2122

23+
import java.text.SimpleDateFormat;
2224
import java.util.*;
25+
import java.util.concurrent.TimeUnit;
2326

2427
/**
2528
* Created by yijunzhang on 14-9-17.
@@ -258,12 +261,32 @@ public List<Map<String, Object>> queryDiffMapList(long beginTime, long endTime,
258261

259262
@Override
260263
public void cleanUpStandardStats(int day) {
261-
Calendar calendar = Calendar.getInstance();
262-
calendar.setTime(new Date());
263-
calendar.add(Calendar.DAY_OF_MONTH, -Math.abs(day));
264-
Date deleteTime = calendar.getTime();
265-
int deleteCount = instanceStatsDao.deleteStandardStatsByCreatedTime(deleteTime);
266-
logger.warn("cleanUpStandardStats: {} day deleteCount={}", day, deleteCount);
264+
try {
265+
SimpleDateFormat minSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
266+
SimpleDateFormat hourSdf = new SimpleDateFormat("yyyy-MM-dd HH");
267+
// 基准时间
268+
Date baseTime = DateUtils.addDays(hourSdf.parse(minSdf.format(new Date())), 0 - day);
269+
Date startTime = null; //删除开始时间
270+
Date endTime = null; //删除结束时间
271+
int mins = 24 * 60 * (day - 1); //天换算分钟数,保留一天数据
272+
int perMin = 10; //每10分钟区间做一次删除
273+
long beginTime = System.currentTimeMillis();
274+
for (int count = 1; count <= mins / perMin; count++) {
275+
startTime = DateUtils.addMinutes(baseTime, perMin * (count - 1));
276+
endTime = DateUtils.addMinutes(baseTime, perMin * count);
277+
long startMills = System.currentTimeMillis();
278+
instanceStatsDao.deleteStandardStatsByScanTime(startTime, endTime);
279+
logger.warn("execute delete task cost:{} ms ,time :{},{}", System.currentTimeMillis() - startMills, minSdf.format(startTime), minSdf.format(endTime));
280+
try {
281+
TimeUnit.MILLISECONDS.sleep(10);
282+
} catch (InterruptedException e) {
283+
logger.error(e.getMessage(), e);
284+
}
285+
}
286+
logger.info("cleanUpStandardStats total costTime =" + (System.currentTimeMillis() - beginTime) / 1000 + " s");
287+
} catch (Exception e) {
288+
logger.error(e.getMessage(), e);
289+
}
267290
}
268291

269292
public void setInstanceDao(InstanceDao instanceDao) {

cachecloud-open-web/src/main/resources/mapper/InstanceStatsDao.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
from standard_statistics
8181
where <![CDATA[ created_time <= #{createdTime}]]>
8282
</delete>
83+
84+
<delete id="deleteStandardStatsByScanTime">
85+
DELETE FROM standard_statistics
86+
where created_time BETWEEN #{startTime} AND #{endTime}
87+
</delete>
8388

8489
<select id="getStandardStatsByCreateTime" resultType="StandardStats">
8590
select id,collect_time,ip,port,db_type,info_json,diff_json,cluster_info_json,created_time

0 commit comments

Comments
 (0)