MySQL 정시 작업(EVENT 이벤트)을 설정 하 는 방법 에 대한 자세 한 설명

11929 단어 MySQL정시 임무
이벤트
  MySQL5.1.6부터 매우 특색 있 는 기능 을 추가 했다. (Event Scheduler)는 특정한 임 무 를 정기 적 으로 수행 할 수 있다(예 를 들 어 기록 삭제,데이터 통계 보고서,데이터 백업 등).
  특히 MySQL 의 이벤트 스케줄 러 는 매 초 에 한 가지 임 무 를 수행 할 수 있 고 운영 체제 의 계획 임무(예 를 들 어 Linux 의 cron)는 매 분 에 한 번 만 수행 할 수 있 습 니 다.데이터 에 대한 실시 간 요구 가 비교적 높 은 응용(예 를 들 어 주식,배 당 률,점수 등)은 매우 적합 하 다.
이벤트 스케줄 러 는 특정한 시간 주기 트리거 를 바탕 으로 특정한 임 무 를 수행 하기 때문에 트리거(Triggers)는 특정한 표 에 의 해 발생 하 는 이벤트 트리거 이 고 차이 점도 여기에 있 습 니 다.
2."이벤트"기능 오픈
"이벤트"기능 을 사용 하기 전에 이벤트 를 확보 해 야 합 니 다.스케줄 러 오픈
1.조회 기능 오픈 여부:

--    
SELECT @@event_scheduler;
--    
SHOW VARIABLES LIKE 'event%';
"ON"설명 기능 이 켜 져 있 음 을 표시 합 니 다.다음 그림:

mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON    |
+-------------------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'event%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
2.오픈,종료 기능 명령:

