MySQL Event   MySQL 이벤트, MySQL 이벤트 스케줄러

(2026-02-02)

1. MySQL Event 및 Event Scheduler

  ㅇ Event (이벤트) 이란?  
     - 데이터베이스 내부에서 특정 시각(1회성) 또는 일정 주기(반복) 마다, 
        . 자동으로 SQL 문을 실행하도록 정의한 객체
     - 특징  
        . 운영체제의 cron 과 유사한 기능을, DBMS 내부에서 제공하는 자동 실행 메커니즘
        . 이벤트는, SQL문 직접 실행 또는 저장 프로시저 호출 형태로 실행될 수 있음
     - 용도  :  통계 집계, 주기적 데이터 정리, 로그 삭제, 상태 갱신, 배치성 DB 작업 자동화 등

  ㅇ Event Scheduler 이란?
     - 등록된 이벤트를 실제로 실행하는 DBMS 내부의 백그라운드 스레드
        . 만일, 이벤트 스케줄러가 비활성화(OFF) 되어 있으면,
        . 이벤트 정의가 존재하더라도, 이벤트는 실행되지 않음


2. MySQL Event 및 Event Scheduler 실행 점검

  ㅇ 이벤트 스케줄러 가동 여부 확인  :  SHOW VARIABLES LIKE 'event_scheduler';
     - 결과 값  :  (ON  :  가동 중), (OFF  :  비 가동), (DISABLED  :  서버 설정상 사용 불가)
  ㅇ 서버 기동 시 이벤트 스케줄러 자동 가동 설정 
     - (my.ini 또는 my.cnf 파일 내)  :  [mysqld] event_scheduler = ON
        . DB 서버 기동 시  :  이벤트 스케줄러 스레드가 자동으로 생성됨
        . 해당 설정이 없다면,  :  수동으로 ON 하더라도, 서버 재기동 후에 다시 OFF 상태로 원위치됨
  ㅇ 시스템 변수에 의한 이벤트 스케줄러 제어  :  SET GLOBAL event_scheduler = ON;
     - 영구 적용을 위해서는 설정 파일 (my.ini 또는 my.cnf 파일 내) 수정 필요

  ㅇ 현재 등록된 이벤트 확인  :  SHOW EVENTS;
     - 주요 확인 항목  :  이벤트명, 상태 (ENABLED / DISABLED), 이벤트 유형, 실행 주기 또는 시각
  ㅇ 이벤트 실행 이력 확인  :  INFORMATION_SCHEMA.EVENTS 테이블 내 LAST_EXECUTED 칼럼
     - (SELECT EVENT_NAME,STATUS,LAST_EXECUTED FROM information_schema.EVENTS;)
        . LAST_EXECUTED  :  이벤트가 마지막으로 실행된 시각으로,
           .. 반복 이벤트의 정상 동작 여부 판단에 활용됨 

  ㅇ 이벤트 생성 例) 
       
DROP EVENT IF EXISTS periodic_stat;

CREATE EVENT 이벤트명
    ON SCHEDULE
        EVERY 30 MINUTE            -- 매 30분 마다
          -- 1회 만 실행의 경우에는, 
          -- EVERY 절 대신에. => AT 절을 사용 함
	STARTS CURRENT_TIMESTAMP   -- 현재 시각(CURRENT_TIMESTAMP)부터 시작 함
          -- 또는, SRART '2018-05-15 00:00:00' END '2018-05-15 02:00:00' 처럼
          -- 직접적으로 시작 끝의 시각을 명시하는 것도 가능
          -- 또는, STARTS '2019-04-08 19:30:00' ENABLE 처럼
          -- 시작 시각을 명시하고 그 시각부터 주기적으로 시행하는 것도 가능
    DO
	CALL 함수명();             -- 별도수행 함수에 의한 호출 실행
          -- 단지 1개 쿼리문 또는 별도 프로시저 실행
          -- 또는 BEGIN ~ END에 의한 복합절도 가능
※ [참고] Event 관련 실행 권한 : (DEFINER) - 이벤트, 프로시저, 함수 등은, DEFINER로 지정된 계정의 권한으로 실행됨 . 즉, 이벤트, 프로시저, 함수 등 DB 객체는, DEFINER로 지정된 계정의 권한을 기준으로 실행됨 - DEFINER는, 객체 생성 시 함께 지정되며, 실행 시점에는 호출 사용자와 무관하게, . DEFINER 계정의 권한이 적용됨 - DEFINER 형식 : 사용자명@호스트명 * 만일, DEFINER 계정이 존재 않거나, 권한이 제한된 경우에, 해당 객체의 실행이 제한됨

▷ MySQL
1. MySQL   2. 마리아 DB   3. MySQL 서버   4. MySQL 저장 루틴   5. MySQL 백업   6. MySQL 계정   7. MySQL 활용 (기타)   8. MySQL 함수   9. Prepare 문   10. MySQL 이벤트   11.
▷MySQL 변수,타입,문자셋
  12.
▷MySQL 저장
 
용어해설 종합 (단일 페이지 형태)

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]