Skip to content

Commit 6de439c

Browse files
committed
feat: add scheduled task to remove data older than 3 months and vacuum the database at 3 AM daily.
1 parent 80cb9b5 commit 6de439c

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/main/java/com/jeremiz/monitor/HistoryDataService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,19 @@ public static Map<String, Object> getFromDatabase(String metricType, String time
155155
cache.put(cacheKey, new CacheItem(response));
156156
return response;
157157
}
158+
159+
// 定时任务,每天凌晨3点执行数据清理和数据库压缩
160+
@Scheduled(cron = "0 0 3 * * *")
161+
public void removeOldData() {
162+
String deleteSql = "DELETE FROM metrics WHERE timestamp < datetime('now', '-3 months')";
163+
164+
try (Connection conn = DriverManager.getConnection(DB_URL);
165+
Statement stmt = conn.createStatement()) {
166+
int deletedRows = stmt.executeUpdate(deleteSql);
167+
stmt.execute("VACUUM"); // 执行 VACUUM 整理压缩数据库
168+
logger.info("Old data cleanup and vacuum completed, deleted {} rows.", deletedRows);
169+
} catch (SQLException e) {
170+
logger.error("Error during old data cleanup or vacuum", e);
171+
}
172+
}
158173
}

0 commit comments

Comments
 (0)