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

Eine kurze Analyse des Kimono-Memo-Problems

Heute musste ich nach dem Neustart des Spiels fes...

CocosCreator klassisches Einstiegsprojekt flappybird

Inhaltsverzeichnis Entwicklungsumgebung Game-Engi...

Implementierungscode für die nahtlose Verbindung des Div-Bildlaufbands

Code kopieren Der Code lautet wie folgt: <html...

Zusammenfassung der wichtigsten Erkenntnisse des Vue-Entwicklungshandbuchs

Inhaltsverzeichnis Überblick 0. Grundlagen von Ja...

So führen Sie ein Python-Skript auf Docker aus

Erstellen Sie zunächst ein spezielles Projektverz...

Vue+Swiper realisiert Timeline-Effekt

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

Installieren des Win10-Systems auf VMware Workstation 14 Pro

Dieser Artikel beschreibt zu Ihrer Information, w...

Vertikales und horizontales Aufteilen von MySQL-Tabellen

Vertikale Teilung Vertikale Aufteilung bezieht si...

Reflexion und Proxy in Front-End-JavaScript

Inhaltsverzeichnis 1. Was ist Reflexion? 2. Refle...

Detaillierte Erklärung der Whitelist-Regeln von nginx-naxsi

Syntax der Whitelist-Regel: Grundregel wl:ID [neg...

jQuery implementiert dynamische Tag-Ereignisse

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