[MySQL] 이벤트 스케줄러(event scheduler

Mineru·2021년 12월 3일
0
post-custom-banner

상태 확인

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

SHOW processlist;

# id	|user	|Host		|db	|Command	|Time	|State	|Info
# 1	|root	|localhost:?	|test	|Sleep		|17	|	|null
# 2	|root	|localhost:?	|test	|Query		|0	|	|null

설정 변경

SET GLOBAL event_scheduler = 0;
SET GLOBAL event_scheduler = OFF;

SET GLOBAL event_scheduler = 1;
SET GLOBAL event_scheduler = ON;

SHOW processlist;

# id	|user		|Host		|db	|Command	|Time	|State			|Info
# 1	|root		|localhost:?	|test	|Sleep		|17	|			|null
# 2	|root		|localhost:?	|test	|Query		|0	|staring		|show processlist
# 3	|event_scheduler|localhost:?	|null	|Daemon		|0	|Waiting on empty queue	|null

event_scheduler 확인

SELECT * FROM information_schema.events;
-- or
SHOW EVENTS;

-- 등록 스크립트 확인
SHOW CREATE EVENT [scheduleName];

event_scheduler 생성

use [DB_Name];
DROP EVENT IF EXISTS [scheduerName];
DELIMITER $
CREATE EVENT IF NOT EXISTS `[scheduerName]
ON SCHEDULE
  EVERY 1 DAY -- 매일 실행(사용 가능 형식 : SECOND, MINUTE, DAY, MONTH, YEAR)
  STARTS '2021-12-04 00:00:00' -- 지정하지 않을 경우 현재 시간으로부터 5시간 경과 후에 첫 스케줄러가 동작 되고 지정한 경우 지정한 시간 부터 스케줄러가 동작함.
DO
BEGIN
  SELECT * FROM [tableName];
END $
DELIMITER;
use [DB_Name];
DROP EVENT IF EXISTS [scheduerName];
DELIMITER $
CREATE EVENT IF NOT EXISTS `[scheduerName]
ON SCHEDULE
  EVERY 1 DAY -- 매일 실행(사용 가능 형식 : SECOND, MINUTE, DAY, MONTH, YEAR)
  STARTS '2021-12-04 00:00:00' -- 지정하지 않을 경우 현재 시간으로부터 5시간 경과 후에 첫 스케줄러가 동작 되고 지정한 경우 지정한 시간 부터 스케줄러가 동작함.
DO
BEGIN
  CALL [procedureName];
END $
DELIMITER;

event_scheduler 수정

ALTER
	EVENT [scheduerName] ON SCHEDULE EVERY 1 MONTH STARTS '2021-12-03 00:00:00'
    DO
    CALL [procedureName];

event_scheduler 삭제

DROP EVENT [scheduerName];

출처

https://miniweb4u.tistory.com/91
https://devse.tistory.com/80

profile
Daily Coding
post-custom-banner

0개의 댓글