MySQL에서 이벤트를 생성할 때는 실행 시점을 지정하는 ON SCHEDULE 절이 반드시 필요합니다. 일정을 지정해야 하는 MySQL 이벤트는 크게 두 가지 종류로 나눌 수 있습니다.
1. 일회성 이벤트(One-time Event)
일회성 이벤트란 특정 시점에 단 한 번만 실행되는 이벤트를 의미합니다. 예약된 작업을 한 번만 수행하고 자동으로 삭제되거나 만료되도록 할 때 유용합니다.
일회성 이벤트를 생성하려면 ON SCHEDULE 절 다음에 아래와 같은 문법을 사용합니다.
AT Timestamp[+INTERVAL]
예를 들어, 특정 날짜의 정확한 시각에 작업을 실행하려면 다음과 같이 작성할 수 있습니다.
AT '2024-12-31 23:59:59'
또한 현재 시간 기준으로 상대적인 시간을 지정하는 것도 가능합니다.
AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
2. 반복 이벤트(Recurring Event)
반복 이벤트란 정해진 시간 간격마다 주기적으로 실행되는 이벤트를 의미합니다. 데이터 백업, 통계 집계, 로그 정리 등 주기적인 유지 관리 작업에 적합합니다.
반복 이벤트를 생성하려면 ON SCHEDULE 절 다음에 아래와 같은 문법을 사용합니다.
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
여기서 각 요소의 의미는 다음과 같습니다.
- EVERY interval: 이벤트가 실행될 반복 주기를 지정합니다. (예: EVERY 1 DAY, EVERY 30 MINUTE)
- STARTS timestamp: 반복이 시작되는 시점을 지정하며, 생략 가능합니다.
- ENDS timestamp: 반복이 종료되는 시점을 지정하며, 생략 시 무기한 반복됩니다.
다음은 매일 새벽 3시에 실행되고 1년 후 종료되는 반복 이벤트의 예시입니다.
EVERY 1 DAY STARTS '2024-01-01 03:00:00' ENDS '2025-01-01 03:00:00'
정리
MySQL 이벤트 스케줄링은 용도에 따라 선택하면 됩니다. 단 한 번만 실행할 작업이라면 AT 키워드로 일회성 이벤트를, 주기적으로 반복해야 하는 작업이라면 EVERY 키워드로 반복 이벤트를 생성하세요. STARTS와 ENDS 옵션을 활용하면 반복 구간을 세밀하게 제어할 수 있어 더욱 유연한 작업 관리가 가능합니다.