MySQL-Batch löschen großer Datenmengen

MySQL-Batch löschen großer Datenmengen

MySQL-Batch löschen großer Datenmengen

Angenommen, es gibt eine Tabelle (Syslogs) mit 10 Millionen Datensätzen. Sie müssen alle Datensätze mit Status-ID=1 löschen, ohne den Geschäftsbetrieb zu unterbrechen. Es handelt sich um etwa 6 Millionen Datensätze. Wenn Sie DELETE FROM syslogs WHERE statusid=1 direkt ausführen, werden Sie feststellen, dass das Löschen aufgrund des Fehlers „Timeout für Wartezeit für Sperre überschritten“ fehlschlägt.

Da diese Anweisung zu viele Datensätze betrifft, löschen wir sie stapelweise mithilfe des Parameters LIMIT, beispielsweise alle 10.000 Datensätze.

MySQL kann mit der folgenden Anweisung vervollständigt werden:

 LÖSCHEN AUS Syslogs, WO Status=1 ORDER BY Status-ID LIMIT 10000;

Anschließend können Sie durch mehrmalige Ausführung diese Datensätze erfolgreich löschen.

Notiz:

Achten Sie bei umfangreichen Löschungen darauf, das Limit zu verwenden. Denn wenn Sie kein Limit verwenden, führt das Löschen einer großen Datenmenge wahrscheinlich zu einem Deadlock.

Wenn die Where-Klausel zum Löschen nicht im Index enthalten ist, können Sie zuerst den Primärschlüssel suchen und dann die Datenbank basierend auf dem Primärschlüssel löschen.

Um versehentliche Vorgänge zu verhindern, fügen Sie beim Aktualisieren und Löschen am besten das Limit 1 hinzu.

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Code zum Batch-Löschen von Datentabellen mit demselben Präfix in Mysql in PHP

<<:  Vue2.x - Beispiel für die Verwendung von Anti-Shake und Throttling

>>:  Wie stelle ich Tomcat als automatisch gestarteten Dienst ein? Der schnellste Weg

Artikel empfehlen

MySQL-Serie 15: Allgemeine MySQL-Konfiguration und Leistungsstresstest

1. Allgemeine MySQL-Konfiguration Alle folgenden ...

Unterschiede zwischen ES6-Vererbung und ES5-Vererbung in js

Inhaltsverzeichnis Nachlass ES5-Prototypvererbung...

Allgemeine Betriebsbefehle von MySQL im Linux-System

Aufschlag: # chkconfig --list Alle Systemdienste ...

CSS Flex mehrere mehrspaltige Layouts

Grundlegendes dreispaltiges Layout .Container{ An...

Detaillierte Erläuterung des MySQL-Indexprinzips und der Abfrageoptimierung

Inhaltsverzeichnis 1. Einleitung 1. Was ist ein I...

Tutorial zum Bereitstellen von JDK und Tomcat auf CentOS7 ohne Schnittstelle

1. Installieren Sie xshell6 2. Stellen Sie eine S...

Eine kurze Beschreibung der Beziehung zwischen k8s und Docker

In letzter Zeit verwendet das Projekt Kubernetes ...

CSS kompletter Parallax-Scrolling-Effekt

1. Was ist Beim Parallax-Scrolling handelt es sic...

Top 10 der nützlichsten und wichtigsten Open-Source-Tools im Jahr 2019

In der Open-Source-Umfrage von Black Duck aus dem...

js um das Schlangenspiel mit Kommentaren zu implementieren

In diesem Artikelbeispiel wird der spezifische Co...