MySQL 정시 작업(EVENT 이벤트)을 설정 하 는 방법 에 대한 자세 한 설명
MySQL
5.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
쓰기;다음 그림:자주 사용 하 는 이벤트 작업 명령:
다음은 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
스케줄 링 시간 설정 문법:스케줄 링 시간 설정 은AT
과EVERY
두 가 지 를 포함한다.
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()함수 가 지배 합 니 다.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 정시 퀘 스 트 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.