MySQL 이벤트(Event)는 사전에 정의된 일정에 따라 자동으로 실행되는 작업을 의미하며, '스케줄 이벤트(scheduled event)'라고도 불립니다. 쉽게 말해 MySQL 이벤트 스케줄러는 백그라운드에서 상시 동작하면서 실행할 이벤트가 있는지 끊임없이 확인하는 프로세스입니다.
MySQL 이벤트는 시간에 의해 실행된다는 점에서 '시간 기반 트리거(temporal trigger)'라고도 합니다. 일반적인 트리거가 테이블의 데이터 변경(INSERT, UPDATE, DELETE 등)에 반응하여 실행되는 것과 달리, 이벤트는 지정된 시각이나 주기에 맞춰 실행된다는 차이가 있습니다.
이벤트는 한 번만 실행되도록 설정할 수도 있고, 정해진 주기마다 반복 실행되도록 설정할 수도 있습니다. 이를 활용하면 다음과 같은 작업을 자동화할 수 있습니다.
- 주기적인 데이터베이스 백업 생성
- 오래되어 더 이상 필요 없는 레코드 삭제
- 보고서 작성을 위한 데이터 집계 및 정리
MySQL 이벤트 생성 문법
CREATE EVENT event_name
ON SCHEDULE schedule
DO
Event_body
구성 요소 살펴보기
- event_name: CREATE EVENT 문 바로 뒤에 반드시 지정해야 하는 이벤트의 이름입니다. 하나의 데이터베이스 안에서는 고유한 이름이어야 합니다.
- schedule: 이벤트가 실행될 시간 또는 주기를 지정하는 부분입니다. 특정 시각에 단 한 번 실행되는 일회성 이벤트일 수도 있고, 매일·매주처럼 반복 실행되는 이벤트일 수도 있습니다.
- Event_body: DO 키워드 뒤에 지정하는 SQL 문들의 집합입니다. 실행해야 할 문장이 여러 개라면 BEGIN…END 블록으로 감싸서 작성할 수 있습니다.
참고로 이벤트 기능을 사용하려면 MySQL 서버에서 이벤트 스케줄러가 활성화되어 있어야 하며, 필요한 경우 SET GLOBAL event_scheduler = ON; 구문으로 활성화할 수 있습니다.