30일 이전의 데이터를 삭제하기 위해 구현된 스케줄링 코드에서는 매일 정각 00시 05분에 사용자 기록 데이터를 삭제합니다.
사용자가 게시글, 댓글, 투표, 좋아요 기능을 이용했다면 사용자 기록 데이터는 사용자 별 하나의 데이터를 가지게 됩니다.
즉, 사용자가 100명일 경우 게시글, 댓글, 투표, 좋아요 등 하나의 기능을 이용했다면 최대 100개의 데이터를 삭제해야합니다.
이처럼 매일 정각 00시 05분에는 대량의 데이터를 삭제하게 됩니다.
@Scheduled(cron = "0 5 0 * * *")
public void findByUser() {
LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0)).minusDays(29);
List<UserHistory> userHistories = userHistoryRepository.findByActionDateTimeBefore(localDateTime);
userHistories.stream().forEach(e -> System.out.println(e.getActionDateTime()));
userHistoryRepository.deleteAllById(userHistories.stream().map(e -> e.getId()).toList());
}
@Scheduled(cron = "0 5 0 * * *")
public void findByUser() {
LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0)).minusDays(29);
userHistoryRepository.deleteAllByActionDateTimeBefore(localDateTime);
}
기존 코드
변경 코드