it-swarm.com.de

Cronjob oder MySQL Event?

Ich muss meine MySQL-Datenbank stündlich aktualisieren und habe mich gefragt, welche Vor- und Nachteile die Verwendung eines CronJobs im Vergleich zu einem MySQL-Ereignis hat. Was ist zum Beispiel schneller? Welches ist sicherer? Vielen Dank!

21

Ich würde immer einen Cronjob machen, weil:

  • Das ist, wo Sysadmins es erwarten werden (dieser Punkt ist nicht zu unterschätzen)
  • crobtab ist kugelsicher, erprobt, extrem weit verbreitet und verständlich
  • Sie können Fehler-/Erfolgsmeldungen beliebig weiterleiten/analysieren
  • Einige Datenbankaufgaben erfordern/bevorzugen, dass mysql offline ist (z. B. vollständige Sicherung), daher müssen Sie cron für diese verwenden. Es ist eine schlechte Idee, einige Aufgaben mit cron und einige mit mysql erledigen zu lassen. Sie sind sich nicht sicher, wo Sie suchen sollen
  • Sie können andere Ereignisse verketten, die folgen sollten, wenn Sie ein Shell-Skript haben

Und schließlich, nur weil Sie können etwas tun, heißt das nicht, dass es eine gute Idee ist. MySQL kann gut mit Daten umgehen. Verwenden Sie es nicht für "Shell" Sachen.

19
Bohemian

MySQL Event Scheduler - Ein guter Ersatz für cron.

Wir alle wissen über cron, eine einfache Möglichkeit, bestimmte Prozesse zu planen, z. B. das Abschneiden Ihrer Log-Tabellen in Ihrer MySQL-Datenbank jede Woche.

Mit MySQL 5.1 haben die Jungs von MySQL eine neue coole Funktion eingeführt: den MySQL Event Scheduler!

Mit dem Event Scheduler können Sie Aufgaben planen, die Sie in Ihrer Datenbank ausführen möchten. Dies ist ideal für Webentwickler, die keine Cron-Jobs auf ihrem Webspace erstellen können, da der Host sie nicht zulässt! Es ist wirklich ein großartiger Ersatz für Cron!

Einige Beispiele:

wenn Sie Ihre Anwendungsprotokolltabelle jede Woche abschneiden möchten, sollte Ihr Ereigniszeitplan folgendermaßen aussehen:

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
18
user2001117

Mysql führt den Event Scheduler ein, den wir alternativ zu Cronjob verwenden können. Es gibt viele Vorteile gegenüber Cronjob:

1) Es ist direkt auf MySQL Server geschrieben.

2) Dies ist plattformunabhängig. Ihre Bewerbung kann in einer beliebigen Sprache verfasst sein, auf die es nicht ankommt. Sie müssen nur mysql kennen.

3) Wir können sie verwenden, wenn in regelmäßigen Abständen ein Datenbank-Update oder eine Bereinigung erforderlich ist.

4) Es müssen nicht jedes Mal Abfragen kompiliert werden, wodurch die Leistung erhöht wird.

5) Fehler kann in Protokolldateien protokolliert werden. Syntax:

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 ;

Weitere Informationen finden Sie auf der offiziellen Website: http://dev.mysql.com/doc/refman/5.1/de/create-event.html

detail-Blog: http://goo.gl/6Hzjvg

8
Suresh Kamrushi

Bitte überprüfen Sie den Code unten:

if ($product_info) {
   if ($product_info['image']) {
        $image = $this->model_tool_image->resize($product_info['image'], $this->config->get($this->config->get('config_theme') . '_image_wishlist_width'), $this->config->get($this->config->get('config_theme') . '_image_wishlist_height'));
    }
    else {
        $image = false;
    }
}
1
user9373052

ich gehe mit Mysql Event Schedular

da wir keine zusätzliche Datei dafür programmieren müssen, kann unser Zweck durch das Schreiben einer einzigen Abfrage erfüllt werden.

wenn nur eine auf die Datenbank bezogene Operation erforderlich ist, ist mysql event schedule eine gute Wahl.

1
meet

Ich arbeite jetzt selbst mit EVENTs und dachte darüber nach :)

Zusätzlich zu den obigen Antworten:

  • Verwenden Sie EVENTs, wenn die Aufgabe rein datenzentriert ist oder Funktionen ergänzt, die bereits in die Datenbank integriert sind. Möglicherweise verfügen Sie bereits über Auslöser, die Daten bereinigen, bestimmte Ereignisse protokollieren, bestimmte Daten zusammenfassen usw. Wenn die geplante Aufgabe, die Sie ausführen möchten, Teil des vorhandenen Designs ist, ist es zusammenhängender, die Aufgabe von einem EREIGNIS auszulösen. EVENTs sind zeitliche Auslöser immerhin.

  • Wenn Sie ein Skript von einer Shell aus ausführen, benötigen Sie einen Benutzernamen/ein Kennwort, das im Shell-Skript oder in einer Standarddatei gespeichert ist. Für die Ausführung von EVENTs benötigen Sie keinen Benutzernamen/Passwort, nachdem das EVENT erstellt wurde.

  • IMCO Sie sollten die Logik in eine gespeicherte Prozedur schreiben. Rufen Sie dann die Prozedur von einem EVENT oder einem Shell-Skript auf, je nachdem, was Ihnen am besten passt. Sie können sogar eine Stelle in Ihrer Benutzeroberfläche einrichten, an der Benutzer die Prozedur manuell aufrufen können.

0
Barend Scholtus

Dies war lange Zeit eine Frage, aber ich denke, ein Vorteil der Verwendung von MySQL-Ereignissen ist, dass es direkt in das DBMS eingebettet ist. Es muss also keine Verbindung hergestellt/aufrechterhalten werden, wenn Sie beispielsweise PHP als Hauptsprache verwenden. Sie könnten dies auch in Betracht ziehen Dadurch entfällt die Notwendigkeit einer Validierung beim Herstellen der Verbindung zur Datenbank, bevor eine Anweisung ausgeführt werden kann. Außerdem können Sie ein Ereignis mithilfe einer Rolle erstellen, die Wartungsskripten ausführen und der Anwendung, die dies nicht tut, eine Benutzerrolle zuweisen Dies gibt Ihnen die Sicherheit, dass Sie wissen, dass Benutzer nur auf diese Art von Rolle zugreifen können. Die Entscheidung, ob Ereignisse oder Cronjobs verwendet werden, hängt vom System ab, auf dem Sie arbeiten. Aber eine andere Sache, auf die Sie achten sollten, ist die mehrfache Auslösung des gleichen Ereignisses, besonders wenn das Intervall nur eine Differenz ist, die nur eine Frage von Sekunden ist, wie alle 5-10 Sekunden usw.

0

Mysql Event Scheduler ist für Shared Host-Umgebungen von Vorteil. Zeitlich kann es auch auf die Sekunde genau geplant werden. Im Gegensatz zu cron ist dies von Minute zu Minute möglich. Sie können diese Einschränkung jedoch umgehen.

0
CoolRunning