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

Installieren Sie Memcached und die PHP Memcached-Erweiterung unter CentOS

In Bezug auf das leistungsstarke verteilte Speich...

VMWare Linux MySQL 5.7.13 Installations- und Konfigurationstutorial

In diesem Artikel finden Sie das Tutorial zur Ins...

Detaillierte Erklärung des MySQL-Prepare-Prinzips

Vorteile von Prepare Der Grund, warum Prepare SQL...

Kreatives „Über uns“-Webseitendesign

Einzigartige „Über“-Seiten Eine gute Möglichkeit, ...

Docker-Konfiguration Alibaba Cloud Container Service-Betrieb

Konfigurieren des Alibaba Cloud Docker Container ...

Manuelle und geplante Sicherungsschritte für die MySQL-Datenbank

Inhaltsverzeichnis Manuelle Sicherung Timer-Siche...

Docker-Container: benutzerdefinierter Host-Netzwerkzugriffsvorgang

Durch Hinzufügen des Schlüsselworts extra_hosts i...

So implementieren Sie die Ein-Klick-Bereitstellung von NFS unter Linux

Serverinformationen Verwaltungsserver: m01 172.16...

js+css zur Realisierung eines dreistufigen Navigationsmenüs

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierter Prozessbericht der Nginx-Installation und -Konfiguration

Inhaltsverzeichnis 1 Einführung in nginx 1 Was is...

Zusammenfassung der Verwendung von JavaScript JSON.stringify()

Inhaltsverzeichnis 1. Nutzung 1. Grundlegende Ver...

Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)

Inhaltsverzeichnis 1. Was ist Lazy Loading? 2. Im...