--       :
SET GLOBAL event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
--       :
SET GLOBAL event_scheduler = 0;
SET GLOBAL event_scheduler = OFF;
물론 명령 을 통 해 데이터베이스 가 다시 시작 되면 자동 으로 닫 힙 니 다. :my.cnf 설정 파일 에event_scheduler=1쓰기;다음 그림:
在这里插入图片描述
자주 사용 하 는 이벤트 작업 명령:
  • 지정 한 이벤트 닫 기:ALTER 이벤트 이름 ON COMPLETION PRESERVE DISABLE;
  • 지정 이벤트 시작:ALTER 이벤트 이름 ON COMPLETION PRESERVE ENABLE;
  • 현재 이벤트 보기:SHOW EVENTS;
  • 3.이벤트-SQL 문법 생 성
    다음은 EVENT 이벤트 생 성 문구 입 니 다.언뜻 보기 에는 복잡 합 니 다.뜯 어서 읽 어 봅 시다.
    
    CREATE EVENT [IFNOT EXISTS] event_name
        ON SCHEDULE schedule(      )
        [ON COMPLETION [NOT] PRESERVE]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        DO sql_statement;
    SQL 문법
    설명 하 다.
    DEFINER
    옵션 가능,지정 한 사용자 에 게 사용 권한 부여
    IF NOT EXISTS
    생 성 할 이벤트 가 있 는 지 여 부 를 판단 하 는 데 사용 할 옵션 입 니 다.
    EVENT event_name
    필수 옵션,이벤트 이름 지정,이벤트name 의 최대 길 이 는 64 글자 입 니 다.이벤트 를 지정 하면name,기본 값 은 현재 MySQL 사용자 이름(대소 문자 구분 하지 않 음)
    ON SCHEDULE schedule
    필수 옵션 입 니 다.이 schedule 은 실행 시간 과 시간 간격 을 정의 하 는 데 사 용 됩 니 다.아래 에서 자세히 설명 하 겠 습 니 다.
    ON COMPLETION [NOT] PRESERVE
    이벤트 가 한 번 실 행 된 후의 처리 방식 을 설정 할 수 있 습 니 다.
    on completion preserve 일 때 이벤트 가 만 료 되면 이벤트 가 disable 되 지만 이 이 벤트 는 존재 합 니 다.
    on completion not preserve 일 때 이벤트 가 만 료 되면 이 이 벤트 는 자동 으로 삭 제 됩 니 다.
    ENABLE、DISABLE、DISABLE ON SLAVE
    이벤트 의 속성 을 지정 하 는 데 사용 할 옵션 을 선택 할 수 있 습 니 다.
    ENABLE 는 이 이벤트 가 열 렸 다 는 것 을 표시 합 니 다.즉,스케줄 러 가 이벤트 가 반드시 호출 되 는 지 확인 하 는 것 입 니 다.
    DISABLE 은 이 사건 이 닫 혔 다 고 밝 혔 습 니 다.즉,이벤트 의 성명 이 디 렉 터 리 에 저장 되 어 있 지만 스케줄 러 는 호출 되 어야 하 는 지 확인 하지 않 습 니 다.
    DISABLE ON SLAVE 는 이벤트 가 컴퓨터 에서 꺼 졌 다 고 밝 혔 다.이 세 가지 선택 중 하 나 를 지정 하지 않 으 면 하나의 이벤트 가 생 성 된 후에 바로 활동 으로 변 합 니 다.
    COMMENT ‘comment'
    이벤트 설명 을 정의 하 는 데 사용 할 옵션
    DO event_body
    이벤트 가 시 작 될 때 실행 할 코드 를 지정 하 는 데 필요 한 옵션 입 니 다.효과 적 인 SQL 구문,저장 과정 또는 계획 이 실 행 된 이벤트 일 수 있 습 니 다.여러 문 구 를 포함 할 경우,BEGIN...END 복합 구 조 를 사용 할 수 있 습 니 다.schedule스케줄 링 시간 설정 문법:스케줄 링 시간 설정 은ATEVERY두 가 지 를 포함한다.
    
    AT timestamp [+ INTERVAL interval] ...
     | EVERY interval
     [STARTS timestamp [+ INTERVAL interval] ...]
     [ENDS timestamp [+ INTERVAL interval] ...]
    
    
    -- INTERVAL          :
    {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
     WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
     DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
    
    1,창설-일회 정시 실행 이벤트
    
    AT TIMESTAMP       [+ INTERVAL INTERVAL]
      AT TIMESTAMP 는 이 사건 이 한 번 만 실 행 될 것 이 라 고 밝 혔 으 며,TIMESTAMP 는 구체 적 인 시점 을 표시 하고 그 뒤에 시간 간격 을 더 해 이 시간 간격 이후 에 사건 이 발생 할 것 임 을 나 타 냈 다.[+INTERVAL INTERVAL]은 트리거 지연 시간 을 표시 합 니 다.
      주의해 야 할 것 은 TIMESTAMP 와 구체 적 인 문자열 을 연결 하 는 것 입 니 다.구체 적 인 문자열 이 아니라면(예 를 들 어 CURRENTTIMESTAMP 는 현재 시간 등 을 가 져 옵 니 다),TIMESTAMP 를 추가 하지 않 습 니 다.
    예시 1:demo 로1119 표 에 한 줄 의 데 이 터 를 삽입 하고 실행 시간:2020-11-20 00:00:00
    
    CREATE EVENT demo_event2 
    ON SCHEDULE AT TIMESTAMP '2020-11-20 00:00:00' 
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    결과 조회:
    
    mysql> select * from demo_1119;
    +-----+-----------+---------------------+
    | id | name  | createTime   |
    +-----+-----------+---------------------+
    | 145 |     | 2020-11-20 00:00:00 |
    +-----+-----------+---------------------+
    9 rows in set (0.00 sec)
    
    예시 2:demo 로1119 표 에 한 줄 의 데 이 터 를 삽입 하고 실행 시간:현재 시간 은 5 시간 뒤로 갑 니 다.
    
    CREATE EVENT demo_event2 
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 HOUR
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    2,창설-순환 정시 실행 이벤트
    
    EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
    EVERY 그 중에서STARTS자 구 는 시작 시간 을 지정 하 는 데 사용 된다.ENDS자 구 는 종료 시간 을 지정 하 는 데 사용 된다.
    예시 1:지금부터 10 초 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.
    
    CREATE EVENT demo_event3 
    ON SCHEDULE EVERY 10 SECOND 
    ON COMPLETION PRESERVE 
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    
    mysql> select * from demo_1119;
    +-----+-----------+---------------------+
    | id | name  | createTime   |
    +-----+-----------+---------------------+
    | 145 |     | 2020-11-19 11:10:39 |
    | 146 |     | 2020-11-19 11:10:49 |
    | 147 |     | 2020-11-20 11:10:59 |
    | 148 |     | 2020-11-20 11:11:09 |
    | 149 |     | 2020-11-20 11:11:19 |
    | 150 |     | 2020-11-20 11:11:29 |
    | 151 |     | 2020-11-20 11:11:39 |
    +-----+-----------+---------------------+
    9 rows in set (0.00 sec)
    
    예시 2:2020-11-20 12:00:00 부터 10 분 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.
    
    CREATE EVENT demo_event4 
    ON SCHEDULE EVERY 10 MINUTE STARTS '2020-11-20 12:00:00' 
    ON COMPLETION PRESERVE 
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    
    mysql> select * from demo_1119;
    +-----+-----------+---------------------+
    | id | name  | createTime   |
    +-----+-----------+---------------------+
    | 152 |     | 2020-11-20 12:00:00 |
    | 153 |     | 2020-11-20 12:10:00 |
    | 154 |     | 2020-11-20 12:20:00 |
    | 155 |     | 2020-11-20 12:30:00 |
    | 156 |     | 2020-11-20 12:40:00 |
    +-----+-----------+---------------------+
    5 rows in set (0.00 sec)
    
    예시 3:현재 시간 1 시간 후부 터 10 분 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.이미 사용 가능 한 것 을 테스트 하 였 으 니,나 는 더 이상 불필요 한 조회 데 이 터 를 붙 이지 않 겠 다~
    
    CREATE EVENT demo_event5 
    ON SCHEDULE EVERY 10 MINUTE STARTS CURRENT_TIMESTAMP+INTERVAL 1 HOUR 
    ON COMPLETION PRESERVE 
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    예시 4:현재 시간 하루 후부 터 1 시간 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 하면 3 일 후에 끝 납 니 다.
    
    CREATE EVENT demo_event5 
    ON SCHEDULE EVERY 1 HOUR 
    STARTS CURRENT_TIMESTAMP+INTERVAL 1 DAY 
    ENDS CURRENT_TIMESTAMP+INTERVAL 3 DAY 
    ON COMPLETION PRESERVE 
    DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '   ', NOW())
    
    예 5:매일 0 시 정각에 demo1119 표 데이터
    
    CREATE EVENT demo_event5 
    ON SCHEDULE EVERY 1 DAY STARTS '2020-11-20 00:00:00' 
    ON COMPLETION PRESERVE 
    DO TRUNCATE table `demo_1119`
    
    3.사건 수정
    이벤트 문 구 를 수정 하 는 것 은 생 성 문 구 를 만 드 는 것 과 같 습 니 다.문법 은 다음 과 같 습 니 다.
    
    ALTER EVENT event_name
        [ONSCHEDULE schedule]
        [old_NAME TO new_NAME]
        [ON COMPLETION [NOT] PRESERVE]
        [COMMENT 'comment']
        [ENABLE | DISABLE]
        [DO sql_statement]
    
    이벤트 작업 닫 기:ALTER 이벤트 이름 ON COMPLETION PRESERVE DISABLE;
    이벤트 퀘 스 트 시작:ALTER 이벤트 이름 ON COMPLETION PRESERVE ENABLE;
    4.이벤트 삭제
    
    DROP EVENT [IF EXISTS] event_name
    4.이벤트-Navicat 로 만 들 기(추천)
      많은 친구 들 이 명령 행 에서 SQL 문 구 를 두 드 리 는 것 을 좋아 합 니 다.전문 적 인 느낌 이 들 지만 리더 십 에 납치 되 었 을 수도 있 습 니 다~~
      어떤 지도자 들 은 자기 직원 들 이 구 글 을 쓰 면 시원 하 다 고 생각 하 는 것 같 아 요.😎😎,흥미진진 하 다바 이 두 로 csdn 을 찾 으 면 low 입 니 다.하지만 요리 개 인 나 는 내 나 바 카 트 도구 와 도 모 를 즐겨 쓴다.자,잔말 말고 Navicat 가 EVENT 이 벤트 를 어떻게 만 들 었 는 지,GO!
    다음 그림 과 같이 오른쪽 단 추 를 누 르 면 새 이 벤트 를 만 듭 니 다.
    在这里插入图片描述
      창설 이벤트 중의 란 은 SQL 을 실행 하 는 것 으로 하나 이상 의 SQL 문장,저장 과정 등 을 포함 할 수 있 으 며 란 은 이벤트 의 촉발 시간 을 정의 할 수 있다.다음 그림 에서 나 는 실행 과정 에서 삽입 문 구 를 정의 했다.
    在这里插入图片描述
    물론 여러 개의 SQL 을 동시에 쓸 수도 있 고 중간 에 분점 이 있 습 니 다.비 긴 으로 시작 해 엔 드 로 마무리 하면 된다.
    在这里插入图片描述
    계획 란 을 열 면 익숙 하지 않 습 니까?지난 모듈 에서 우 리 는 모두 본 적 이 있다.젊은이 들 의 인상 을 깊 게 하기 위해 서,우 리 는 다시 한 번 돌 이 켜 보 자.
    在这里插入图片描述
    매개 변수 설명:AT:이 사건 은 한 번 만 실 행 될 수 있 고 구체 적 인 시간 을 설정 할 수 있 으 며 그림 에서CURRENT_TIMESTAMP는 현재 시간 을 대표 할 수 있 으 며 그 다음 에 시간 간격interval을 추가 하여 이 시간 이 얼마 후에 사건 이 발생 한 다 는 것 을 나타 내 며 접촉 시간 을 지연 시 키 는 것 을 나타 낸다.
  • EVERY:이 사건 을 순환 적 으로 실행 합 니 다.그 중에서STARTS자 구 는 시작 시간 을 지정 하 는 데 사 용 됩 니 다.
  • ENDS자 구 는 종료 시간 을 지정 하 는 데 사 용 됩 니 다.
  • interval: 그 수 치 는 하나의 수치 와 단위 로 구성 된다.예 를 들 어'4 WEEK'를 사용 하면 4 주 후 를 나타 낸다.사용"'1:10'HOURMINUTE 는 1 시간 10 분 후 를 나타 낸다.간격의 거리 용 DATEADD()함수 가 지배 합 니 다.
  • INTERVAL 에 포 함 된 시간 단 위 는 다음 과 같 습 니 다.
    YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND |
    YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
    DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
    자,실례 를 통 해 인상 을 깊 게 합 시다.예시 1:demo 로1119 표 에 한 줄 의 데 이 터 를 삽입 하고 실행 시간:2020-11-20 00:00:00
    在这里插入图片描述예시
    2:demo 로1119 표 에 한 줄 의 데 이 터 를 삽입 하고 실행 시간:현재 시간 은 5 시간 뒤로 갑 니 다.
    在这里插入图片描述
    예시 3:지금부터 10 초 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.
    在这里插入图片描述
    예시 4:2020-11-20 12:00:00 부터 10 분 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.
    在这里插入图片描述
    예시 5:현재 시간 1 시간 후부 터 10 분 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 합 니 다.
    在这里插入图片描述
    예시 6:현재 시간 하루 후부 터 1 시간 마다 demo1119 표 에 한 줄 의 데 이 터 를 삽입 하면 3 일 후에 끝 납 니 다.
    在这里插入图片描述
    예 7:매일 0 시 정각에 demo1119 표 데이터
    在这里插入图片描述
    MySQL 정시 퀘 스 트(EVENT 이벤트)를 어떻게 설정 하 는 지 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 MySQL 정시 퀘 스 트 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기