고똘이의 IT 개발이야기

안녕하세요.

 

개발을 진행하면서 데이터를 삽입, 수정, 삭제 등의 행위를 수동적으로 해야하는 프로젝트들이 있습니다. 보통의 웹프로젝트의 경우 자바 스케쥴러를 이용하여 처리를 하지만 만약 개발 진행중인 프로젝트의 DB가 MYSQL 기반일 경우 DB기반의 스케쥴러 방식을 소개해 드립니다.

 


- 설명

※ 먼저 현재 이벤트 스케줄러의 상태를 확인하여 주세요.

 소스 참조

1
SHOW VARIABLES LIKE 'event%';

이미지 참조

※ 현재 스케쥴러 이벤트의 상태가 OFF일 경우 아래의 명령어를 이용하여 ON 상태로 변경 해주세요.

 소스 참조

1
SET GLOBAL event_scheduler = ON;

 

※ 스케줄러 기본 설정이 끝났다면 샘플 소스를 가지고 설명 드리겠습니다. 기본적으로 스케줄러 이벤트의 이름을 명시하고 수행 날짜, 시간등을 설정 후 현재 스케줄러의 동작 기능을 코멘트로 작성 후 수행할 동작을 명시하면 됩니다.

소스 참조

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

 

※ 이제 위의 샘플 소스를 가지고 하루에 한번 동작하는 소스에 대해서 설명 드리겠습니다. 아래의 소스를 보시면 하루에 한번 특정 테이블의 데이터를 삭제하는 스케쥴러 입니다.

 

★ 보통 DB기반의 스케쥴러를 이용하여 임시저장 테이블의 데이터를 모두 삭제하는 스케쥴러를 많이 사용한다. 

 소스 참조

1
2
3
4
5
6
7
8
9
10
11
CREATE EVENT 
    IF NOT EXISTS 'templeteTableDelete'
ON SCHEDULE
    EVERY 1 DAY -- 하루에 한번 실행되며 매일 반복됩니다.
ON COMPLETION NOT PRESERVE
    ENABLE
COMMENT '임시저장 테이블 삭제 스케쥴러 입니다.'
    DO 
'DELETE FROM TEST_TABLE'
    END
 
 

 


- 글을 마치며

 

오늘은 MYSQL 스케줄러에 대해서 설명 드렸습니다. 상당히 간단하지만 자주 쓰이지 않는 방식이라 잘 모르시는분들도 계실거 같아서 간단하게 포스팅을 하였습니다.

 

감사합니다.

 


- 추천글

[ DB ] SQL SELECT 쿼리 실행순서 설명 &예제(간단)

[Springboot] 스프링부트 Mybatis 연동방법 & 예제

[springboot] 스프링부트 Mysql 연동 & 예제

[DB] DDL, DML, DCL, TCL 이란? (기초)

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band