Erfahren Sie mehr über den Ereignisplaner EVENT in MySQL

Erfahren Sie mehr über den Ereignisplaner EVENT in MySQL

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:

  • Starten Sie MySQL mit Kommandozeilenparametern

--event-scheduler=DEAKTIVIERT

  • Konfigurieren von Parametern in der MySQL-Konfigurationsdatei

event_scheduler=DEAKTIVIERT

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.
1) Erstellen Sie eine Tabelle.

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:
  • Erste Schritte mit gespeicherten Prozeduren, Triggern und Ereignisplanern in MySQL
  • MySQL-Datenbank-Trigger vom Anfänger bis zum Profi
  • Detaillierte Erläuterung des MySQL-Trigger-Trigger-Beispiels
  • Einführung in die Verwendung sowie Vor- und Nachteile von MySQL-Triggern
  • Detaillierte Erläuterung der Idee des MySQL-Triggers zur Echtzeiterkennung einer Anweisung zum Sichern und Löschen
  • MySQL verwendet Ereignisse, um geplante Aufgaben abzuschließen
  • So konfigurieren Sie geplante MySQL-Aufgaben (EVENT-Ereignisse) im Detail
  • Analyse der geplanten Aufgaben und Ereignisplanungsbeispiele von MySQL
  • Themenverfeinerung für MySQL-Ereignisse und -Trigger

<<:  Detaillierte Erläuterung der Js-Klassenkonstruktion und Vererbungsfälle

>>:  Detaillierte Schritte zur Installation eines Webservers mit Apache httpd2.4.37 auf centos8

Artikel empfehlen

Zwei Arten von Tab-Anwendungen im Webdesign

Heutzutage werden Registerkarten häufig im Webdes...

js, um einen einfachen Lupeneffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

MySQL-Grundlagen - Kurzanleitung - Wissenszusammenfassung (mit Mindmap)

Inhaltsverzeichnis Vorwort 1. Grundkenntnisse der...

Methode zum Knacken der Registrierung der FlashFXP-FTP-Clientsoftware

Die Downloadadresse von FlashFXP lautet: https://...

3 Codes zur automatischen Aktualisierung von Webseiten

Tatsächlich ist es sehr einfach, diesen Effekt zu ...

Eine kurze Analyse von MySQL-Sperren und -Transaktionen

MySQL selbst wurde auf Basis des Dateisystems ent...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

So sichern Sie MySQL-Kontoinformationen elegant

Vorwort: Ich bin kürzlich auf das Problem der Ins...

So installieren Sie den MySQL 5.7.28-Binärmodus unter CentOS 7.4

Linux-Systemversion: CentOS7.4 MySQL-Version: 5.7...

Neun erweiterte Methoden zur Deduplizierung von JS-Arrays (erprobt und effektiv)

Vorwort Die allgemeinen Methoden sind hier nicht ...

Entwerfen Sie einen Datensammler mit Vue

Inhaltsverzeichnis Szenario Kernthemen Statusüber...

Verwendung der Linux Dynamic Link Library

Im Vergleich zu gewöhnlichen Programmen haben dyn...