Frage

Ich bin auf der Suche nach einer Lösung ähnlich die inotify Methode von Dateien für Änderungen zu beobachten. Ich bin mir bewusst, dass ich die binlog Datei der MySQL-Datenbank beobachten konnte und Ausführen von Abfragen, die neuen Ergebnisse zu holen, aber das scheint sehr ineffizient und unelegant; wie nicht nur Massen von Abfragen in einer Schleife für neue Ergebnisse warten zu tun.

War es hilfreich?

Lösung

Wenn Sie fügen Sie ein TRIGGER auf den Tisch (e) Sie interessiert in, können Sie diese verwenden, um die beobachtete Anwendung aufmerksam zu machen. Sie könnten, dass in einer Reihe von Möglichkeiten zur Verfügung:

  1. Erstellen Sie eine Audit-Tabelle in der Datenbank, und haben den Auslöser Schreib die relevanten Informationen gibt; und lassen Sie Ihre Beobachtung Anwendung Umfrage die Audit-Tabelle für neue Einträge. Du bist immer noch Polling, aber in einer kontrollierten Art und Weise, die den Server nicht zu hart getroffen.
  2. Haben Sie den Auslöser eine externe App aufrufen durch eine UDF.

Andere Tipps

Was die MyISAM-Tabellen gehen Sie können information_schema.TABLES.UPDATE_TIME beobachten. Das würde man von Polling alle Tabellen, die Sie daran interessiert sind, speichern. Für InnoDB, binlog gerade die beste, die ich mir vorstellen kann.

Ein weiterer Ansatz ist es, einen Push / Signal anstelle einer DB-Umfrage zu tun. Haben was Prozess die Datenbank aktualisiert, informieren Sie Ihren Perl-Code, dass ein Update über einen beliebigen IPC getan Sie wählen (Heck, eine Protokolldatei wird angefügt mit Name der Tabelle geändert werden könnte den Trick gut genug tun).

Dies ist besonders wirksam, wenn das Updates eines ziemlich seltenes / geringeres Volumen noch die Reaktionszeit, um sie schnell sein muß.

Ein weiterer Vorteil ist die Portabilität -. Werke für jeden MySQL-Backend oder für eine andere DB-Engine

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top