Loading...
MySQL 9.5 Reference Manual 9.5의 27.5.1 Event Scheduler Overview의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL Event는 일정에 따라 실행되는 작업입니다. 따라서 이를 scheduled event라고 부르기도 합니다. Event를 생성할 때, 하나 이상의 SQL 문을 포함하는 이름 있는 데이터베이스 객체를 생성하며, 이 문들은 특정 날짜와 시간에 시작하고 종료되는, 하나 이상의 정기적인 간격에서 실행됩니다. 개념적으로, 이는 Unix의 crontab(“cron job”이라고도 함)이나 Windows Task Scheduler 개념과 유사합니다.
이러한 유형의 스케줄된 태스크는 “temporal trigger”라고 불리기도 하는데, 이는 시간이 흐름에 따라 트리거되는 객체라는 의미를 내포합니다. 이는 본질적으로는 맞지만, 우리는 Section 27.4, “Using Triggers”에서 설명하는 유형의 trigger와 혼동을 피하기 위해 _event_라는 용어를 사용하는 것을 선호합니다. Event는 보다 구체적으로 말하면 “temporary trigger”와 혼동해서는 안 됩니다. Trigger는 특정 테이블에서 발생하는 특정 유형의 event에 응답하여 그 문이 실행되는 데이터베이스 객체인 반면, (scheduled) event는 지정된 시간 간격의 경과에 응답하여 그 문이 실행되는 객체입니다.
SQL Standard에는 event scheduling에 대한 규정이 없지만, 다른 데이터베이스 시스템에는 선례가 있으며, 이러한 구현과 MySQL Server에 구현된 기능 사이에 몇 가지 유사점을 발견할 수 있습니다.
MySQL Event는 다음과 같은 주요 기능과 특성을 가집니다:
MySQL에서 event는 그 이름과 할당된 스키마에 의해 유일하게 식별됩니다.
Event는 일정에 따라 특정 동작을 수행합니다. 이 동작은 SQL 문으로 구성되며, 필요하다면 BEGIN ... END 블록 안에 있는 복합 문일 수 있습니다 (자세한 내용은 Section 15.6, “Compound Statement Syntax” 참조). Event의 타이밍은 one-time 또는 recurrent일 수 있습니다. One-time event는 한 번만 실행됩니다. Recurrent event는 정기적인 간격마다 그 동작을 반복하며, recurring event의 스케줄에는 시작 날짜와 시간, 종료 날짜와 시간을 각각 또는 둘 다, 혹은 둘 다 지정하지 않을 수도 있습니다. (기본적으로 recurring event의 스케줄은 event가 생성되자마자 시작되며, 비활성화되거나 drop될 때까지 무기한 계속됩니다.)
Repeating event가 자신의 스케줄링 간격 내에 종료되지 않으면, 결과적으로 여러 인스턴스가 동시에 실행될 수 있습니다. 이것이 바람직하지 않다면, 동시 인스턴스를 방지하는 메커니즘을 도입해야 합니다. 예를 들어, GET_LOCK() 함수나 row 또는 테이블 잠금을 사용할 수 있습니다.
사용자는 이 목적을 위해 의도된 SQL 문을 사용하여 스케줄된 event를 생성, 수정 및 drop할 수 있습니다. 문법적으로 잘못된 event 생성 및 수정 문은 적절한 오류 메시지와 함께 실패합니다. 사용자는 event의 action에 실제로는 갖고 있지 않은 권한을 요구하는 문을 포함시킬 수 있습니다. 이 경우 event 생성 또는 수정 문은 성공하지만 event의 action은 실패합니다. 자세한 내용은 Section 27.5.6, “The Event Scheduler and MySQL Privileges”를 참조하십시오.
Event의 많은 속성은 SQL 문을 사용하여 설정하거나 수정할 수 있습니다. 이러한 속성에는 event의 이름, 타이밍, 영속성(즉, 스케줄이 만료된 후에도 보존되는지 여부), 상태(enabled 또는 disabled), 수행할 action, 그리고 할당된 스키마가 포함됩니다. 자세한 내용은 Section 15.1.3, “ALTER EVENT Statement”를 참조하십시오.
기본 definer는 event를 생성한 user이며, event가 변경된 경우에는 해당 event에 영향을 미친 마지막 ALTER EVENT 문을 실행한 user가 definer가 됩니다. Event는 해당 event가 정의된 데이터베이스에 대해 EVENT 권한을 가진 어떤 user라도 수정할 수 있습니다. 자세한 내용은 Section 27.5.6, “The Event Scheduler and MySQL Privileges”를 참조하십시오.
27.5 Using the Event Scheduler
27.5.2 Event Scheduler Configuration