Überblick MySQL verfügt auch über einen eigenen Ereignisplaner, der einfach als Crontab-Job von Linux verstanden werden kann. Für SQL-Anwendungen verfügt es jedoch über umfassendere Funktionen und ist einfacher zu warten. Ich persönlich bin der Meinung, dass die Erstellung zu vieler davon die DB-Leistung beeinträchtigen und das Debuggen erschweren kann. Hauptinhalt des MySQL-Ereignisplaners Hauptschalter Der Parameter event_scheduler ist der Hauptschalter des Ereignisplaners. Im Allgemeinen kann er auf ON oder OFF gesetzt werden. Es wird nicht empfohlen, ihn auf deaktiviert zu setzen. Wenn er auf ON gesetzt ist, kann show processlist den Thread sehen Syntax zum Erstellen, Ändern, Anzeigen usw. Wie man Ereignisse erstellt und ändert, wird hier nicht beschrieben. Die Erstellungssyntax lautet wie folgt. Die genaue Bedeutung finden Sie in der folgenden Einführung in die Ereignisinformationstabelle. Sie können auch auf den Dokumentlink auf der offiziellen Website verweisen: http://dev.mysql.com/doc/refman/5.6/en/create-event.html Um das erstellte Ereignis anzuzeigen, verwenden Sie nach dem Aufrufen der aktuellen Datenbank show create event xxx\G
Um die Statusinformationen eines Ereignisses anzuzeigen, können Sie mysql.event oder information_schema.events anzeigen oder einfach zur aktuellen Datenbank wechseln und „show events“ ausführen. Der Inhalt der drei ist im Wesentlichen derselbe. information_schema kann keine Datenkopien erstellen. Die folgenden Namen und Startzeiten wurden zur besseren Lesbarkeit geändert. Hier verwenden wir die Informationen in information_schema.events als Beispiel zur Erklärung EVENT_CATALOG: Im Allgemeinen ist es def, unabhängig von EVENT_SCHEMA: Das Schema, in dem sich das Ereignis befindet EVENT_NAME: Der Name der Veranstaltung DEFINER: Der Definierer des Ereignisses. Dies entspricht dem Standardergebnis von selectcurrent_user() beim Definieren des Ereignisses. Wenn der Benutzer über Superberechtigungen verfügt, können Sie einen anderen Benutzer angeben. TIME_ZONE: Die vom Ereignis verwendete Zeitzone. Der Standardwert ist System. Es wird empfohlen, ihn nicht zu ändern. EVENT_BODY: Normalerweise SQL, machen Sie sich darüber keine Gedanken EVENT_DEFINITION: Der Inhalt des Ereignisses kann ein spezifischer SQL-Befehl wie „insert“ oder eine Operation sein, die eine gespeicherte Prozedur aufruft. EVENT_TYPE: Dieser Parameter ist sehr wichtig und wird bei der Definition angegeben. Er hat zwei Werte: RECURRING und ONE TIME. RECURRING bedeutet, dass das Ereignis wiederholt ausgeführt wird, solange die Bedingungen erfüllt sind, während ONE TIME nur einmal aufgerufen wird. EXECUTE_AT: Gilt für einmalige Ereignisse. Wenn es sich um ein WIEDERKEHRENDES Ereignis handelt, ist es normalerweise NULL und gibt die geschätzte Ausführungszeit des Ereignisses an. INTERVAL_VALUE: gültig für Ereignisse vom Typ RECURRING und gibt die Länge des Ausführungsintervalls an INTERVAL_FIELD: gültig für Ereignisse vom Typ RECURRING und gibt die Einheit des Ausführungsintervalls an, normalerweise SECOND, DAY usw. Weitere Informationen finden Sie in der Erstellungssyntax SQL_MODE: Der vom aktuellen Ereignis verwendete SQL_MODE STARTS: Gilt für Ereignisse des Typs RECURRING und gibt den Zeitpunkt an, zu dem mit der Ausführung eines Ereignisses begonnen wird, ähnlich der einmaligen Funktion EXECUTE_AT. NULL bedeutet, dass die Ausführung beginnt, sobald die Bedingung erfüllt ist. ENDS: Gilt für Ereignisse vom Typ RECURRING und gibt den Zeitpunkt an, zu dem die Ausführung eines Ereignisses beendet wird. Wenn der Wert NULL ist, wird das Ereignis nie beendet. STATUS: Im Allgemeinen gibt es drei Werte: ENABLED, DISABLED und SLAVESIDE_DISABLED. ENABLED bedeutet, dass das Ereignis aktiviert wird. Das Ereignis wird ausgeführt, solange andere Bedingungen erfüllt sind. Der Status DISABLED bedeutet, dass das Ereignis nicht ausgeführt wird. SLAVESIDE_DISABLED bedeutet, dass das Ereignis nicht auf der Slave-Bibliothek ausgeführt wird. Besonderes Augenmerk sollte darauf gelegt werden, dass keine Art von Ereignis auf der Slave-Datenbank ausgeführt wird, denn wenn die Master-Datenbank es einmal ausführt, es in die Slave-Datenbank kopiert und es dann erneut auf der Slave-Datenbank ausführt, sind die Daten inkonsistent. Im Allgemeinen können Sie einfach den Hauptschalter event_scheduler auf der Slave-Datenbank deaktivieren. ON_COMPLETION: Es gibt nur zwei Werte, PRESERVE und NOT PRESERVE, PRESERVE ERSTELLT: Der Zeitpunkt, zu dem das Ereignis erstellt wurde LAST_ALTERED: Der Zeitpunkt der letzten Änderung des Ereignisses LAST_EXECUTED: Der Zeitpunkt, zu dem das Ereignis zuletzt ausgeführt wurde. Wenn der Wert NULL ist, bedeutet dies, dass es nie ausgeführt wurde. EVENT_COMMENT: Ereigniskommentarinformationen ORIGINATOR: Die Server-ID, als das aktuelle Ereignis erstellt wurde, wird für die Verarbeitung auf dem Master und Slave verwendet, z. B. SLAVESIDE_DISABLED CHARACTER_SET_CLIENT: Der Client-Zeichensatz bei der Erstellung des Ereignisses, d. h. character_set_client COLLATION_CONNECTION: Die Validierungsregel für Verbindungszeichen bei der Erstellung eines Ereignisses, d. h. collation_connection DATABASE_COLLATION: Validierungsregeln für den Datenbankzeichensatz beim Erstellen eines Ereignisses EVENT-Berechtigungsverwaltung 1 Das Setzen der Systemvariable event_scheduler erfordert das Privileg super_priv 2 Zum Erstellen, Ändern und Löschen von Ereignissen ist die EVENT-Berechtigung des Benutzers erforderlich, die sich auf Schemaebene befindet. 3 Entsprechend den konkreten Veranstaltungsinhalten sind entsprechende Genehmigungen erforderlich. Wenn beispielsweise im Ereignis ein Einfügevorgang für eine Tabelle vorliegt, muss der Benutzer die Tabelle einfügen, andernfalls ist LAST_EXECUTED immer NULL. EVENT Statusabfrage Mit dem folgenden Befehl können Sie die ereignisbezogenen Statistiken seit dem Start der Datenbank anzeigen. mysql> zeige globalen Status wie „%event%“ an; +--------------------------+----------+ |Variablenname | Wert | +--------------------------+----------+ |Com_alter_event | 0 | |Com_erstellen_Ereignis | 2 | |Com_drop_event | 2 | |Com_show_binlog_events | 0 | |Com_show_erstellen_event | 191 | |Com_show_events | 40 | |Com_show_relaylog_events | 0 | +--------------------------+----------+ 7 Zeilen im Satz (0,00 Sek.) Anwendungsvorschläge 1 Wenn der Master es bereits ausgeführt hat, muss der Slave sicherstellen, dass das Ereignis nicht ausgeführt wird (es sei denn, das Ereignis wird absichtlich auf dem Slave erstellt). 2. Es ist strengstens verboten, die mysql.event-Tabelle zum Erstellen, Löschen und für andere Vorgänge direkt zu verwenden. Stattdessen sollten sie mit einer regulären Syntax wie „create“ implementiert werden. Andernfalls kommt es zu Verwirrung bei den Metadaten und zu verschiedenen unerklärlichen Problemen, z. B. dass das Ereignis nicht ausgeführt wird oder wiederholt ausgeführt wird. Zu diesem Zeitpunkt besteht die einzige Lösung darin, die Datenbank neu zu starten. 3 Wenn das von Ihnen erstellte Ereignis umfangreiche Datenänderungen erfordert, müssen Sie ausreichende Tests durchführen, um sicherzustellen, dass die vorhandenen Netzwerkdienste dadurch nicht beeinträchtigt werden. 4 Wenn Sie eine Datenbank mit Ereignissen sichern müssen, müssen Sie beim Ausführen von mysqldump den Parameter --event hinzufügen. Der obige Artikel „MySQL-Ereignisplaner (unbedingt lesen)“ ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Häufig verwendete höherwertige Funktionen und umfassende Beispiele in Vue
>>: Implementierungscode zur Verwendung der MongoDB-Datenbank in Docker
Inhaltsverzeichnis schließen Fallstudie: Vertiefe...
Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...
Inhaltsverzeichnis Pagoda installieren Management...
:ist eine dynamische Komponente Verwenden Sie v-b...
Der spezifische Code lautet wie folgt: Der HTML-C...
Inhaltsverzeichnis Grundlegende Einführung Erste ...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort smb ist der Name eines Protokolls, das fü...
Heute habe ich eine Fallstudie zur MySQL IN-Unter...
HTML Code: Code kopieren Der Code lautet wie folgt...
Beim Rendern von Markdown habe ich zuvor den Vors...
Häufige Anwendungsszenarien Die Schnittstellen ak...
Nur den oberen Rand anzeigen <table frame=above...
Vorwort Linux-Gruppen sind Organisationseinheiten...
Einführung Derzeit ist k8s sehr beliebt und ich h...