안녕하세요.


MySQL 5.1 버전이상의 정기적인 예약 작업 수행을 할수있는 이벤트 스케줄러에 대해 포스팅해보겠습니다.


이벤트 스케줄러는 말그대로 특정 이벤트를 자동으로 정기적으로 수행시킬수 있습니다.


예를들어 '특정 UPDATE문을 2018년 11월 2일 15시 36분 03초에 시켜줘' 라고 등록을 해놓으면 DB가 자동으로 일을 수행하게됩니다.


이벤트 스케줄러 생성 하기 


먼저 기본 문법에 대해 보겠습니다.


1
2
3
4
5
6
7
8
9
CREATE EVENT IF NOT EXISTS [이벤트 이름]
    ON SCHEDULE
        [수행, 반복 할 시간]
    ON COMPLETION NOT PRESERVE
    ENABLE
    COMMENT [코멘트]
    DO 
    [수행할 명령]
END
cs


[이벤트 이름]  : 해당 이벤트 스케줄의 이름을 정해주어야 합니다.

[수행, 반복 할 시간] : 해당 명령을 수행하거나 반복할 시간 및 기간을 정해주면 됩니다.

[코멘트] : 해당 이벤트의 내용을 입력해주시면 됩니다.

[수행할 명령] : 해당 이벤트의 시간의 수행할 명령을 입력하면 됩니다.





[수행, 반복 할 시간] 설정하기

 


1
2
3
4
5
6
7
8
9
CREATE EVENT IF NOT EXISTS [이벤트 이름]
    ON SCHEDULE
       AT '2018-11-02 13:40:13' -- 특정 시간에 1회 실행
    ON COMPLETION NOT PRESERVE
    ENABLE
    COMMENT [코멘트]
    DO 
    [수행할 명령]
END
cs

특정 시간에 1회 명령을 실행 하려면 'AT [시간]'을 사용해줍니다.

1
2
3
4
5
6
7
8
9
10
CREATE EVENT IF NOT EXISTS [이벤트 이름]
    ON SCHEDULE
       EVERY 1 DAY -- 하루 한번 반복
    ON COMPLETION NOT PRESERVE
    ENABLE
    COMMENT [코멘트]
    DO 
    [수행할 명령]
END
 

cs


특정 날짜 기간에 명령을 반복 실행 하려면 'EVERY [기간, 시간]'을 사용해줍니다.

(기간, 시간은 YEAR, QUATER, MONTH, DAY, HOUR, MINUTE, WEEK, SECOND 등 사용 할 수 있습니다.)


1
2
3
4
5
6
7
8
9
10
11
CREATE EVENT IF NOT EXISTS [이벤트 이름]
    ON SCHEDULE
           EVERY 1 DAY STARTS '2018-11-02 13:32:55' ENDS '2018-11-03 13:32:55'
           -- 하루 한번 11월 2일 13:32:55 부터 11월 3일 13:32:55까지만 실행
    ON COMPLETION NOT PRESERVE
    ENABLE
    COMMENT [코멘트]
    DO 
    [수행할 명령]
END
 
cs


특정 날짜 기간에 시작일 종료일을 지정 할 수 있습니다.

(하루 한번 반복하는것을 [언제 시작할것인가, 언제 끝낼것인가])

언제 시작하는지 알리는 STARTS구문만 사용하여도 문제가 없습니다.





ON COMPLETION NOT PRESERVE ENABLE



해당 설정은 이벤트를 수행후 삭제 여부를 설정합니다.


만약, 이벤트를 수행후 이벤트를 삭제하지 않는다면 'NOT'을 제거 해주시면 됩니다.

(ON COMPLETION PRESERVE ENABLE)




샘플 (SAMPLE) 



1
2
3
4
5
6
7
8
9
CREATE EVENT IF NOT EXISTS '테스트'
    ON SCHEDULE
           EVERY 1 DAY
    ON COMPLETION NOT PRESERVE
    ENABLE
    COMMENT '테스트 입니다.'
    DO 
    INSERT INTO TEST_TABLE ('TEST1''TEST2'VALUES ('테스트', NOW())
END
cs

샘플 구문을 해석 해보겠습니다.

'테스트' 라는 이벤트를 생성하며 내용은 '테스트 입니다.' 입니다.

실행완료시 해당 이벤트를 삭제를 진행하며, 매일 1회 INSERT 문으로 TEST데이터를 집어넣습니다.

(실행 되는 시간은 이벤트 생성 즉시 생성되는 시간 입니다.)


반응형

+ Recent posts