개발/데이터베이스

Mysql 배치작업(이벤트)

림쌍월 2020. 11. 4. 09:36

정기적으로 진행이 되어야 하는 작업이 있어서 어플리케이션에서 진행을 할까 하다가

어차피 해야 하는 일이 특정 데이터의 집계를 등록 및 수정을 해야 하는 일이기에

DB 에서 이벤트를 활용하여 진행하기로 결정!!!

 

당연한 말이겠지만 여타 다른 DB 들도 마찬가지 겠지만 시스템이 자체적으로 진행을 하야 하는 배치 업무가 어느단계에서 진행하느냐에 따라서 해당 권한을 가지고 작업을 진행하는 매체를 지정하는 것이 좋을 것 같다.

 

 

DELIMITER $$

ALTER DEFINER=`XXXX`@`%` EVENT `evt_bill` 
ON SCHEDULE EVERY 1 MONTH STARTS '2020-10-01 04:00:00' 
ON COMPLETION NOT PRESERVE ENABLE COMMENT '매달 1일 새벽 04시에 청구서 정보 등록 ( tb_bill )' 
DO CALL sp_calBill(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH) , '%Y%m') , 1 , 1)$$

DELIMITER ;

 

 

설명을 덧하면

evt_bill 이라는 정기적으로 진행이 되는 이벤트를 생성

SCHEDULE EVERY 1 MONTH STARTS '2020-10-01 04:00:00'

위의 부분이 언제 어떻게 주기적으로 실행하는 정보인데

주기는 1달 단위이고 첫 시작은 2020년 10월 1일 04시 기준으로 시작

sp_calBill 이라는 프로시져를 실행하게 된다.