20.4.2 Event Schedule 구성
이벤트는 특별한 이벤트 스케줄러 스레드에서 실행됩니다. 이벤트 스케줄러라고 부르는 경우 실제로는이 스레드를 가리 킵니다. 실행중인 이벤트 스케줄러 스레드와 현재의 상태는 다음의 설명에서와 같이 PROCESS
권한을 보유한 사용자가 SHOW PROCESSLIST
의 출력에서 확인할 수 있습니다.
event_scheduler
글로벌 시스템 변수는 이벤트 스케줄러가 서버에서 유효하며 실행 여부가 결정됩니다. 이것은 다음의 세 가지 값 중 하나를 가지고 각각 다음에 설명하도록 이벤트 일정 설정에 영향을줍니다.
OFF
: 이벤트 스케줄러가 중지되어 있습니다. 이벤트 스케줄러 스레드가 실행되지 않고,SHOW PROCESSLIST
의 출력에 나타나지 않고, 예약 된 이벤트가 실행되지 않습니다.OFF
가event_scheduler
의 기본값입니다.이벤트 스케줄러가 중지 된 경우 (
event_scheduler
가OFF
입니다)event_scheduler
값을ON
으로 설정하여 시작할 수 있습니다. (다음 항목을 참조하십시오.)ON
: 이벤트 스케줄러가 시작되고 이벤트 스케줄러 스레드가 모든 예약 된 이벤트를 실행하고 있습니다.이벤트 스케줄러가
ON
이면 이벤트 스케줄러 스레드는 데몬 프로세스로SHOW PROCESSLIST
의 출력에 나열되어 그 상태는 다음과 같이 표시됩니다.mysql>
SHOW PROCESSLIST\G
*************************** 1. row *************************** Id: 1 User: root Host: localhost db: NULL Command: Query Time: 0 State: NULL Info: show processlist *************************** 2. row *************************** Id: 2 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 3 State: Waiting for next activation Info: NULL 2 rows in set (0.00 sec)이벤트 예약은
event_scheduler
값을OFF
로 설정하여 중지 할 수 있습니다.DISABLED
:이 값은 이벤트 스케줄러를 동작하지 않도록합니다. 이벤트 스케줄러가DISABLED
의 경우 이벤트 스케줄러 스레드는 실행하지 않습니다 (또한SHOW PROCESSLIST
의 출력에 표시되지 않습니다.) 또한 이벤트 스케줄러의 상태는 런타임에 변경할 수 없습니다.
이벤트 스케줄러의 상태가 DISABLED
로 설정되지 않은 경우 ( SET
를 사용하여) event_scheduler
의 ON
과 OFF
를 전환 할 수 있습니다. 이 변수를 설정하면 OFF
로 0
을 ON
에 1
을 사용할 수 있습니다. 따라서 mysql 클라이언트에서 다음 4 가지 방법 문을 사용하여 이벤트 스케줄러를 켤 수 있습니다.
SET GLOBAL event_scheduler = ON; SET @@global.event_scheduler = ON; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1;
마찬가지로, 다음의 4 가지 방법 문을 사용하여 이벤트 스케줄러를 취소 할 수 있습니다.
SET GLOBAL event_scheduler = OFF; SET @@global.event_scheduler = OFF; SET GLOBAL event_scheduler = 0; SET @@global.event_scheduler = 0;
ON
과 OFF
에 해당하는 숫자가 있습니다 만, SELECT
또는 SHOW VARIABLES
에 의해 event_scheduler
에 표시되는 값은 항상 OFF
, ON
또는 DISABLED
중 하나입니다. DISABLED
에 해당하는 수치는 아닙니다. 따라서이 변수를 설정할 때, ON
과 OFF
보통 1
과 0
보다 우선합니다.
전역 변수로 지정하지 event_scheduler
을 설정하려고하면 오류가 발생합니다.
mysql< SET @@event_scheduler = OFF;
ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL
variable and should be set with SET GLOBAL
이벤트 스케줄러를 DISABLED
로 설정할 수는 서버를 시작할 때뿐입니다. event_scheduler
가 ON
또는 OFF
의 경우 런타임에이를 DISABLED
로 설정할 수 없습니다. 또한 이벤트 스케줄러가 시작할 때 DISABLED
로 설정되어있는 경우 런타임에 event_scheduler
의 값으로 변경할 수 없습니다.
이벤트 스케줄러를 해제하려면 다음 두 가지 방법 중 하나를 사용합니다.
서버를 시작할 때 명령 행 옵션으로
--event-scheduler=DISABLED
서버 구성 파일 (Windows 시스템에서
my.cnf
또는my.ini
)에서 서버가 읽을 부분 (예를 들어,[mysqld]
섹션)에 다음 행을 포함합니다.event_scheduler=DISABLED
이벤트 스케줄러를 사용하려면 필요에 따라 --event-scheduler=DISABLED
명령 행 옵션을 사용하지 않고 서버를 다시 시작하거나 서버 구성 파일 event-scheduler=DISABLED
를 포함한 행을 삭제 또는 주석 한 후에 서버를 다시 시작합니다. 또는 서버 시작시 DISABLED
값 대신 ON
(또는 1
) 또는 OFF
(또는 0
)를 사용할 수 있습니다.
event_scheduler
가 DISABLED
로 설정되어있는 경우, 이벤트 조작 문을 실행할 수 있습니다. 이러한 경우에는 경고도 오류가 생성되지 않습니다 (문 자체가 유효하다고합니다). 그러나이 변수를 ON
(또는 1
)로 설정 될 때까지 예약 된 이벤트가 실행되지 않습니다. 이것이 완료되면 이벤트 스케줄러 스레드는 예약 조건이 충족되는 모든 이벤트를 실행합니다.
--skip-grant-tables
옵션을 사용하여 MySQL Server를 시작하면 event_scheduler
가 DISABLED
로 설정되어 명령 행이나 my.cnf
또는 my.ini
파일에 설정된 다른 모든 값을 재정의합니다 ( Bug # 26807).
이벤트의 생성, 수정 또는 삭제하는 데 사용되는 SQL 문은 섹션 20.4.3 "이벤트 구문" 을 참조하십시오.
MySQL 5.6은 INFORMATION_SCHEMA
데이터베이스 EVENTS
테이블을 제공합니다. 이 테이블은 서버에 정의 된 예약 된 이벤트에 대한 정보를 얻기 위해 쿼리 할 수 있습니다. 자세한 내용은 섹션 20.4.4 "이벤트 메타 데이터" 및 섹션 21.7 "INFORMATION_SCHEMA EVENTS 테이블" 을 참조하십시오.
이벤트 예약 및 MySQL 권한 시스템에 대한 자세한 내용은 섹션 20.4.6 "이벤트 스케줄러와 MySQL 권한" 을 참조하십시오.