> 데이터 베이스 > MySQL 튜토리얼 > MySQL 이벤트 스케줄러 이벤트 스케줄러 상세 설명

MySQL 이벤트 스케줄러 이벤트 스케줄러 상세 설명

黄舟
풀어 주다: 2016-12-16 11:12:10
원래의
1338명이 탐색했습니다.

이벤트 스케줄러는 MySQL 5.1에 추가된 또 다른 새로운 기능입니다. 이는 운영 체제 작업 스케줄러로만 완료할 수 있는 일부 예약 기능을 대체하여 예약된 작업 스케줄러로 사용할 수 있습니다. 예를 들어, Linux의 crontabe는 분당 한 번씩만 정확하게 실행될 수 있는 반면, MySQL 이벤트 스케줄러는 초당 하나의 작업을 실행할 수 있어 높은 실시간 성능이 필요한 일부 환경에서 매우 실용적입니다.


이벤트 스케줄러는 정기적으로 트리거되고 실행되는 관점에서 "임시 트리거"라고도 할 수 있습니다. 트리거는 특정 테이블에서 생성된 이벤트에 대해서만 일부 명령문을 실행하는 반면, 이벤트 스케줄러는 특정(간격) 시간에 일부 명령문을 실행합니다. 이벤트는 소위 "이벤트 스케줄러"라고 불리는 특정 스레드에 의해 관리됩니다. 이벤트 스케줄러를 활성화한 후 SUPER 권한이 있는 계정은 SHOW PROCESSLIST를 실행하여 이 스레드를 볼 수 있습니다. 전역 변수 event_scheduler의 값을 설정하면 이벤트 스케줄러의 활성화 여부를 동적으로 제어할 수 있습니다.


(root:localhost:)test> SET GLOBAL event_scheduler = ON;(root:localhost:)test> show processlistG***************** ***** ********** 4. 행 ***************************Id: 46147User: event_schedulerHost : localhostdb: NULLCommand: DaemonTime: 1State: Waiting onempt queueInfo: NULL


위와 같이 이 스레드의 소유자는 event_scheduler입니다.


적용 사례


이 사례는 이벤트 스케줄러의 특성을 이용하여 SLAVE가 정상적으로 실행되고 있는지 확인하기 위해 1초마다 저장 프로시저를 호출합니다. SLAVE가 닫히고 0 오류를 무시하고 SLAVE를 다시 시작하십시오.


먼저 저장 프로시저 생성


구분자 //프로시저 `Slave_Monitor`()beginSELECT VARIABLE_VALUE INTO @SLAVE_STATUS FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME='SLAVE_RUNNING';IF ( 'ON' != @SLAVE_STATUS) THENSET GLOBAL SQL_SLAVE_SKip_COUNTER=0;SLAVE START;END IF;end; //delimiter ;

저장 프로시저가 SHOW SLAVE STATUS와 같은 것을 호출할 수 없기 때문입니다. 문으로 인해 정확한 복사 오류 정보 및 오류 코드를 얻을 수 없으며 SLAVE가 중지되는 다양한 상황을 더 이상 처리할 수 없습니다.


다음으로 작업을 생성합니다


CREATE EVENT IF NOT EXISTS `Slave_Monitor`

매 5초마다 스케줄

완료 시 PRESERVE

DO

CALL Slave_Monitor();


작업을 생성하고 5초마다 실행하지만 작업은 대신 유지됩니다. 삭제되었습니다. 물론 이 예의 작업은 수동으로 비활성화하지 않는 한 종료되지 않습니다.


작업 중에 작업을 일시적으로 닫으려면 ALTER EVENT 문을 실행하세요.


(root:localhost:)test> alter event `Slave_Monitor` ON

COMPLETION PRESERVE DISABLE;

(root:localhost:)test> alter event `Slave_Monitor` ON

COMPLETION PRESERVE ENABLE;

그게 다입니다. MySQL 이벤트 스케줄러 이벤트 스케줄러에 대한 설명, 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