개요
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下面的计划任务
이벤트 기능이 켜져 있는지 확인
이벤트 기능 사용 시 mysql 버전이 5.1 이상인지 먼저 확인하신 후, mysql 서버를 확인해주세요. 이벤트 활성화 여부.
이벤트 활성화 여부를 확인하려면 다음 명령을 사용하여 확인하세요.
1 2 3 4 5 6 7 8 9 | #方式一
SHOW VARIABLES LIKE 'event_scheduler';
#方式二
SELECT @@event_scheduler;
#方式三
SHOW PROCESSLIST;
#查看事件状态
SHOW EVENTS;
|
로그인 후 복사
event_scheduler가 켜져 있거나 PROCESSLIST에 event_scheduler 정보가 표시되면 이벤트가 활성화된 것입니다. 꺼짐으로 표시되거나 PROCESSLIST에서 event_scheduler 정보를 볼 수 없는 경우 해당 이벤트가 활성화되지 않았음을 의미하므로 활성화해야 합니다.
이벤트 기능 활성화
방법 1. 동적 매개변수 수정
1 | SET GLOBAL event_scheduler = ON;
|
로그인 후 복사
이 매개변수를 변경하면 즉시 적용됩니다. 그러나 mysql을 다시 시작하면 복원됩니다. 즉, 설정이 다시 시작을 확장할 수 없습니다.
방법 2. 구성 파일을 변경하고 다시 시작 my.cnf의 [mysqld] 섹션에 다음 내용을 추가한 후 mysql을 다시 시작합니다.
결국 데이터베이스 구성을 수정하려면 권한이 필요합니다.
방법 3: 시작 명령에 직접 “–event_scheduler=1” 추가
1 | mysqld ... --event_scheduler=ON
|
로그인 후 복사
이벤트 구문
1.이벤트 생성1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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}
|
로그인 후 복사
DEFINER: 이벤트 실행 시 권한을 확인할 사용자를 정의합니다.
ON SCHEDULE 일정: 실행 시간과 간격을 정의합니다.
ON COMPLETION [NOT] PRESERVE: 이벤트가 한 번 실행되는지 아니면 영구적으로 실행되는지 정의합니다. 기본값은 1회 실행, 즉 NOT PRESERVE입니다.
ENABLE | DISABLE | DISABLE ON SLAVE: 이벤트 생성 후 활성화 여부, 위에서 비활성화 여부를 정의합니다. 슬레이브 서버가 마스터의 생성 이벤트 명령문을 자동으로 동기화하면 DISABLE ON SLAVE가 자동으로 추가됩니다.
COMMENT '댓글': 이벤트를 정의하는
댓글입니다.
2. 이벤트 변경1 2 3 4 5 6 7 8 9 | 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]
|
로그인 후 복사
3. 삭제이벤트 구문1 | DROP EVENT [IF EXISTS] event_name;
|
로그인 후 복사
이벤트 활용 예시
1. 이벤트 생성
예시 13초마다 테이블 test2 예정
데이터 삽입
1 2 3 4 | create event event_insert_t2
on schedule every 3 second
on completion preserve
do insert into test2(department,time_v) value('1',now());
|
로그인 후 복사
실행 결과

이벤트 실행 결과
예시 210분 후 테스트 테이블 데이터를 지우는 이벤트 생성
1 2 3 4 | 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 테스트 테이블 데이터 삭제 이벤트
1 2 3 4 5 | 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 테이블에 데이터 삽입을 시작하고, 한 달 후 실행을 중지합니다
1 2 3 4 5 6 | 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이벤트 임시 종료
1 | alter event event_insert_t2 disable;
|
로그인 후 복사
기타 유사한 생성 이벤트입니다.
이벤트 삭제 예시1 | DROP EVENT IF EXISTS event_insert_t2;
|
로그인 후 복사
이벤트는 일반 호출과 마찬가지로
저장 프로시저 또는 함수를 호출합니다.
이벤트의 장단점 및 적용 시나리오
- 장점
- 예정된 작업을 통일적으로 관리 DBA를 사용하면 운영 체제 계층에 배포하지 마세요.
- 시스템 관리자의 오작동 위험을 줄입니다.
- 차후 관리 및 유지보수에 도움이 됩니다.
- 단점
- 복잡하고 성능이 요구되는 데이터베이스에 스케줄러를 신중하게 배포하고 활성화합니다.
- 과도하게 복잡한 처리는 프로그램을 사용하여 구현하는 것이 더 적합합니다.
- 이벤트를 열고 닫으려면 슈퍼유저 권한이 필요합니다.
- 적용 시나리오
정기적인 통계 정보 수집, 정기적인 과거 데이터 삭제, 정기적인 데이터베이스 확인 등에 적합합니다.
[관련 권장 사항]
1.
무료 mysql 온라인 동영상 튜토리얼
2.MySQL 최신 매뉴얼 튜토리얼
3. 불린 교육 Yan Shiba mysql 소개 영상 튜토리얼
위 내용은 새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!