[DB] 이벤트 설정, 생성, 삭제

반응형

 

From Pixabay memed_nurrohmad's Image

Contents

     

    1. 배경

    DB의 특정 테이블에 대해, 특정 동작을 원하는 주기마다 실행시키고 싶은 경우가 있습니다. 예를 들어, send_mail_volume이라는 테이블에서 특정 컬럼을 매일 12:00 AM에 0으로 초기화하고 싶은 경우에, Event를 등록하여 쉽게 처리할 수 있습니다.

     

    2. 예시와 함께 설명

    1) 이벤트 스케쥴러 켜기

    SET GLOBAL event_scheduler = ON;

    이벤트 스케쥴러는 보통 디폴트로 꺼져있는 경우가 많기 때문에 따로 켜줍니다.

    * 출력

     

    2) 이벤트 스케쥴러 켜졌는지 확인

    SHOW VARIABLES WHERE variable_name = 'event_scheduler';

    이벤트 스케쥴러가 정상적으로 켜져 있는지 확인합니다. Value 칼럼에 ON이라고 쓰여있으면, 이벤트 스케쥴러가 정상적으로 켜진 것입니다.

    * 출력

     

    3) 이벤트 등록

    CREATE EVENT IF NOT EXISTS send_mail_volume_init
        ON SCHEDULE
            EVERY 1 DAY   -- Event 실행 주기
            STARTS ' 2022-04-29 00:00:00' -- Event 최초 시작 시간
        DO
          UPDATE send_mail_volume SET send_count = 0; -- Event에서 수행할 명령어

    send_mail_volume_init라는 이벤트를 등록해줍니다. 22년 4월 29일 오전 12시부터 매일(1 DAY) 오전 12시에 send_mail_volume이라는 테이블의 send_count 칼럼을 모두 0으로 초기화하는 이벤트입니다.

     

    4) 이벤트 출력

    SHOW EVENTS;

    DB에 등록된 이벤트를 모두 보여줍니다. Interval field 컬럼을 통해 어느 주기로 실행되는 이벤트인지 확인할 수 있고, Starts 컬럼을 통해 언제 시작한 이벤트인지, Status 컬럼을 통해 현재 실행되고 있는 이벤트인지를 확인할 수 있습니다.

    * 출력

    5) 이벤트 정보 출력

    SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'send_mail_volume_init';

    위에서 생성한 send_mail_volume_init 이벤트의 세부 내용을 확인할 수 있습니다. EVENT_DEFINITION칼럼을 통해 이벤트로 어떤 쿼리가 실행되는지 확인할 수 있으며, LAST_EXECUTED 컬럼을 통해 마지막으로 해당 이벤트가 수행된 시간을 확인할 수 있습니다.

    * 출력

     

    6) 이벤트 삭제

    DROP EVENT send_mail_init;

    send_mail_init이라는 이벤트를 삭제하는 쿼리입니다. 실행하면, 해당 이벤트가 삭제됩니다.

     

     

    3. 결론

    이벤트 스케쥴러 사용하면, DB table을 일정 주기로 자유롭게 쿼리를 통해 갱신할 수 있습니다. 위의 예시처럼 특정 테이블의 특정 칼럼을 매일 오전 12:00시에 0으로 초기화하는 이벤트를 등록할 수 있습니다. 

     

    다음에 더 좋은 글로 찾아오겠습니다.
    읽어주셔서 감사합니다.

     

    Reference
    1. https://plein-de-verite.tistory.com/217
    2. https://sourcenote.tistory.com/149
    반응형

    'DataBase > SQL' 카테고리의 다른 글

    [DB SQL] 중복제거 (DISTINCT)  (0) 2021.08.25
    [DB SQL] 정렬 (ORDER BY)  (0) 2021.08.24
    [DB SQL] Select문 : 데이터 읽기  (0) 2021.08.23

    댓글

    Designed by JB FACTORY