Der Ereignisplaner in MySQL, EVENT, wird auch als geplante Aufgabe bezeichnet, ähnlich der Unix-Crontab oder dem Windows-Aufgabenplaner. Ein EREIGNIS wird eindeutig durch seinen Namen und das Schema, in dem es sich befindet, identifiziert. EVENT führt bestimmte Aktionen nach einem Zeitplan aus. Eine Operation besteht aus SQL-Anweisungen, die ein BEGIN...END-Anweisungsblock sein können. Ein EREIGNIS kann einmalig oder wiederkehrend sein. Ein einmaliges EREIGNIS wird nur einmal ausgeführt, während ein periodisches EREIGNIS seinen Vorgang in festgelegten Abständen wiederholt. Sie können das Startdatum und die Startzeit sowie das Enddatum und die Endzeit für ein periodisches EREIGNIS angeben. (Standardmäßig beginnt ein wiederkehrendes Ereignis unmittelbar nach seiner Erstellung und dauert unbegrenzt an, bis es deaktiviert oder gelöscht wird.) EVENT wird von einem speziellen Ereignisplanungs-Thread ausgeführt, der mit SHOW PROCESSLIST angezeigt werden kann. root@database-one 13:44: [gftest]> Variablen wie „%scheduler%“ anzeigen; +-----------------+--------+ | Variablenname | Wert | +-----------------+--------+ | event_scheduler | AUS | +-----------------+--------+ 1 Zeile im Satz (0,01 Sek.) root@database-one 13:46: [gftest]> Prozessliste anzeigen; +--------+------+----------------------+-----------+---------+------+----------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +--------+------+----------------------+-----------+---------+------+----------+------------------+ ...... +--------+------+----------------------+-----------+---------+------+----------+------------------+ 245 Zeilen im Satz (0,00 Sek.) root@database-one 13:46: [gftest]> setze globalen event_scheduler=1; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) root@database-one 13:47: [gftest]> Variablen wie „%scheduler%“ anzeigen; +-----------------+--------+ | Variablenname | Wert | +-----------------+--------+ | event_scheduler | EIN | +-----------------+--------+ 1 Zeile im Satz (0,01 Sek.) root@database-one 13:47: [gftest]> Prozessliste anzeigen; +--------+-----------------+----------------------+----------+---------+---------+---------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +--------+-----------------+----------------------+----------+---------+---------+---------+------------------------+------------------+ ...... | 121430 | event_scheduler | localhost | NULL | Daemon | 33 | Warte auf leere Warteschlange | NULL | ...... +--------+-----------------+----------------------+----------+---------+---------+---------+------------------------+------------------+ 246 Zeilen im Satz (0,01 Sek.) Wie Sie sehen, ist MySQLs EVENT standardmäßig nicht aktiviert. Sie können EVENT ein- oder ausschalten, indem Sie den Parameter event_scheduler festlegen. Nach dem Öffnen wird ein zusätzlicher „event_scheduler“ vorhanden sein, bei dem es sich um den Thread für die Ereignisplanung handelt. Neben dem Öffnen und Schließen können Sie auch deaktivieren. Um ein EREIGNIS zu deaktivieren, verwenden Sie eine der folgenden beiden Methoden:
Die vollständige Syntax zum Erstellen eines EVENT in MySQL 5.7 lautet wie folgt: ERSTELLEN [DEFINER = Benutzer] EREIGNIS [WENN NICHT EXISTIERT] Ereignisname IM ZEITPLAN Zeitplan [NACH ABSCHLUSS [NICHT] BEWAHREN] [AKTIVIEREN | DEAKTIVIEREN | AUF SLAVE DEAKTIVIEREN] [KOMMENTAR 'Zeichenfolge'] 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} Detaillierte Anweisungen finden Sie auf der offiziellen Website https://dev.mysql.com/doc/refman/5.7/en/create-event.html Lassen Sie uns dies anhand eines Beispiels überprüfen. root@database-one 13:47: [gftest]> Tabelle erstellen Testevent (ID int auto_increment Primärschlüssel, Erstellungszeit Datum/Uhrzeit); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) root@database-one 13:50: [gftest]> wähle * aus Testevent; Leerer Satz (0,00 Sek.) 2) Erstellen Sie ein EREIGNIS und fügen Sie alle 3 Sekunden einen Datensatz in die Tabelle ein. root@database-one 13:50: [gftest]> erstelle das Ereignis insert_date_testevent planmäßig alle 3 Sekunden -> in Testereignis (Erstellungszeit) Werte (jetzt ()) einfügen; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) root@database-one 13:53: [gftest]> Ereignisse anzeigen \G *************************** 1. Reihe *************************** Datenbank: gftest Name: insert_date_testevent Definierer: root@% Zeitzone: +08:00 Typ: WIEDERKEHREND Ausführen bei: NULL Intervallwert: 3 Intervallfeld: SECOND Beginn: 26.03.2020 13:53:10 Endet: NULL Status: AKTIVIERT Urheber: 1303306 Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci Datenbanksortierung: utf8_general_ci 1 Zeile im Satz (0,00 Sek.) 3) Fragen Sie nach einer Weile die Daten in der Tabelle ab. root@database-one 13:53: [gftest]> wähle * aus Testevent; +----+---------------------+ | ID | Erstellungszeit | +----+---------------------+ | 1 | 26.03.2020 13:53:10 | | 2 | 26.03.2020 13:53:13 | | 3 | 26.03.2020 13:53:16 | | 4 | 26.03.2020 13:53:19 | | 5 | 26.03.2020 13:53:22 | | 6 | 26.03.2020 13:53:25 | | 7 | 26.03.2020 13:53:28 | | 8 | 26.03.2020 13:53:31 | | 9 | 26.03.2020 13:53:34 | | 10 | 26.03.2020 13:53:37 | | 11 | 26.03.2020 13:53:40 | | 12 | 26.03.2020 13:53:43 | | 13 | 26.03.2020 13:53:46 | | 14 | 26.03.2020 13:53:49 | | 15 | 26.03.2020 13:53:52 | | 16 | 26.03.2020 13:53:55 | +----+---------------------+ 16 Zeilen im Satz (0,00 Sek.) Anhand der Daten in der Tabelle können wir erkennen, dass die erstellte Einfügetimeraufgabe normal ausgeführt wird. Zusätzlich zur Verwendung des Befehls „show event“ können Sie die detaillierten Informationen zu EVENT auch von mysql.event oder information_schema.events abfragen oder den Befehl „show create event“ verwenden, um sie anzuzeigen. root@database-one 00:09: [gftest]> wähle * aus mysql.event \G *************************** 1. Reihe *************************** db:gftest Name: insert_date_testevent body: in Testereignis (Erstellungszeit) Werte (jetzt()) einfügen Definierer: root@% execute_at: NULL Intervallwert: 3 Intervallfeld: SEKUNDE erstellt: 2020-03-26 13:53:10 geändert: 2020-03-26 13:53:10 zuletzt ausgeführt: 26.03.2020 16:09:37 Beginn: 26.03.2020 05:53:10 endet: NULL Status: AKTIVIERT bei_Abschluss: DROP SQL-Modus: NUR_VOLLSTÄNDIGE_GRUPPE_NACH, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTOMATISCHES_ERSTELLEN_BENUTZER, KEINE_ENGINE_SUBSTITUTION Kommentar: Urheber: 1303306 Zeitzone: +08:00 Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci db_collation: utf8_general_ci body_utf8: in Testereignis (Erstellungszeit) Werte (jetzt ()) einfügen 1 Zeile im Satz (0,00 Sek.) root@database-one 00:09: [gftest]> wähle * aus information_schema.events \G *************************** 1. Reihe *************************** EVENT_CATALOG: def EVENT_SCHEMA: gftest EVENT_NAME: insert_date_testevent DEFINIERER: root@% ZEITZONE: +08:00 EVENT_BODY: SQL EVENT_DEFINITION: in Testevent(create_time) Werte(now()) einfügen EVENT_TYPE: WIEDERKEHREND EXECUTE_AT: NULL INTERVAL_VALUE: 3 INTERVAL_FIELD: SEKUNDE SQL_MODE: NUR_VOLLSTÄNDIGE_GRUPPE_NUR, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTO_CREATE_USER, KEINE_ENGINE_SUBSTITUTION BEGINNT: 2020-03-26 13:53:10 ENDE: NULL STATUS: AKTIVIERT ON_COMPLETION: NICHT ERHALTEN ERSTELLT: 2020-03-26 13:53:10 LAST_ALTERED: 2020-03-26 13:53:10 LETZTE AUSFÜHRUNG: 27.03.2020 00:10:22 EVENT_COMMENT: Urheber: 1303306 CHARACTER_SET_CLIENT: utf8 COLLATION_CONNECTION: utf8_general_ci DATABASE_COLLATION: utf8_general_ci 1 Zeile im Satz (0,02 Sek.) root@database-one 00:10: [gftest]> zeige Ereignis „Erstellen“ insert_date_testevent \G *************************** 1. Reihe *************************** Ereignis: insert_date_testevent SQL-Modus: NUR_VOLLSTÄNDIGE_GRUPPE_NACH, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTOMATISCHES_ERSTELLEN_BENUTZER, KEINE_ENGINE_SUBSTITUTION Zeitzone: +08:00 Ereignis erstellen: CREATE DEFINER=`root`@`%` EVENT `insert_date_testevent` NACH ZEITPLAN ALLE 3 SEKUNDEN BEGINNT '2020-03-26 13:53:10' NACH ABSCHLUSS NICHT BEIBEHALTEN AKTIVIEREN IN TESTEVENT (create_time) EINFÜGEN Werte (jetzt()) Zeichensatzclient: utf8 Sortierverbindung: utf8_general_ci Datenbanksortierung: utf8_general_ci 1 Zeile im Satz (0,00 Sek.) Oben finden Sie den detaillierten Inhalt des Ereignisplaners EVENT in MySQL. Weitere Informationen zum MySQL-Ereignisplaner EVENT finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Js-Klassenkonstruktion und Vererbungsfälle
>>: Detaillierte Schritte zur Installation eines Webservers mit Apache httpd2.4.37 auf centos8
Vorwort Als wir das Pferd geschrieben haben, wuss...
1. Laden Sie die virtuelle Maschine Version 15.5....
Heutzutage werden Registerkarten häufig im Webdes...
In diesem Artikel wird der spezifische Code von j...
Lassen Sie mich Ihnen zunächst vorstellen, dass d...
Inhaltsverzeichnis Vorwort 1. Grundkenntnisse der...
Die Downloadadresse von FlashFXP lautet: https://...
Tatsächlich ist es sehr einfach, diesen Effekt zu ...
MySQL selbst wurde auf Basis des Dateisystems ent...
Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...
Vorwort: Ich bin kürzlich auf das Problem der Ins...
Linux-Systemversion: CentOS7.4 MySQL-Version: 5.7...
Vorwort Die allgemeinen Methoden sind hier nicht ...
Inhaltsverzeichnis Szenario Kernthemen Statusüber...
Im Vergleich zu gewöhnlichen Programmen haben dyn...