>  기사  >  데이터 베이스  >  새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명

새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명

零下一度
零下一度원래의
2017-05-09 12:00:491352검색

개요

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 서버를 확인해주세요. 이벤트 활성화 여부.

이벤트 활성화 여부를 확인하려면 다음 명령을 사용하여 확인하세요.

#方式一
SHOW VARIABLES LIKE &#39;event_scheduler&#39;;
#方式二
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

이벤트 구문

1.이벤트 생성
CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT &#39;comment&#39;]
    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. 이벤트 변경
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 &#39;comment&#39;]
    [DO event_body]

3. 삭제이벤트 구문
DROP EVENT [IF EXISTS] event_name;

이벤트 활용 예시

1. 이벤트 생성

예시 13초마다 테이블 test2 예정
데이터 삽입

create event event_insert_t2
on schedule every 3 second
on completion preserve
do insert into test2(department,time_v) value(&#39;1&#39;,now());

실행 결과


새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명

이벤트 실행 결과

예시 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 &#39;2015-04-17 14:42:00&#39;
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(&#39;1&#39;,NOW());

이벤트 예시 수정

예시 1이벤트 임시 종료

alter event event_insert_t2 disable;

기타 유사한 생성 이벤트입니다.

이벤트 삭제 예시
DROP EVENT IF EXISTS event_insert_t2;

이벤트는 일반 호출과 마찬가지로

저장 프로시저 또는 함수를 호출합니다.

이벤트의 장단점 및 적용 시나리오

  1. 장점

  2. 예정된 작업을 통일적으로 관리 DBA를 사용하면 운영 체제 계층에 배포하지 마세요.

  3. 시스템 관리자의 오작동 위험을 줄입니다.

  4. 차후 관리 및 유지보수에 도움이 됩니다.

  5. 단점

  6. 복잡하고 성능이 요구되는 데이터베이스에 스케줄러를 신중하게 배포하고 활성화합니다.

  7. 과도하게 복잡한 처리는 프로그램을 사용하여 구현하는 것이 더 적합합니다.

  8. 이벤트를 열고 닫으려면 슈퍼유저 권한이 필요합니다.

  9. 적용 시나리오

    정기적인 통계 정보 수집, 정기적인 과거 데이터 삭제, 정기적인 데이터베이스 확인 등에 적합합니다.

[관련 권장 사항]

1.

무료 mysql 온라인 동영상 튜토리얼

2.MySQL 최신 매뉴얼 튜토리얼

3. 불린 교육 Yan Shiba mysql 소개 영상 튜토리얼

위 내용은 새로운 MySQL 기능(이벤트 스케줄러) 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.