>  기사  >  데이터 베이스  >  예제를 통해 mysql이 예약된 작업을 구현하는 방법 설명

예제를 통해 mysql이 예약된 작업을 구현하는 방법 설명

王林
王林앞으로
2020-01-21 20:31:112105검색

예제를 통해 mysql이 예약된 작업을 구현하는 방법 설명

MySQL 5.1.6부터 매우 독특한 기능인 이벤트 스케줄러가 추가되었습니다. 이 기능은 정기적으로 특정 특정 작업(예: 레코드 삭제, 데이터 요약, 데이터 백업 등)을 수행하는 데 사용할 수 있습니다. 운영 체제의 예약된 작업으로만 수행할 수 있는 작업을 대체합니다.

더 언급할 가치가 있는 점은 MySQL의 이벤트 스케줄러는 매초 하나의 작업을 실행할 수 있는 반면, 운영 체제의 예약된 작업(예: Linux의 cron 또는 Windows의 작업 일정)은 매분 하나의 작업만 실행할 수 있다는 것입니다. 높은 실시간 데이터(예: 주식, 배당률, 점수 등)가 필요한 일부 애플리케이션에 매우 적합합니다.

이벤트 스케줄러는 특정 작업을 수행하기 위해 특정 기간을 기반으로 트리거되는 반면, 트리거는 특정 테이블에서 생성된 이벤트를 기반으로 트리거되기 때문에 임시 트리거라고도 합니다. 예, 차이점은 여기에 있습니다.

1. 켜져 있는지 확인하세요

> show variables like 'event_scheduler';

2. 이벤트 스케줄러를 켭니다

set global event_scheduler = on;

여기 설정은 mysql이 재시작되면 자동으로 꺼집니다. 항상 활성화해야 하는 경우 my.ini에서 다음과 같이 구성해야 합니다.

(권장 학습 비디오 튜토리얼: mysql 비디오 튜토리얼)

event_scheduler = on

3. 이벤트 구문 생성

CREATE EVENT [IF NOT EXISTS ] event_name
ON SCHEDULE schedule
[ ON COMPLETION [ NOT ] PRESERVE ]
[ ENABLE | DISABLE ]
[ COMMENT '注释' ]
DO SQL语句;
  
schedule : AT TIMESTAMP [+ INTERVAL interval ] | EVERY interval [ STARTS TIMESTAMP ] [ ENDS TIMESTAMP ]
interval : quantity { YEAR | QUARTER | MONTH | DAY |
           HOUR | MINUTE | WEEK | SECOND |
           YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
           HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }

event_name: 이벤트 이름, 최대 길이는 64자입니다.

일정: 실행 시간.

[ ON COMPLETION [ NOT ] PRESERVE ]: 이벤트를 재사용해야 하는지 여부입니다.

[ ENABLE | DISABLE ]: 이벤트가 켜지거나 꺼집니다.

4. 이벤트 닫기

ALTER EVENT event_name DISABLE;

5. 이벤트 열기

ALTER EVENT event_name ENABLE;

6. 이벤트 삭제

DROP EVENT [IF EXISTS ] event_name;

7. 모든 이벤트 보기

SHOW EVENTS;

8. 이벤트 예시

시작하자 테스트를 위한 간단한 테스트 테이블 만들기

CREATE TABLE `test` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `now` datetime DEFAULT NULL COMMENT '时间',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

이벤트 유형에는 두 가지가 있습니다. 하나는 간격 트리거이고 다른 하나는 특정 시간에 트리거됩니다.

우리는 매초 테스트 테이블에 레코드를 삽입합니다:

DROP EVENT IF EXISTS event_test;
CREATE EVENT event_test
ON SCHEDULE EVERY 1 SECOND STARTS '2017-08-22 11:57:00' ENDS '2017-08-22 12:00:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT '每隔一秒向test表插入记录'
DO INSERT INTO test VALUES(NULL, now());

결과는 다음과 같습니다:

예제를 통해 mysql이 예약된 작업을 구현하는 방법 설명

권장 관련 기사 튜토리얼: mysql 튜토리얼

위 내용은 예제를 통해 mysql이 예약된 작업을 구현하는 방법 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제