코어 포인트
MySQL 5.1.6 이후에 소개 된 MySQL 이벤트는 일회성 또는 정기 실행을 위해 예약 할 수있는 시간 트리거이며, 예약 된 작업 및 CRON 작업에 대한 대안을 제공합니다. 백업을 생성하거나, 쓸모없는 레코드를 삭제하거나, 보고서 데이터 등을 요약하는 데 사용될 수 있습니다.
MySQL 이벤트 스케줄러는 실행될 이벤트를 지속적으로 검색하는 배경 프로세스입니다. 명령을 발급함으로써 시작할 수 있으며 를 사용하여 닫을 수 있습니다. 상태는 MySQL 프로세스 목록에서 볼 수 있습니다. -
이벤트를 만들 때 이벤트는 이벤트를 만든 MySQL 사용자가 실행 권한을 가지고있는 작업 만 수행 할 수 있습니다. 이벤트 이름 길이는 64 자로 제한되며 대소 문자로 제한적이고 독특해야합니다. 다른 이벤트에서 이벤트를 작성, 변경 또는 삭제할 수 없으며 이벤트 일정을 설정할 때 저장된 기능 또는 사용자 정의 기능을 참조 할 수 없습니다.
MySQL 이벤트는 블로그 게시물 게시 계획과 같은 실제 시나리오에서 사용할 수 있습니다. 기사를 게시 할 때 트리거되는 MySQL 이벤트를 사용하면 비효율적 인 CRON 스크립트없이 블로그 게시물의 출판을 효과적으로 관리 할 수 있습니다. 데이터베이스에 블로그 항목을 추가 할 때 이벤트를 만들 수 있으며 나중에 블로그 게시물을 편집하면 이벤트를 삭제하고 예정된 예정 시간으로 이벤트를 다시 추가 할 수 있습니다. -
SET GLOBAL event_scheduler = ON;
MySQL 이벤트는 MySQL 5.1.6에 추가되었으며 예정된 작업 및 CRON 작업에 대한 대안을 제공했습니다. 이벤트는 백업을 생성하고, 쓸모없는 레코드를 삭제하고, 보고서 데이터를 요약하는 등 이벤트를 사용할 수 있습니다. 특정 조건에 따라 실행되는 표준 트리거와 달리, 이벤트는 시간 경과에 의해 트리거되는 객체이며, 때로는 SET GLOBAL event_scheduler = OFF;
타임 트리거 입니다. 서버 트래픽이 낮을 때 일회성 또는 주기적으로 이벤트를 실행하도록 예약 할 수 있습니다. 이 기사에서는 이벤트 사용을 시작하기 위해 알아야 할 사항을 설명합니다. 이벤트 스케줄러 시작, 일회성 또는 여러 실행 이벤트 추가, 기존 이벤트보기 및 이벤트 변경. 또한 계획된 블로그 게시물을 MySQL 이벤트를 사용하기위한 실용적인 예로 사용하는 방법도 공유하겠습니다. -
시작 이벤트 스케줄러
MySQL 이벤트 스케줄러는 백그라운드에서 실행되고 지속적으로 이벤트가 실행되는 프로세스입니다. 이벤트를 만들거나 예약하기 전에 다음 명령을 발행하여 스케줄러를 먼저 열어야합니다.
-
마찬가지로 모든 이벤트를 닫으려면 다음을 수행 할 수 있습니다.
이벤트 스케줄러를 시작한 후 MySQL 프로세스 목록에서 해당 상태를 볼 수 있습니다.
사용 이벤트
이벤트를 만들 때 이벤트를 만든 MySQL 사용자에게 실행 권한이있는 작업 만 수행 할 수 있습니다. 다른 한계에는 다음이 포함됩니다
이벤트 이름 길이는 64 자로 제한됩니다. -
MySQL 5.1.8로 시작하면 이벤트 이름은 사례에 민감하지 않습니다.
이벤트는 다른 이벤트로 만들거나 변경 또는 삭제할 수 없습니다. -
이벤트 일정을 설정할 때 저장된 기능 또는 사용자 정의 기능을 참조 할 수 없습니다. -
이벤트 생성
다음 예제는 이벤트를 만듭니다
이벤트는 이벤트가 생성 된 시간 1 시간 후에 한 번 실행됩니다. 및 진술은 지정된 시간에 실행될 하나 이상의 쿼리를 중심으로 진행됩니다. 세미콜론은 명령문을 종료하기 위해 필요하므로 클라이언트를 통해 작동하는 경우 문을 발행하기 전에 분리기를 전환 한 다음 다시 전환해야합니다. 를 사용하여 기존 이벤트의 목록을 볼 수 있습니다.
조항을 사용하여 다른 상황을 명시 적으로 선언하지 않는 한, 만료 후 이벤트가 자동으로 삭제됩니다.
이 예에서는 이벤트가 만료 된 경우에도 데이터베이스에 남아있어 나중에 다시 변경하고 실행할 수 있거나 참조를 위해 보관할 수 있습니다. 이벤트를 직접 삭제하려면 mysql> SET GLOBAL event_scheduler = ON;
: 를 사용할 수 있습니다.
BEGIN
주기적 이벤트를 지정하려면 END
절을 사용할 수 있습니다.
UPDATE
이벤트를 한 번 또는 영원히 실행하는 대신 및 CREATE EVENT
조항을 사용하여 특정 기간 동안 만 유효한 주기적 이벤트를 예약 할 수도 있습니다.
SHOW EVENTS
이 예에서, 정기적 인 이벤트는 내일 시작하여 매 시간마다 1 년 동안 운영됩니다. 타이밍과 관련하여 지정된 간격은 연도, 월, 주, 주, 시간, 시간, 분 또는 두 번째가 될 수 있습니다. 키워드는 단일 형태로 주어진다는 것을 기억하십시오.
업데이트 이벤트 mysql> SET GLOBAL event_scheduler = OFF;
기존 이벤트의 동작을 삭제하고 재현하는 대신 동작을 변경하려면 ON COMPLETION
를 사용할 수 있습니다. 예를 들어, 미래의 날짜에 오전 1시에 시작하여 한 달에 한 번 실행할 이전 이벤트의 일정을 변경하려면 다음 명령을 사용할 수 있습니다.
다른 쿼리 세트로 이벤트를 업데이트하려면 다음을 사용할 수 있습니다.
mysql> SHOW PROCESSLIST
...
Id: 79
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 12
State: Waiting on empty queue
Info: NULL
이벤트 이름을 바꾸려면 조항을 사용할 수 있습니다.
DROP EVENT
블로그 포스트 계획 실질적인 예를 보여 주려면 블로그가 있고 앞으로 언젠가 게시 할 게시물을 예약 할 수있는 옵션을 원합니다. 이를 달성하는 한 가지 방법은 타임 스탬프 및 게시 된 플래그를 데이터베이스 레코드에 추가하는 것입니다. CRON 스크립트는 1 분에 한 번 실행하여 타임 스탬프를 확인하고 게시 해야하는 모든 기사에 대해 플래그를 전환합니다. 그러나 이것은 비효율적 인 것 같습니다. 이를 수행하는 또 다른 방법은 기사를 게시 할 때 트리거되는 MySQL 이벤트를 사용하는 것입니다. 블로그 입력 양식에 확인란이있을 수 있으며,이를 선택한다는 것은 이것이 계획된 게시물임을 의미합니다. 또한, 양식에는 게시해야 할 게시물의 날짜와 시간을 입력 할 수있는 입력 필드가 있습니다. 수신 스크립트는 블로그 항목을 데이터베이스에 추가하고 이벤트를 예약하기 위해 이벤트를 관리해야합니다 (즉시 게시 된 게시물이 아닌 경우). 관련 코드는 다음과 같습니다.
기사를 데이터베이스에 저장할 때 정지 상태로 저장됩니다. 이를 통해 이벤트를 예약 할 수있는 기회가 제공됩니다 (계획된 게시물 인 경우). 그렇지 않으면 즉시 게시 상태를 업데이트 할 수 있습니다. 나중에 기사를 편집하려면 나중에 기사를 편집하려면 mysql> SET GLOBAL event_scheduler = ON;
를 사용하여 이벤트를 삭제하고 새 예정된 시간으로 다시 접수 할 수 있습니다.
요약 DROP EVENT IF EXISTS
이제 MySQL 이벤트가 무엇인지, 자신의 이벤트를 만들고 관리하는 방법에 대해 확실하게 이해해야합니다. 이벤트는 외부 코드 (예 : PHP 스크립트)를 실행할 수 없기 때문에 CRON 작업이나 예약 작업을 대체 할 수는 없지만 MySQL 데이터베이스와 관련된 시간 관련 작업에 대한 유용한 대안입니다. 항상 그렇듯이 더 많은 것을 배우고 싶다면 공식 문서를 읽으십시오. Garsya / Shutterstock의 사진
MySQL 이벤트 사용 (FAQ) 사용에 대한 FAQS FAQ
(FAQ 부분은 기사가 너무 길고 의사 원리 목표와 일치하지 않기 때문에 여기서 생략됩니다. FAQ 부품의 내용은 원래 텍스트와 매우 반복적이며 의사 원리는 어렵고 값이 낮습니다.)
위 내용은 MySQL 이벤트 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!