728x90
MySQL에는 이벤트 스케줄러가 있어서 등록한 이벤트를 주기적으로 실행할 수 있다.
보통 주기적으로 돌려야할 프로시저를 스케줄러에 이벤트로 많이 이용한다.
스케줄러는 event_scheduler 값이 ON 상태가 되어있지 않으면 동작 하지않는다.
쿼리로 쉽게 조회할 수 있고, 클라우드의 RDS라면 콘솔에서 확인이 가능할 것이다.
쿼리로 조회
SHOW variables LIKE 'event%'
쿼리 상태 수정
SET GLOBAL event_scheduler = ON이나 OFF
AWS RDS 경우 RDS 메뉴 > 파라미터 그룹으로 가면 event_scheduler 검색으로 조회할 수 있고 수정도 가능하다.
스케줄러
이벤트 목록 SELECT
SELECT * FROM information_schema.EVENTS
이벤트 삭제
DROP EVENT `이벤트명`
이벤트 스케줄러에 등록
CREATE EVENT IF NOT EXISTS [이벤트 이름]
ON SCHEDULE [이벤트 실행 또는 반복 시간]
STARTS [스케줄 시작 시간]
ENDS [스케줄 종료 시간]
ON COMPLETION NOT PRESERVE ENABLE
COMMENT [코멘트]
DO [실행할 명령문];
IF NOT EXISTS로 이벤트 명이 존재하지 않는 조건을 넣어주었다.
ENDS는 넣지 넣지 않으면 종료하기 전까지 계속 실행한다. 난 주로 안넣는다.
ON COMPLETION NOT PRESERVE은 이벤트 완료 후 삭제 하지 않겠다는 설정이다. 완료 후 삭제하고 싶으면 NOT을 빼면 된다.
ENABLE은 이벤트 활성화 상태를 말한다.
DISABLE이 비활성화다.
등록 예)
CREATE EVENT IF NOT EXISTS 이벤트명
ON SCHEDULE EVERY 1 DAY
STARTS '2021-08-26 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO CALL 프로시저명
STARTS가 시작 기준날짜인데 00:00:00 이므로 매일 0시에 동작할 예정이다.
매일 시작하는 시간을 지정하고 싶을땐 기준시각을 수정해도 되지만
DAY_HOUR을 사용하는 방법도 있다.
CREATE EVENT IF NOT EXISTS 이벤트명
ON SCHEDULE EVERY 1 DAY_HOUR
STARTS '2021-08-26 01:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO CALL 프로시저명
728x90
'DB' 카테고리의 다른 글
Mysql 인덱스에 대해서 (0) | 2022.04.04 |
---|---|
Mysql, MariaDB Incorrect string value 이모티콘 이모지 에러 (2) | 2021.09.27 |
Mysql 문자열 나누기 SUBSTRING, SUBSTRING_INDEX (0) | 2021.09.16 |
MongoDB 설치 - Window (0) | 2020.11.29 |