Event Schedule

이재문·2022년 8월 10일
0

사용 목적

우리 서비스에는 알림센터에 무분별하게 쌓이는 알림 데이터가 있다.
각 유저별로 알림 센터에 데이터는 서비스 초기부터 쌓여 있었고, 포맷도 비슷하며 정형화 되어 저장되어있다.
그래서 나는 DB 자원이 무분별하게 사용되고 있다고 판단했고, 이 문제에 대해 생각이 필요했다.

유저에 의하거나(삭제 버튼) 일정 기간이 지났을 때, 자동으로 데이터가 삭제되도록 만들 계획이다.
알림이 삭제된다 해서 원본데이터(채팅 내용, 공지사항 등)이 함께 삭제되는것이 아니기 때문에 충분히 있어야 한다고 판단했고, 일정기간이 지나 삭제를 시키기 위해선 사용자에게 고지가 필요해 알림센터 아래에 문구를 남기도록 진행한다.

처리 방식

처음 나의 생각은 기존에 사용하던 Django-Scheduler로 자정마다 DB에 30일 지난 데이터를 삭제를 하려고 했다.
그리고 든 생각이 'DB에서만 삭제가 되면 되는데 Django에서 시작을 해야하나?' 였고, MySQL에서 Event Schedule로 처리 할 방식을 찾았다.

Code

아래 코드는 create_at 과 현재 시간을 비교하여 한달이 지난 데이터를 삭제 하는 Event이고, 23:59:59분에 시작해서 매일 반복되는 코드이다.

CREATE EVENT IF NOT EXISTS (이벤트 이름)
ON SCHEDULE (반복 주기 or 1회성) (event 시작 시간)
DO
(처리할 SQL)
CREATE EVENT IF NOT EXISTS pleasy_notice_center_auto_destroyer
ON SCHEDULE EVERY 1 DAY STARTS '2022-08-09 23:59:59'
DO
DELETE FROM testtable WHERE create_at <= DATE_ADD(now(), INTERVAL -1 MONTH)
profile
이제부터 백엔드 개발자

0개의 댓글