1. Kurze Einführung in die Veranstaltung Ein Ereignis ist ein prozedurales Datenbankobjekt, das MySQL zu einem bestimmten Zeitpunkt aufruft. Ein Event kann einmalig aufgerufen oder periodisch gestartet werden. Die Verwaltung übernimmt ein spezieller Thread, der sogenannte „Event Scheduler“. Ereignisse ähneln Auslösern, da sie ausgelöst werden, wenn etwas passiert. Ein Trigger wird ausgelöst, wenn eine Anweisung in der Datenbank gestartet wird, während ein Ereignis basierend auf einem geplanten Ereignis ausgelöst wird. Aufgrund ihrer Ähnlichkeit zueinander werden Ereignisse auch als temporäre Auslöser bezeichnet. Ereignisse ersetzen die Arbeit, die zuvor nur von den geplanten Aufgaben des Betriebssystems ausgeführt werden konnte, und der Ereignisplaner von MySQL kann genau eine Aufgabe pro Sekunde ausführen, während die geplanten Aufgaben des Betriebssystems (wie CRON unter Linux oder die Aufgabenplanung unter Windows) nur einmal pro Minute ausgeführt werden können. 2 Vor- und Nachteile von Events 2.1 Vorteile Einige geplante Operationen an Daten sind nicht mehr auf externe Programme angewiesen, sondern nutzen direkt die von der Datenbank selbst bereitgestellten Funktionen. 2.2 Nachteile Zeitgesteuerter Auslöser, kann nicht aufgerufen werden. 3 Ereignisse erstellen Eine „Create Event“-Anweisung erstellt ein Ereignis. Jedes Event besteht aus zwei Hauptteilen. Der erste Teil ist der Eventplan, der angibt, wann das Event gestartet wird und in welcher Häufigkeit. Der zweite Teil ist die Ereignisaktion, also der Code, der ausgeführt wird, wenn das Ereignis ausgelöst wird. Die Ereignisaktion enthält eine SQL-Anweisung, die eine einfache Einfüge- oder Aktualisierungsanweisung oder eine gespeicherte Prozedur sein kann oder Ein Ereignis kann aktiv (offen) oder inaktiv (geschlossen) sein. Aktiv bedeutet, dass der Ereignisplaner prüft, ob die Ereignisaktion aufgerufen werden muss. Inaktiv bedeutet, dass die Deklaration des Ereignisses im Katalog gespeichert ist, der Planer jedoch nicht prüft, ob es aufgerufen werden soll. Nachdem ein Ereignis erstellt wurde, wird es sofort aktiv. Ein aktives Ereignis kann einmal oder mehrmals ausgeführt werden. 3.1 Die Erstellungssyntax lautet wie folgt ERSTELLEN [DEFINER = { Benutzer | AKTUELLER_BENUTZER }] EREIGNIS [WENN NICHT EXISTIERT] Ereignisname IM ZEITPLAN Zeitplan [NACH ABSCHLUSS [NICHT] BEWAHREN] [AKTIVIEREN | DEAKTIVIEREN | AUF SLAVE DEAKTIVIEREN] [KOMMENTAR 'Kommentar'] DO Ereignistext; Zeitplan: AT-Zeitstempel [+ INTERVAL-Intervall] ... | JEDES Intervall [STARTS Zeitstempel [+ INTERVAL Intervall] ...] [ENDS Zeitstempel [+ INTERVAL Intervall] ...] Intervall: Menge {JAHR | QUARTAL | MONAT | TAG | STUNDE | MINUTE | WOCHE | SEKUNDE | JAHR_MONAT | TAG_STUNDE | TAG_MINUTE | TAG_SEKUNDE | STUNDE_MINUTE | STUNDE_SEKUNDE | MINUTE_SEKUNDE} Glossar: event_name: Der Name des zu erstellenden Ereignisses (eindeutig bestimmt). 3.2 Aktivieren und Deaktivieren des Ereignisplaners 3.2.1 MySQL-Ereignisplaner event_scheduler ist für den Aufruf von Ereignissen verantwortlich und standardmäßig geschlossen. Dieser Scheduler überwacht ständig, ob ein Event aufgerufen werden soll. Um ein Event anzulegen, muss der Scheduler geöffnet werden. mysql> Variablen wie „%event_scheduler%“ anzeigen; +-----------------+--------+ | Variablenname | Wert | +-----------------+--------+ | event_scheduler | AUS | +-----------------+--------+ 3.2.2 Ereignisplaner aktivieren Über die Befehlszeile Sie können eine der folgenden Befehlszeilen verwenden Setzen Sie den Event_Scheduler global auf ON. SETZEN Sie @@global.event_scheduler = EIN; SETZEN SIE GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; Über die Konfigurationsdatei my.cnf event_scheduler = 1 #oder EIN Scheduler-Threads anzeigen mysql> Prozessliste anzeigen; +----+-----------------+-----------+---------+---------+---------+---------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+-----------+---------+---------+---------+---------------------+------------------+ | 2 | root | localhost | NULL | Abfrage | 0 | NULL | Prozessliste anzeigen | | 3 | event_scheduler | localhost | NULL | Daemon | 6 | Warte auf leere Warteschlange | NULL| +----+-----------------+-----------+---------+---------+---------+---------------------+------------------+ 3.2.3 Schalten Sie den Ereignisplaner aus Über die Befehlszeile Sie können eine der folgenden Befehlszeilen verwenden SETZEN SIE GLOBAL event_scheduler = OFF; SETZEN Sie @@global.event_scheduler = OFF; SETZEN SIE GLOBAL event_scheduler = 0; SET @@global.event_scheduler = 0; Über die Konfigurationsdatei my.cnf Hinzufügen unter [mysqld] event_scheduler = 0 #oder AUS, DEAKTIVIERT Scheduler-Threads anzeigen mysql> Prozessliste anzeigen; +----+------+--------------+------+---------+------+---------+----------+-----------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+------+--------------+------+---------+------+---------+----------+-----------------+ | 2 | root | localhost | NULL | Abfrage | 0 | NULL | Prozessliste anzeigen | +----+------+--------------+------+---------+------+---------+----------+-----------------+ 3.3 Beispiel: Erstellen Sie eine Tabelle, um den Namen und den Ereignisstempel jedes Ereignisversands aufzuzeichnen 3.3.1 Erstellen einer Testtabelle mysql> Tabelle löschen, falls vorhanden, events_list; mysql> Tabelle „events_list“ erstellen (Eventname varchar (20) ungleich null, Event_started-Zeitstempel ungleich null); 3.3.2 Ereignis 1 anlegen (Ereignis sofort starten) Ereignis erstellen event_now planmäßig jetzt() fügen Sie in events_list Werte ein („event_now“, jetzt()); Anzeigen der Ergebnisse der Ereignisausführung mysql> wähle * aus der Ereignisliste; +------------+---------------------+ | Ereignisname | Ereignis gestartet | +------------+---------------------+ | event_now | 01.07.2014 04:06:40 | +------------+---------------------+ 3.3.3 Ereignis 2 erstellen (jede Minute ein Ereignis starten) Ereignis „test.event_minute“ erstellen planmäßig jede Minute fügen Sie in events_list Werte ein („event_now“, jetzt()); Anzeigen der Ergebnisse der Ereignisausführung mysql> wähle * aus Ereignisseliste; +------------+---------------------+ | Ereignisname | Ereignis gestartet | +------------+---------------------+ | event_now | 01.07.2014 04:26:53 | | event_now | 01.07.2014 04:27:53 | | event_now | 01.07.2014 04:28:53 | +------------+---------------------+ 3.3.3 Ereignis 3 erstellen (Ereignis jede Sekunde starten) Ereignis „event_now“ erstellen PLANMÄSSIG JEDE SEKUNDE Fügen Sie in event_test VALUES (1) Folgendes ein: 3.3.4 Ereignis 4 erstellen (jede Sekunde eine gespeicherte Prozedur aufrufen) CREATE DEFINER=`root`@`localhost` EVENT `eventUpdateStatus` PER ZEITPLAN IM JEDEN SEKUNDEN BEGINNT '2017-11-21 00:12:44' BEI FERTIGSTELLUNG BEWAHREN AKTIVIEREN Rufen Sie updateStatus() auf. 3.4 Hinweis: Standardmäßig wird das erstellte Ereignis in der aktuellen Bibliothek gespeichert. Sie können sich auch die Bibliothek anzeigen lassen, in der das angegebene Ereignis erstellt wird. Über „Ereignisse anzeigen“ können Sie nur die in der aktuellen Bibliothek erstellten Ereignisse anzeigen. Das Ereignis wird nach der Ausführung freigegeben. Wenn das Ereignis sofort ausgeführt wird, wird es nach der Ausführung automatisch gelöscht. Sie können die Mehrfachaufrufe oder wartenden Ereignisse anzeigen. Wenn zwei Ereignisse gleichzeitig aufgerufen werden müssen, bestimmt MySQL die Reihenfolge, in der sie aufgerufen werden. Wenn Sie die Reihenfolge angeben möchten, müssen Sie sicherstellen, dass ein Ereignis mindestens 1 Sekunde nach dem anderen Ereignis ausgeführt wird. Bei rekursiv geplanten Ereignissen kann das Enddatum nicht vor dem Startdatum liegen. Eine Auswahl kann in ein Ereignis aufgenommen werden, ihre Ergebnisse verschwinden jedoch, als wäre sie nicht ausgeführt worden. 4 Ereignisse anzeigen Veranstaltungen der aktuellen Bibliothek anzeigen mysql> Ereignisse anzeigen; Alle Events anzeigen mysql> wähle * aus mysql.event; Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Unterschieds zwischen Docker-Compose-Ports und Expose
>>: So verarbeiten Sie lokal dynamisch geladene Bilder in Vue
Front-End-Technologieschicht (Das Bild ist etwas e...
Detaillierte Erläuterung der Implementierungsmeth...
<br />Mit diesem Tag können Sie ein mehrzeil...
Finden Sie das Problem Ich habe kürzlich den Spei...
Inhaltsverzeichnis Über Trigger Verwendung von Tr...
Nehmen wir als Beispiel das Übersetzungsprogramm....
FileReader ist eine wichtige API für die Frontend...
Vorbemerkungen 1.Unterschiede zwischen Vue2.x und...
Dieser Artikel stellt den Implementierungscode fü...
Inhaltsverzeichnis Entdecken Sie: Anwendung von D...
Vorwort Das Dateisystem ist für die Organisation ...
Dieser Artikel erläutert anhand von Beispielen di...
Inhaltsverzeichnis Vorwort 1. Einfügen von ignore...
Werfen wir einen Blick auf den Installationsproze...
Einführung Heute habe ich gelernt, wie man mit Py...