개발자가 되고 싶은 1人

mysql event schedule 본문

프로그래밍/Database

mysql event schedule

인생을 노트하자 2021. 12. 20. 15:35

spring에서는 quartz, spring scheduler 의 스케쥴러가 있듯이 

 

oracle 에서는 job, mysql 에서는 event schedule 로 스케쥴링을 할 수 있다.

 

이번 시간에는 mysql의 이벤트 스케쥴러에 대해서 작성하고자 한다.

 


1. 사전 작업.

event schdule 을 사용하기 위해서는.

 

1.1 mysql에 접속하여 event schedule이 정상 동작 중인지 체크한다.

 

show variables like 'event%'; 입력

위 이미지는 value가 ON 으로 나와 있지만 별다른 세팅을 하지 않은 경우 OFF 로 나와있을 것

 

 

1.2 my.cnf 파일을 찾아서

event-scheduler = 1 또는

event-scheduler = ON 와 같이 입력하고 mysql을 재시작 한다.

 

 

2. event 작성 기본 SQL 을 통하여 이벤트 스케쥴러 생성

 

2.1 기본 SQL 문은 다음과 같다.

/* SQL */

CREATE EVENT [IF NOT EXISTS] 이벤트명

ON SCHEDULE 스케줄

[ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT '주석']

DO [BEGIN] 실행할 sql; [실행할 sql];

[END]

 

2.2 세부 설정으로는

 

① 시간설정 ( 매일)

ex) 매일 : EVERY 1 DAY,

     10분마다 : EVERY 10 MINUTE,

     

② 시간설정(특정 시간)

ex) 한번만 : AT '2021-12-20 13:40:11' -- 2021-12-20 13:40:11 시간에 1번 실행

 

 

3. 적용 예시

 

create definer = root@`%` event UPDATE_LOGIN_TYPE on schedule
    every '1' MINUTE
        starts '2021-12-05 10:10:00'
    on completion preserve
    enable
    comment 'UPDATE_LOGIN_TYPE'
    do
    BEGIN

        UPDATE test
        SET LOGIN_type = 20

        WHERE 1=1
          AND LOGIN_type = 10
          AND UNIX_TIMESTAMP(UPDATED_AT) < UNIX_TIMESTAMP(NOW());
END;
Comments