Mysql implementiert die regelmäßige Bereinigung alter Daten in einer Tabelle und die Beibehaltung mehrerer Datenstücke (empfohlen)

Mysql implementiert die regelmäßige Bereinigung alter Daten in einer Tabelle und die Beibehaltung mehrerer Datenstücke (empfohlen)

Um folgende Ziele zu erreichen:

Die MySQL-Datenbank beurteilt eine Tabelle in einer Bibliothek in regelmäßigen Abständen (dies kann alle 2 Stunden oder alle 24 Stunden erfolgen, dies kann angepasst werden). Wenn die Daten in dieser Tabelle 20 Datensätze überschreiten (diese Daten werden ebenfalls angepasst, es können auch 200 Datensätze sein), werden die letzten 10 Datensätze beibehalten (diese Daten können ebenfalls angepasst werden, müssen jedoch kleiner oder gleich der vorherigen Anzahl von Datensätzen sein).

Lassen Sie mich kurz auf die Lösung eingehen (von hinten nach vorne abgeleitet):

1. Starten Sie einen Timer, der zwei Dinge tut:

⑴Stellen Sie das Zeitintervall ein

⑵Rufen Sie eine gespeicherte Prozedur auf

2. Schreiben Sie eine gespeicherte Prozedur, die zwei Dinge tut:

⑴ Bestimmen Sie, ob die Anzahl der Dateneinträge in der Tabelle 20 überschreitet. Wenn sie 20 überschreitet, führen Sie die folgenden Schritte aus.

⑵ Behalten Sie die letzten 10 Daten und löschen Sie den Rest der alten Daten. Dies erfordert, dass die Tabelle eine zunehmende Primärschlüssel-ID haben muss, sodass der Wert der neuesten Daten-ID größer ist. Suchen Sie einfach die größte ID in der aktuellen Tabelle und subtrahieren Sie 10, um einen „Löschknoten“ zu erhalten. Schreiben Sie dann „where ID < „Löschknoten““ in die Löschanweisung. Auch wenn das Ergebnis möglicherweise nicht genau ist, kann der Effekt in etwa erreicht werden.

Angenommen, es gibt eine Datentabelle mit einer Primärschlüssel-ID, die erhöht wird. Die Daten in dieser Tabelle werden weiter zunehmen. Jetzt müssen wir alle 5 Sekunden die neuesten 10 Daten in der Datentabelle behalten und die anderen löschen.

Der Code-Prozess ist wie folgt:

1. Definieren Sie zunächst eine gespeicherte Prozedur mit dem Namen pro_clear_data. Beachten Sie, dass der vertikale Strich („|“) nicht fehlen darf.

TRENNUNGSZEICHEN |
 DROP-VERFAHREN, WENN PRO_CLEAR_DATA VORHANDEN IST |
 PROZEDUR ERSTELLEN pro_clear_data()
  BEGINNEN 
  
   SET @datas_count=(SELECTCOUNT(id) FROM Daten);
	   WENN(@datas_count>20) DANN
	  
   SET @max_id=(SELECT MAX(id) FROM Daten);  
	 SET @max_id = @max_id - 10;
    LÖSCHEN AUS `datas`, WO id<@max_id;   
  ENDE, WENN;
  
  ENDE
 |

2. Erstellen Sie einen Timer mit dem Namen event_time_clear_data

SETZEN SIE GLOBAL event_scheduler = 1; 
 EREIGNIS ERSTELLEN, WENN NICHT VORHANDEN event_time_clear_data
 
 PER PLAN ALLE 5 SEKUNDEN
 
 BEI FERTIGSTELLUNG BEWAHREN 
 
Rufen Sie pro_clear_data() auf;

3. Dies ist das Einfachste, aber auch das Wichtigste. Wir müssen den Timer manuell starten, sonst funktioniert er nicht.

ALTER EVENT event_time_clear_data ON 
 
ABGESCHLOSSENHEIT BEWAHREN AKTIVIEREN;

Erstellen Sie gespeicherte Prozeduren und Timercodes separat.

Die Daten werden alle 5 Sekunden automatisch gelöscht und die letzten 10 Datensätze bleiben erhalten.

Darüber hinaus lautet der Code zum Ausschalten des Timers:

ALTER EVENT event_time_clear_data ON 
 
 ABSCHLUSS BEWAHREN DEAKTIVIEREN;

Der Code zum Löschen der gespeicherten Prozedur lautet:

DROP-VERFAHREN pro_clear_data;

Über die Veranstaltung:

In MySQL Version 5.1 wurde mit der Einführung des Ereigniskonzepts begonnen. Ein Ereignis ist ein „Zeitauslöser“, der sich vom Ereignisauslöser von Auslösern unterscheidet. Ein Ereignis ähnelt der geplanten Linux-Crontab-Aufgabe und wird für die Zeitauslösung verwendet. Durch alleinige Verwendung oder den Aufruf einer gespeicherten Prozedur wird die zugehörige SQL-Anweisung oder gespeicherte Prozedur zu einem bestimmten Zeitpunkt ausgelöst.

Ereignis löschen:

Ereignis löschen, wenn vorhanden event_time_clear_data1

Dies ist das Ende dieses Artikels über die Implementierung von MySQL, um alte Daten in einer Tabelle regelmäßig zu löschen und mehrere Datenstücke beizubehalten. Weitere relevante Inhalte zur regelmäßigen Datenlöschung von MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel und Analyse zum Löschen von MySQL-Datentabellen
  • MySQL-Abfrage doppelter Daten (löschen Sie doppelte Daten und behalten Sie die Daten mit der kleinsten ID als einzige Daten)
  • Mysql löscht doppelte Daten, um die kleinste ID-Lösung beizubehalten
  • Detaillierte Erklärung, wie man doppelte Daten in MySQL findet und löscht und nur ein Beispiel behält

<<:  Einige Parameterbeschreibungen von Texteingabefeldern im Webdesign

>>:  Eine kurze Diskussion zum Verständnis von TypeScript-Indexsignaturen

Artikel empfehlen

MySQL 8.0.19 Win10 - Schnellinstallations-Tutorial

Dieses Tutorial enthält das Installationstutorial...

9 praktische CSS-Eigenschaften, die Web-Frontend-Entwickler kennen müssen

1. Abgerundete Ecken Heutige Webdesigns halten stä...

Detaillierte Erklärung des Hintergrund-Positionsprozentsatzprinzips

Als ich heute jemandem beim Anpassen des Codes ha...

Codebeispiele für die Sicherung mehrerer MySQL-Datenbanken

In diesem Artikel werden hauptsächlich Codebeispi...

MySQL lernen: Drei Paradigmen für Anfänger

Inhaltsverzeichnis 1. Paradigmenfundament 1.1 Der...

Warum verwendet der MySQL-Datenbankindex den B+-Baum?

Bevor wir weiter analysieren, warum der MySQL-Dat...

Ursachen und Lösungen für den MySQL-Fehler „zu viele Verbindungen“

Inhaltsverzeichnis Kurzzusammenfassung Heute Mitt...

Inaktive Benutzer nach einem Login-Timeout in Linux automatisch abmelden

Methode 1: Ändern Sie die Datei .bashrc oder .bas...

Detaillierte Erklärung des HTML-Seitenkopfcodebeispiels

Wissenspunkt 1: Legen Sie die Basis-URL der Webse...

Zusammenfassung häufig verwendeter SQL-Operationen in MySQL-Tabellen

1. Sehen Sie sich die Feldtypen in der Tabelle an...