개발로 자기계발
728x90

예를 들어, 매일 밤 12시에 특정 테이블의 데이터를 정리하도록 설정할 수 있다.

다음은 MySQL 이벤트를 생성하고 사용하는 기본적인 방법이다.

 

1단계: Event Scheduler를 활성화 한다.

이벤트 스케줄러는 MySQL 서버에 기본적으로 내장된 구성 요소로서, 이벤트를 실행하는 데 사용된다. 다음 명령어로 이벤트 스케줄러를 활성화 할 수 있다.

SET GLOBAL event_scheduler = ON;

2단계: Event 생성

다음은 매일 밤 12시에 'old_data' 테이블에서 30일 이전의 데이터를 삭제하는 이벤트를 생성하는 예:

CREATE EVENT ev_daily_delete
ON SCHEDULE EVERY 1 DAY
  STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY)
DO 
DELETE FROM old_data WHERE created_at < DATE(NOW() - INTERVAL 30 DAY);

이 이벤트의 세부 사항은 다음과 같다:


ev_daily_delete: 이벤트의 이름이다.
ON SCHEDULE EVERY 1 DAY: 이 이벤트가 매일 실행되도록 스케줄을 설정한다.
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY): 이 이벤트가 처음으로 실행되는 시간을 설정한다. 이 경우에는 다음 날 12시(정오)
DO DELETE FROM old_data WHERE created_at < DATE(NOW() - INTERVAL 30 DAY): 이 이벤트가 실행될 때 수행되는 작업이다. 여기서는 'old_data' 테이블에서 30일 이전의 데이터를 삭제한다.

3단계: 이벤트 확인

다음 SQL 명령을 사용하여 현재 데이터베이스의 모든 이벤트를 확인할 수 있다.

SHOW EVENTS;
SELECT * FROM information_schema.EVENTS;
  • 출력되는 표중에 LAST_EXECUTED 는 마지막 이벤트가 실행 된 시간을 이야기한다.

4단계: 이벤트 수정

이벤트를 수정하려면 'ALTER EVENT' 명령을 사용한다. 예를 들어, 위에서 생성한 'ev_daily_delete' 이벤트를 매일 아침 1시에 실행되도록 변경할 수 있다.

ALTER EVENT ev_daily_delete
ON SCHEDULE EVERY 1 DAY
  STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR);

5단계: 이벤트 삭제

이벤트를 삭제하려면 'DROP EVENT' 명령을 사용한다.

DROP EVENT IF EXISTS ev_daily_delete;

 

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)