Detaillierte Erklärung der Truncate-Verwendung in MySQL

Detaillierte Erklärung der Truncate-Verwendung in MySQL

Vorwort:

Wenn wir eine Tabelle löschen möchten, verwenden wir häufig die Truncate-Anweisung. Meistens kümmern wir uns nur darum, ob die Anforderungen erfüllt werden können, ohne über die Anwendungsszenarien und Vorsichtsmaßnahmen solcher Aussagen nachzudenken. Dieser Artikel stellt hauptsächlich die Verwendung und Vorsichtsmaßnahmen der Truncate-Anweisung vor.

1.Truncate-Verwendungssyntax

Die Funktion von Truncate besteht darin, die Tabelle zu löschen oder abzuschneiden, und kann nur auf die Tabelle angewendet werden. Die Syntax von „truncate“ ist sehr einfach, lassen Sie einfach den Tabellennamen folgen, zum Beispiel: truncate table tbl_name oder truncate tbl_name .

Zum Ausführen der Truncate-Anweisung ist die Drop-Berechtigung für die Tabelle erforderlich. Logisch gesehen ähnelt Truncate Table einer Delete-Anweisung, die alle Zeilen löscht, oder einer Kombination aus Drop Table und anschließender Create Table-Anweisung. Um eine hohe Leistung zu erreichen, wird die DML-Methode zum Löschen von Daten umgangen, sodass kein Rollback möglich ist. Obwohl „truncate table“ dem „delete“ ähnelt, wird es als DDL-Anweisung und nicht als DML-Anweisung klassifiziert.

2. Vergleich zwischen Truncate, Drop und Delete

Wie oben erwähnt, ist Truncate Delete und Drop sehr ähnlich. Tatsächlich gibt es zwischen diesen dreien noch erhebliche Unterschiede. Im Folgenden finden Sie einen kurzen Vergleich der Ähnlichkeiten und Unterschiede zwischen den dreien.

  • „truncate“ und „drop“ sind DDL-Anweisungen und können nach der Ausführung nicht zurückgesetzt werden; „delete“ ist eine DML-Anweisung und kann zurückgesetzt werden.
  • „truncate“ kann nur auf Tabellen angewendet werden; „delete“ und „drop“ können auf Tabellen, Ansichten usw. angewendet werden.
  • Mit Truncate werden alle Zeilen in der Tabelle gelöscht, die Tabellenstruktur und ihre Einschränkungen, Indizes usw. bleiben jedoch unverändert. Mit drop werden die Tabellenstruktur und die Einschränkungen, Indizes usw. gelöscht, von denen sie abhängt.
  • Durch Abschneiden wird der Autoinkrementwert der Tabelle zurückgesetzt. Durch Löschen geschieht dies nicht.
  • Durch Truncate werden die mit der Tabelle verknüpften Löschtrigger nicht aktiviert; durch Löschen geschieht dies.
  • Nach dem Abschneiden wird der von der Tabelle und dem Index belegte Speicherplatz auf die ursprüngliche Größe zurückgesetzt. Der Löschvorgang verringert den von der Tabelle oder dem Index belegten Speicherplatz nicht und die Drop-Anweisung gibt den gesamten von der Tabelle belegten Speicherplatz frei.

3. Nutzungsszenarien und Vorsichtsmaßnahmen einschränken

Durch die vorherige Einführung können wir das Verwendungsszenario der Truncate-Anweisung leicht ableiten, dh Truncate kann verwendet werden, wenn die Tabellendaten völlig unnötig sind. Wenn Sie einige Daten löschen möchten, verwenden Sie „delete“, und denken Sie daran, eine Where-Klausel einzuschließen. Wenn Sie eine Tabelle löschen möchten, verwenden Sie natürlich „drop“. Wenn Sie die Tabelle behalten und alle Daten löschen möchten und diese nichts mit Transaktionen zu tun haben, verwenden Sie „truncate“. Wenn sie mit Transaktionen zusammenhängt oder Sie einen Trigger auslösen möchten, verwenden Sie trotzdem „delete“. Wenn Sie die Fragmente innerhalb der Tabelle sortieren möchten, können Sie „truncate“ verwenden und die Daten anschließend erneut einfügen.

In jedem Fall ist das Abschneiden von Tabellen ein risikoreicher Vorgang, insbesondere in Produktionsumgebungen müssen Sie vorsichtiger sein. Hier sind einige zu beachtende Punkte. Ich hoffe, Sie können sie bei der Verwendung als Referenz verwenden.

  • Truncate kann nicht über Binärlog zurückgesetzt werden.
  • Truncate löscht alle Daten und wird sehr schnell ausgeführt.
  • Truncate kann nicht auf Tabellen angewendet werden, auf die durch Fremdschlüsseleinschränkungen verwiesen wird.
  • Zum Ausführen von Truncate ist die Drop-Berechtigung erforderlich. Es wird nicht empfohlen, dem Konto die Drop-Berechtigung zu erteilen.
  • Überprüfen und bestätigen Sie unbedingt noch einmal, bevor Sie Truncate ausführen. Am besten sichern Sie die folgenden Tabellendaten vorher.

Oben finden Sie eine ausführliche Erklärung des Herausgebers zur Verwendung von Truncate in MySQL. Ich hoffe, dass sie für alle hilfreich ist. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Truncate-Verwendung in MySQL
  • Detaillierte Erklärung der MySQL Truncate-Verwendung

<<:  CSS realisiert Div vollständig zentriert, ohne Höhe festzulegen

>>:  Lösung für den Konflikt zwischen zwei Registerkartennavigation in HTML

Artikel empfehlen

So stellen Sie ein Vue-Projekt unter Nginx bereit

Heute werde ich den Server nginx verwenden und mu...

Fallstudie zum Unterschied zwischen JavaScript parseInt() und Number()

Lernziele: Die beiden Funktionen parseInt() und N...

IIS und APACHE implementieren die HTTP-Umleitung auf HTTPS

IIS7 Laden Sie das HTTP Rewrite-Modul von der off...

Vue 2.0 Grundlagen im Detail

Inhaltsverzeichnis 1. Funktionen 2. Beispiele 3. ...

Versteckter Overhead von Unix/Linux-Forks

Inhaltsverzeichnis 1. Der Ursprung der Gabel 2. F...

Analyse und Lösung zur Leistungsoptimierung von Vue.js-Anwendungen

Inhaltsverzeichnis 1. Einleitung 2. Warum brauche...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

Beispiel für eine erzwungene Konvertierungsmethode für MySQL-Zeichenfolgen

Vorwort Da die Typen derselben Felder in den beid...

So zeigen Sie historische Befehle in Linux an und führen sie aus

Historische Befehle anzeigen und bestimmte Befehl...

Kompilieren Sie CPP-Dateien mit G++ in Ubuntu

Als ich die CPP-Datei zum ersten Mal mit G++ komp...

HTML als Startseite festlegen und zu Favoriten hinzufügen_Powernode Java Academy

So implementieren Sie die Funktionen „Als Startse...

CSS-Code zum Erstellen von 10 modernen Layouts

Vorwort Ich habe mir am Sonntag zu Hause das drei...

Django2.* + Mysql5.7-Entwicklungsumgebung Integrations-Tutorial-Diagramm

Umfeld: MAC_OS 10.12 Python 3.6 MySQL 5.7.25 Djan...