programing

크론잡 아니면 MySQL 이벤트?

newstyles 2023. 10. 21. 10:03

크론잡 아니면 MySQL 이벤트?

매시간 MySQL 데이터베이스를 업데이트해야 하는데 cronjob VS MySQL 이벤트를 사용하면 어떤 장단점이 있는지 궁금합니다.예를 들어, 어떤 것이 더 빠를까요?어느 쪽이 더 안전합니까?감사합니다!

나는 항상 크론 일을 할 것입니다. 왜냐하면:

  • sysadmin이 예상할 수 있는 부분입니다(이 부분은 과소평가되지 않습니다).
  • 크론탭은 방탄, 시간 tested, 매우 광범위하게 사용되고 이해됩니다.
  • 원하는 곳에서 자유롭게 오류/성공 메시지를 지시/분석할 수 있습니다.
  • 데이터베이스 작업 중에는 오프라인 상태(예: 전체 백업)인 mysql이 필요하거나 선호하기 때문에 cron을 사용해야 합니다. cron으로 작업을 수행하고 일부 작업은 mysql로 수행하는 것이 좋지 않습니다. 어디를 찾아야 할지 잘 모를 수 있습니다.
  • 셸 스크립트가 있는 경우 뒤따라야 하는 다른 이벤트를 체인으로 연결할 수 있습니다.

그리고 마지막으로, 당신이 무언가를 할 수 있다고 해서 그것이 좋은 생각이라는 것을 의미하는 것은 아닙니다.Mysql은 데이터에 능통합니다.껍질 같은 거에 쓰지 마.

MySQL Event Scheduler – cron을 대체하는 데 적합합니다.

우리 모두는 MySQL 데이터베이스의 로그 테이블을 매주 잘라내는 것과 같은 특정 프로세스를 쉽게 예약할 수 있는 cron에 대해 잘 알고 있습니다.

MySQL 5.1을 통해 MySQL의 직원들은 다음과 같은 새로운 멋진 기능을 선보입니다.MySQL 이벤트 스케줄러!

이벤트 스케줄러를 사용하면 데이터베이스에서 수행할 작업을 예약할 수 있습니다.이것은 그들의 호스트가 그것들을 허락하지 않기 때문에, 그들의 웹 공간에 cron 작업을 만들 수 없는 웹 개발자들에게 아주 좋습니다!그것은 정말 크론을 대체하는 훌륭한 것입니다!

몇 가지 예를 들 수 있습니다.

매주 응용프로그램 로그 테이블을 잘라내고자 할 경우 이벤트 일정은 다음과 같습니다.

CREATE EVENT PurgeLogTable
ON SCHEDULE EVERY 1 WEEK
DO
BEGIN
DELETE FROM `logs` WHERE `LogTime` <= DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 1 WEEK);
INSERT INTO `audit` (`AuditDate`, `Message`) VALUES(NOW(), "Log table purged succesfully!");
END

Mysql은 Cronjob을 대체할 수 있는 Event 스케줄러를 소개합니다.cronjob에 비해 다음과 같은 많은 장점이 있습니다.

1)Mysql Server에 직접 작성됩니다.

2) 플랫폼에 독립적입니다.지원서는 상관없는 언어로 작성될 수 있습니다.그냥 mysql만 알면 됩니다.

3) 정기적인 간격으로 데이터베이스 업데이트나 정리가 필요할 때마다 사용할 수 있습니다.

4) 매번 쿼리를 컴파일할 필요가 없으므로 성능이 향상됩니다.

5) 로그 파일에 오류가 있을 수 있습니다.구문:

DELIMITER //
CREATE EVENT eventName
ON SCHEDULE EVERY 1 WEEK
STARTS 'Some Date to start'
ENDS 'End date If any' 

DO
BEGIN
   // Your query will be here
END//
DELIMITER ;

자세한 내용은 공식 사이트 http://dev.mysql.com/doc/refman/5.1/en/create-event.html 를 참조할 수 있습니다.

상세 블로그 : http://goo.gl/6Hzjvg

나는 mysql 이벤트 스케쥴러로 갑니다.

이를 위해 하나의 파일을 추가로 코딩할 필요가 없기 때문에 하나의 쿼리를 작성하는 것만으로 목적을 달성할 수 있습니다.

데이터베이스 관련 작업만 필요하다면 mysql event schedule이 좋습니다.

Mysql 이벤트 스케줄러는 공유 호스트 환경에 유리합니다.시기적으로도 초 단위로 일정을 잡을 수 있습니다.cron과 달리 분 단위이지만 이 한계를 극복할 수 있습니다.

저도 지금 EVENTs와 함께 작업하고 있고 고민하고 있어요 :)

위의 답변 외에도:

  • 작업이 순전히 데이터 중심이거나 데이터베이스에 이미 구축된 기능을 보완하는 경우 EVENT를 사용합니다.데이터를 정리하고, 특정 이벤트를 기록하고, 특정 데이터를 집계하는 트리거가 이미 있을 수 있습니다.수행하려는 예약된 작업이 기존 설계의 일부라면 EVENT에서 작업을 트리거하는 것이 더 효과적입니다. EVENT는 결국 시간적 트리거입니다.

  • 셸에서 스크립트를 실행하는 경우 셸 스크립트 또는 기본 파일에 저장된 사용자 이름/비밀번호가 필요합니다.EVENT를 실행하는 경우 EVENT가 생성된 후에는 사용자 이름/비밀번호가 필요 없습니다.

  • IMCO는 저장 프로시저에 논리를 작성한 다음 EVENT나 셸 스크립트에서 프로시저를 호출해야 합니다.UI에 사용자가 절차를 수동으로 호출할 수 있는 공간을 만들 수도 있습니다.

이것은 오랜 질문이었지만 mysql 이벤트를 사용하는 것의 한 가지 장점은 dbms 내에 직접 내장되어 있어서 연결을 생성/유지할 필요가 없다고 생각합니다. 예를 들어 메인 언어로 php를 사용하는 경우 연결을 생성할 때 유효성 검사의 필요성을 제거하기 위해 이 원인을 고려할 수 있습니다.o 문을 실행할 수 있기 전에 DB를 사용하여 이벤트를 생성하고 유지보수 스크립트를 수행할 수 있는 역할을 사용하여 이벤트를 생성할 수 있으며 사용자가 이러한 역할만 가지고 있다는 것을 알 수 있는 보안을 제공하지 않는 애플리케이션에 사용자 역할을 할당할 수 있으므로 이벤트를 사용할지 cron 작업을 사용할지 결정하는 것은 시스템에 따라 달라집니다.작업중인그러나 주의해야 할 또 다른 사항은 동일한 이벤트의 다중 트리거입니다. 특히 간격이 단지 차이라면 매 5-10초와 마찬가지로 몇 초의 문제입니다.

저는 지난 몇 시간 동안 이벤트 스케줄러 설명서를 읽었고, 매일 반복되어야 하는 이벤트를 만드는 데 사용했습니다.

저는 사실 매우 만족하고 적어도 외부 스크립트를 사용할 필요가 없다는 이유로 크론잡과 비교했을 때 더 나은 선택이라고 생각합니다.

실적적으로 봤을 때 훨씬 더 나은 선택이라고 장담합니다.

언급URL : https://stackoverflow.com/questions/14805742/cronjob-or-mysql-event