MariaDB 자동 삭제 / 이메일 인증코드 전송 후 자동 삭제
우선 로그인 페이지를 아래와 같이 구현했다.
사용자가 이메일을 입력 후 전송하기 버튼을 클릭하면 해당 이메일로 인증번호가 발송된다.
인증 코드의 유효시간은 1분으로 설정했고, 이에 따라 DB에서도 1분 뒤에 자동적으로 삭제되게끔 설정해놨다.
우선 입력한 이메일에 인증번호가 도착했고
동시에 아래와 같이 DB에도 insert 된 것을 확인할 수 있다.
1분 뒤에 아래와 같이 확인해봤다. delet를 하지 않았지만, 자동적으로 삭제된 것을 볼 수 있다.
우선, 이를 구현하기 위해 이벤트 스케쥴러(Event Scheduler)에 대해서 알아보도록 하자.
DB를 사용할 때, 소량의 데이터를 CRUD하는 것은 큰 문제가 되진 않지만 대량의 데이터를 처리해야 하는 경우, 시간과 쿼리문을 미리 지정해두면 일정 시간에 지정된 쿼리문을 실행시키는 기능이 있다.
우선 이벤트 설정상태를 확인해보자. 초기에는 이벤트 스케쥴러의 value값이 OFF로 설정되어 있다.
show variables like 'event%';
OFF라면 ON으로 변경해주자.
set global event_scheduler=on;
이제 이벤트 스케쥴러를 사용할 준비는 완료했다.
우선, 우리가 할 것은 아래와 같이 생각을 해보자
1. 이벤트의 이름은?
2. Event 실행 주기는?
3. Event 최초 시작 시간은 언제로?
4. 실행할 쿼리문은?
필자는 아래와 같이 설정했다.
- 이벤트 이름은 mailSender_delete_event
- 1분마다 실행하고,
- 현재는 2022년 12월 30일 이지만, 2022년 12월 21일 기준으로 최초 실행하는 걸,
- 테이블명 mailsender의 s_date 컬럼을 삭제하는데 현재 기준으로 1분을 뺏을 때가 발송 시점보다 크다면 그 데이터는 삭제한다.
응용을 위해서 아래 추가 정보를 작성하고 마무리하겠다.
- 반복주기
{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
- 이벤트가 잘 생성되었는지 확인
show events;
- 이벤트가 마지막으로 실행된 시점 확인
SELECT last_executed FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = '이벤트 명';
- 이벤트 삭제
drop event 이벤트 명;
select * from information_schema.EVENTS;
참고 사이트
[MariaDB] EVENT 스케줄러 사용하여 쿼리 자동 반복 실행하기
MariaDB 테이블의 특정 필드값에 대해 어떤 조건이 충족하는 경우 주기적으로 삭제 처리하는 작업을 위하여 자동으로, 그리고 주기적으로 쿼리를 실행하는 방법이 필요하여 EVENT Scheduler 기능을 이
plein-de-verite.tistory.com
[MariaDB(마리아디비)] 이벤트 스케쥴러(Event Scheduler)로 지정한 시간에 자동 insert/delete 하기
DB를 사용할 때, 소량의 데이터를 직접 CRUD 하는 것은 큰 문제가 아니다. 그러나 대량의 데이터를 ...
blog.naver.com
MariaDB / Query / EVENT / 만들기, 수정하기, 삭제하기
EVENT를 사용하기 위한 설정 방법 1 50-server.cnf에 다음 코드를 추가하고 MariaDB를 다시 시작한다. 영구적으로 적용된다. event_scheduler = ON 방법 2 다음과 같이 설정한다. 단, MariaDB를 다시 시작하면 OFF
www.codingfactory.net