mysql event schedule
spring에서는 quartz, spring scheduler 의 스케쥴러가 있듯이
oracle 에서는 job, mysql 에서는 event schedule 로 스케쥴링을 할 수 있다.
이번 시간에는 mysql의 이벤트 스케쥴러에 대해서 작성하고자 한다.
1. 사전 작업.
event schdule 을 사용하기 위해서는.
1.1 mysql에 접속하여 event schedule이 정상 동작 중인지 체크한다.
show variables like 'event%'; 입력
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;