EventScheduler는 MySQL5.1 이후에 추가된 새로운 기능으로, A에 따라 데이터베이스를 설정할 수 있습니다. 사용자 정의 기간은 시간 트리거 로 이해될 수 있는 특정 작업을 트리거하며 는 <a href="http://www.php.cn/wiki/1497.html%EA%B3%BC%20%EC%9C%A0%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4.%20" target="_blank">linux</a>시스템 아래의 작업 스케줄러 crontab 또는 창 아래의 예약된 작업
과 유사합니다. MySQL의 이벤트 스케줄러는 초당 하나의 작업을 실행할 수 있는 반면, 운영 체제의 예약된 작업(예: Linux의 CRON 또는 Windows의 작업 계획)은 분당 하나의 작업만 실행할 수 있다는 점을 언급할 가치가 있습니다. 类似于<a href="http://www.php.cn/wiki/1497.html" target="_blank">linux</a>系统下面的任务调度器crontab,或者类似与window下面的计划任务
이벤트 활성화 여부를 확인하려면 다음 명령을 사용하여 확인하세요.
#方式一 SHOW VARIABLES LIKE 'event_scheduler'; #方式二 SELECT @@event_scheduler; #方式三 SHOW PROCESSLIST; #查看事件状态 SHOW EVENTS;event_scheduler가 켜져 있거나 PROCESSLIST에 event_scheduler 정보가 표시되면 이벤트가 활성화된 것입니다. 꺼짐으로 표시되거나 PROCESSLIST에서 event_scheduler 정보를 볼 수 없는 경우 해당 이벤트가 활성화되지 않았음을 의미하므로 활성화해야 합니다.
방법 1. 동적 매개변수 수정
SET GLOBAL event_scheduler = ON;이 매개변수를 변경하면 즉시 적용됩니다. 그러나 mysql을 다시 시작하면 복원됩니다. 즉, 설정이 다시 시작을 확장할 수 없습니다.
방법 2. 구성 파일을 변경하고 다시 시작 my.cnf의 [mysqld] 섹션에 다음 내용을 추가한 후 mysql을 다시 시작합니다.
event_scheduler=ON;결국 데이터베이스 구성을 수정하려면 권한이 필요합니다.
방법 3: 시작 명령에 직접 “–event_scheduler=1” 추가
mysqld ... --event_scheduler=ON
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] DO event_body; schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
ON SCHEDULE 일정: 실행 시간과 간격을 정의합니다.
ON COMPLETION [NOT] PRESERVE: 이벤트가 한 번 실행되는지 아니면 영구적으로 실행되는지 정의합니다. 기본값은 1회 실행, 즉 NOT PRESERVE입니다.
ENABLE | DISABLE | DISABLE ON SLAVE: 이벤트 생성 후 활성화 여부, 위에서 비활성화 여부를 정의합니다. 슬레이브 서버가 마스터의 생성 이벤트 명령문을 자동으로 동기화하면 DISABLE ON SLAVE가 자동으로 추가됩니다.
COMMENT '댓글': 이벤트를 정의하는
댓글입니다.
ALTER [DEFINER = { user | CURRENT_USER }] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] [DO event_body]
DROP EVENT [IF EXISTS] event_name;
create event event_insert_t2 on schedule every 3 second on completion preserve do insert into test2(department,time_v) value('1',now());실행 결과
예시 210분 후 테스트 테이블 데이터를 지우는 이벤트 생성
CREATE EVENT IF NOT EXISTS event_truncate_test2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE DO TRUNCATE TABLE test2;
예 32015-04-17 14:42에 이벤트 생성: 00 테스트 테이블 데이터 삭제 이벤트
DROP EVENT IF EXISTS event_truncate_test2; CREATE EVENT event_truncate_test2 ON SCHEDULE AT TIMESTAMP '2015-04-17 14:42:00' DO TRUNCATE TABLE test2;
예제 45일 후 3초마다 test2 테이블에 데이터 삽입을 시작하고, 한 달 후 실행을 중지합니다
CREATE EVENT IF NOT EXISTS event_truncate_test2 ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 5 day ENDS CURRENT_TIMESTAMP + INTERVAL 1 month ON COMPLETION PRESERVE DO INSERT INTO test2(department,time_v) VALUES('1',NOW());
예시 1이벤트 임시 종료
alter event event_insert_t2 disable;기타 유사한 생성 이벤트입니다.
DROP EVENT IF EXISTS event_insert_t2;
정기적인 통계 정보 수집, 정기적인 과거 데이터 삭제, 정기적인 데이터베이스 확인 등에 적합합니다.
위 내용은 새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!