MySQL-Transaktionsanalyse

MySQL-Transaktionsanalyse

Transaktion

Eine Transaktion ist eine grundlegende Einheit der Geschäftslogik.

Jede Transaktion besteht aus einer Reihe von SQL-Anweisungen.

DML-Anweisungen im Zusammenhang mit Transaktionen ( insert , delete , update )

Die Existenz von Transaktionen gewährleistet die Sicherheit der Daten.

Transaktionsmechanismus:

Bei jeder Ausführung einer DML-Anweisung wird der Vorgang aufgezeichnet, die Daten werden jedoch nicht geändert.

Führen Sie abschließend ein Commit der Transaktion aus (Datensätze löschen, Festplattendaten ändern) oder machen Sie die Transaktion rückgängig (Datensätze löschen, Daten nicht ändern).

Transaktionen haben vier Hauptmerkmale : ACID

  • A: Atomarität, eine Transaktion ist die kleinste Arbeitseinheit
  • C: Konsistenz, DML-Anweisungen in einer Transaktion sind entweder alle erfolgreich oder alle schlagen fehl
  • I: Isolation, Isolation zwischen Transaktionen.
  • D: Persistenz, die Daten werden endgültig auf der Festplatte gespeichert, bevor sie enden.

Transaktionsisolationsebene:

1. read uncommitted bedeutet, dass eine Transaktion Daten lesen kann, die eine andere Transaktion nicht festgeschrieben hat.

Dieses Level weist das Dirty-Read-Phänomen auf

2. Read ead committed , Sie können die festgeschriebenen Daten lesen

Diese Ebene löst das Dirty-Read-Problem, kann jedoch nicht wiederholt gelesen werden.

3. repeatable read : Die von einer Transaktion gelesenen Daten sind unabhängig von den von anderen Transaktionen übermittelten Daten. Die Daten zu Beginn der Transaktion können wiederholt gelesen werden.

Das Problem der nicht wiederholbaren Lesevorgänge ist gelöst, aber Phantomlesevorgänge sind weiterhin vorhanden und die gelesenen Daten sind nicht real.

4. Serialisiertes Lesen/serialisiertes Lesen. Alle Probleme sind gelöst, ähnlich wie die Thread-Sicherheit beim Multithreading. Es gibt jedoch Ineffizienzen. Weil Transaktionen in die Warteschlange gestellt werden müssen.

Die Standardisolationsstufe der mysql Datenbank ist Stufe 3. Wiederholbares Lesen.

mysql -Transaktionen werden standardmäßig automatisch festgeschrieben. Führen Sie ein DML aus, um die Daten auf der Festplatte direkt zu ändern.

Möchten Sie die Transaktion manuell bestätigen. Vor der Ausführung von DML. start transaction , führen Sie dann DML aus und führen Sie abschließend ein Commit oder Rollback aus.

Demonstrieren Sie das manuelle Rollback einer Transaktion:

Tabelle löschen, falls t_user1 vorhanden ist;

Tabelle t_user1 erstellen(

id int(3) Primärschlüssel auto_increment,

Benutzername varchar(10)

);

mysql> Tabelle t_user1 erstellen(

-> id int(3) Primärschlüssel auto_increment,

-> Benutzername varchar(10)

-> );

Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

mysql> einfügen in t_user1(Benutzername) Werte('h1');

Abfrage OK, 1 Zeile betroffen (0,01 Sek.)

mysql> wähle * von t_user1;

+----+----------+

| ID | Benutzername |

+----+----------+

| 1 | h1 |

+----+----------+

1 Zeile im Satz (0,00 Sek.)

mysql> rollback; //Rollback der Transaktionsabfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> select * from t_user1; //Nach dem Rollback ist es immer noch dasselbe wie vorher, da mysql automatisch übermittelt +----+----------+

| ID | Benutzername |

+----+----------+

| 1 | h1 |

+----+----------+

1 Zeile im Satz (0,00 Sek.)

mysql> start transaction; //Transaktion manuell starten, automatische Transaktionsübermittlung deaktivieren. Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> einfügen in t_user1(Benutzername) Werte('h2');

Abfrage OK, 1 Zeile betroffen (0,01 Sek.)

mysql> einfügen in t_user1(Benutzername) Werte('h3');

Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> einfügen in t_user1(Benutzername) Werte('h4');

Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> wähle * von t_user1;

+----+----------+

| ID | Benutzername |

+----+----------+

| 1 | h1 |

| 2 | h2 |

| 3 | h3 |

| 4 | h4 |

+----+----------+

4 Zeilen im Satz (0,00 Sek.)

mysql> rollback; //Rollback-Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> wähle * von t_user1;

+----+----------+

| id | Benutzername | Am Ende sind die Daten auf der Festplatte noch immer dieselben wie vorher.

+----+----------+ Löschdatensatz rückgängig machen, ohne die Daten auf der Festplatte zu ändern.

| 1 | h1 |

+----+----------+

1 Zeile im Satz (0,00 Sek.)

Dies ist das Ende dieses Artikels über die MySQL-Transaktionsanalyse. Weitere relevante MySQL-Transaktionsinhalte finden Sie in den vorherigen Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • MySQL-Transaktionsdetails
  • MySQL-Datenbankindizes und -Transaktionen
  • Eine kurze Analyse der zugrunde liegenden Prinzipien von MySQL-Transaktionen und Isolationsebenen
  • Detaillierte Erklärung der Transaktionen und Indizes in der MySQL-Datenbank
  • Wie wird die Transaktionsisolation von MySQL erreicht?
  • Detaillierte Analyse von MySQL-Transaktionen

<<:  Nodejs erstellt ein Tool zur Dokumentsynchronisierung zur automatischen Synchronisierung mit dem Gitee-Implementierungscode

>>:  So verwenden Sie benutzerdefinierte Bilder in HTML zum Anzeigen von Kontrollkästchen

Artikel empfehlen

HTML-Grundlagen-Zusammenfassungsempfehlung (Textformat)

HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...

HTML-Formular_PowerNode Java Academy

1. Formular 1. Die Rolle des Formulars HTML-Formu...

Verwendung und Beispiele für Linux-Befehle zur Echotextverarbeitung

Die Beschreibung von echo im Linux-Hilfedokument ...

Detaillierter Code zum Hinzufügen von Electron zum Vue-Projekt

1. Fügen Sie package.json hinzu "Haupt"...

So implementieren Sie die Größenanpassung mobiler Webseiten

Ich habe das vorliegende Projekt endlich abgeschl...

4 Prinzipien für sauberes und schönes Webdesign

In diesem Artikel werden diese 4 Prinzipien im Hi...

Detaillierte Erklärung der MySQL-Datumsadditions- und -subtraktionsfunktionen

1. addtime() Füge die angegebene Anzahl Sekunden ...

Vollständige Schritte für dynamische Bindungssymbole in Vue

0 Unterschiede zwischen Symbolen und Bildern Symb...

So implementieren Sie verteilte Transaktionen in MySQL XA

Inhaltsverzeichnis Vorwort XA-Protokoll So implem...

So richten Sie eine VSCode-Remoteverbindung zum Server-Docker-Container ein

Inhaltsverzeichnis Ziehen Sie das Bild Ausführen ...