Beispiel-Tutorial für MySQL-Datenbanktransaktionen

Beispiel-Tutorial für MySQL-Datenbanktransaktionen

1. Was ist eine Transaktion?

Bildbeschreibung hier einfügen

Eine Transaktion ist eine vollständige Einheit der Geschäftslogik und kann nicht geteilt werden.
Um beispielsweise 10.000 Yuan von Konto A auf Konto B eines Bankkontos zu überweisen, müssen zwei Aktualisierungsanweisungen ausgeführt werden:

Aktualisiere t_act, setze Balance=Balance-10000, wobei Actno='Act-001' ist;
Aktualisiere t_act, setze Balance=Balance+10000, wobei Actno='act-0021';

Die beiden oben genannten DML-Anweisungen müssen gleichzeitig erfolgreich sein oder gleichzeitig fehlschlagen. Es ist nicht zulässig, dass eine erfolgreich ist und die andere fehlschlägt.
Um sicherzustellen, dass die beiden oben genannten DML-Anweisungen gleichzeitig erfolgreich sind oder fehlschlagen, müssen Sie den „Transaktionsmechanismus“ der Datenbank verwenden.

2. Die einzigen Anweisungen, die sich auf Transaktionen beziehen, sind diese drei DML-Anweisungen: Einfügen, Löschen, Aktualisieren

„Warum gibt es nur diese drei DML-Anweisungen: Einfügen, Löschen, Aktualisieren?“
Denn diese drei Aussagen beziehen sich alle „auf die Daten“ in der Datenbanktabelle. Transaktionen dienen der Gewährleistung der Datenintegrität und -sicherheit.

3. Unter der Annahme, dass alle Geschäftsvorgänge mit einer DML-Anweisung abgewickelt werden können, ist dann immer noch ein Transaktionsmechanismus erforderlich?

Es sind keine Transaktionen erforderlich.
Aber die tatsächliche Situation ist nicht so. Normalerweise erfordert eine Sache („Transaktion“) mehrere DML-Anweisungen, um gemeinsam abgeschlossen zu werden.

4. Grundsätze der Transaktionen

Bildbeschreibung hier einfügen

Beachten:
Sobald eine Transaktion festgeschrieben ist, werden die historischen Vorgänge auf der Festplatte gespeichert. Nach Abschluss der Speicherung werden die historischen Datensätze gelöscht.
Sobald die Transaktion zurückgesetzt wird, werden die historischen Datensätze direkt gelöscht, ohne auf der Festplatte gespeichert zu werden.
Transaktionsoperationen können auch Speicherpunkte entwerfen: verstehen.

5. Vier Merkmale von Transaktionen: ACID

Bildbeschreibung hier einfügen

Transaktionen weisen vier Hauptmerkmale auf: ACID
AAtomizität: Eine Transaktion ist die kleinste Arbeitseinheit und kann nicht geteilt werden.
C-Konsistenz: Die Transaktion muss sicherstellen, dass mehrere DML-Anweisungen gleichzeitig erfolgreich sind oder fehlschlagen.
Isolierung: Transaktion A ist von Transaktion B isoliert.
D. Persistenz: Persistenz bedeutet, dass die endgültigen Daten in der Festplattendatei gespeichert bleiben müssen, damit die Transaktion erfolgreich abgeschlossen werden kann.

Im Folgenden finden Sie eine detailliertere Erläuterung der vier Hauptmerkmale der oben genannten Transaktionen: „Atomizität“: Eine Reihe von Operationen ist entweder erfolgreich oder schlägt fehl, und diese Reihe von Operationen kann nicht aufgeteilt werden.
„Konsistenz“: Die Gesamtmenge der Daten stimmt vor und nach der Transaktion noch immer überein. Lassen Sie uns eine Überweisung von einer Person an eine andere simulieren. Vor der Überweisung beträgt der Gesamtbetrag der beiden Personen 400, nach der Überweisung beträgt der Gesamtbetrag der beiden Personen immer noch 400.
„Isolation“: Bevor alle Vorgänge abgeschlossen sind, können andere Sitzungsfenster die zwischenzeitlichen Datenänderungen nicht sehen und nur das aktuelle Fenster kann die Datenänderungen sehen.
„Persistenz“: Sobald eine Transaktion festgeschrieben ist, können die Auswirkungen der Transaktion nicht mehr rückgängig gemacht werden und die Daten wurden tatsächlich geändert.

6. Isolation zwischen Transaktionen

„Die Transaktionsisolierung hat Isolationsebenen, theoretisch gibt es 4 Isolationsebenen“
Die Isolationsebene beginnt normalerweise bei Ebene 2 oder 3, und Ebene 1 wird im Allgemeinen nicht verwendet.

1) Erste Ebene: Lesen ohne Commit

Die Transaktion der anderen Partei wurde noch nicht übermittelt und die aktuelle Transaktion kann die Daten lesen, die die andere Partei nicht übermittelt hat.
Probleme mit Read-Uncommitted-Transaktionen: „Dirty-Read-Phänomen“, d. h., es werden schmutzige Daten gelesen.
„Dirty Read“: bezieht sich auf eine Transaktion, die Daten ändert, die Änderung jedoch nicht in der Datenbank übernommen wurde.
Wenn eine andere Transaktion auf die Daten zugreift, gelten die Daten als „schmutzige Daten“ und werden daher als „Dirty Read“ bezeichnet.

2) Zweite Ebene: Lesen verpflichtet

Wir können die Daten lesen, nachdem die Transaktion der anderen Partei übermittelt wurde.
Diese Isolationsebene löst das Problem: Es gibt kein Dirty-Read-Phänomen.
Probleme mit dem festgeschriebenen Lesevorgang: nicht wiederholbares Lesen.

3) Dritte Ebene: wiederholbares Lesen

Diese Isolationsebene löst das Problem nicht wiederholbarer Lesevorgänge.
Das Problem auf dieser Ebene besteht darin, dass es sich bei den gelesenen Daten um Fantasiedaten handelt, das heißt, dass es sich bei den gelesenen Daten um Sicherungsdaten handelt.

4) Vierte Ebene: serialisierbares Lesen

Alle Probleme gelöst.
Allerdings ist die Effizienz gering und Transaktionen müssen in die Warteschlange gestellt werden.

„Es ist zu beachten, dass“
Die Standardisolationsebene der Oracle-Datenbank ist: Read Committed (zweite Ebene).
Die Standardisolationsstufe der mysq1-Datenbank ist: wiederholbares Lesen (Stufe 3).

7. Demonstration der Transaktionsisolationsebene (erstellen Sie selbst einige Demonstrationsdaten)

1) Wissenspunkte, die vor der Demonstration von Transaktionen beherrscht werden müssen.

1) MySQL-Transaktionen werden standardmäßig automatisch festgeschrieben.
2) Was ist Auto-Commit?
   Bei jeder Ausführung einer DML-Anweisung wird diese automatisch einmal übermittelt.
   Daher müssen Sie vor der Demonstration von Transaktionen zunächst das Autocommit deaktivieren.
   „Auto-Commit-Anweisung deaktivieren“: Transaktion starten;    
3) „3 Befehle, die Sie kennen müssen, um Transaktionen nachzuweisen:“
   -- Deaktivieren Sie die Funktion zum automatischen Festschreiben von Transaktionen.
   Transaktion starten;
  -- Führen Sie die Transaktion aus.
  begehen;
  - Machen Sie die Transaktion rückgängig, aber nur bis zum letzten Commit-Punkt.
  zurückrollen;   

2) Legen Sie die globale Transaktionsisolationsebene fest.

„Legen Sie die globale Transaktionsisolationsstufe fest. Melden Sie sich nach der Festlegung ab und erneut an.“
-- Legen Sie die erste Ebene fest, legen Sie die globale Transaktionsisolationsebene fest, lesen Sie nicht fest;
-- Legen Sie die zweite Ebene fest, legen Sie die globale Transaktionsisolationsebene fest, und lesen Sie fest.
-- Dritte Ebene festlegen (Standardtransaktionsebene des Systems, muss nicht festgelegt werden)
Legen Sie die globale Transaktionsisolationsebene für wiederholbares Lesen fest.
--Legen Sie die vierte Ebene fest, indem Sie die globale Transaktionsisolationsebene serialisierbar festlegen.

„Globale Transaktionsisolationsebene anzeigen“
mysql> wähle @@global.tx_isolation;
+--------------------------+
| @@global.tx_isolation |
+--------------------------+
| WIEDERHOLBARES LESEN |
+--------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

3) Demonstrieren Sie, dass das Lesen nicht festgeschrieben ist.

Legen Sie zunächst die globale Transaktionsisolationsebene fest.

Bildbeschreibung hier einfügen

Das Folgende ist eine formelle Demonstration:

4) Demonstration Lesen verpflichtet

Legen Sie zunächst die globale Transaktionsisolationsebene fest.

Bildbeschreibung hier einfügen

Das Folgende ist eine formelle Demonstration:

Bildbeschreibung hier einfügen

5) Demonstrieren Sie wiederholbares Lesen

Legen Sie zunächst die globale Transaktionsisolationsebene fest.

Bildbeschreibung hier einfügen

Das Folgende ist eine formelle Demonstration:

Bildbeschreibung hier einfügen

Dies muss beachtet werden:

Was hier demonstriert wird, ist „wiederholbares Lesen“. Wir demonstrieren eine Reihe von Transaktionsprozessen im rechten Fenster. Das linke Fenster kann überhaupt nicht lesen. Was im linken Fenster gelesen wird, sind immer die Sicherungsdaten der Originaldaten.

Wie verstehst du das?

Vergessen Sie nicht, dass die Transaktionsfunktion auch im linken Fenster aktiviert ist, um die Transaktion zu starten. Solange die Transaktionsfunktion des linken Fensters nicht beendet ist (Commit oder Rollback können die Transaktion beenden), sind die vom linken Fenster gelesenen Daten immer die Sicherungsdaten der Originaldaten. Das nennen wir „Fantasie“. Egal welche Änderungen im schwarzen Fenster rechts vorgenommen werden, selbst wenn Sie die Transaktion bestätigen, kann ich sie im Fenster links nicht sehen.

Auf der linken Seite befindet sich ein schwarzes Fenster. Wie kann ich diese Änderung sehen? "

Nur das schwarze Fenster links beendet zuerst die Transaktion des aktuellen schwarzen Fensters und liest sie dann erneut. Sie können sehen, dass sich die Daten tatsächlich geändert haben.

6) Demonstration des fortlaufenden Lesens

Legen Sie zunächst die globale Transaktionsisolationsebene fest.

Bildbeschreibung hier einfügen

Das Folgende ist eine formelle Demonstration:
Erstes Bild:

Bildbeschreibung hier einfügen

Nachdem die Transaktion im linken Fenster mit dem Befehl „Commit“ bestätigt wurde, können wir die Änderungen im rechten Fenster sehen.

Bildbeschreibung hier einfügen

Oben finden Sie den detaillierten Inhalt des Beispiel-Tutorials zu MySQL-Datenbanktransaktionen. Weitere Informationen zu MySQL-Datenbanktransaktionen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So implementieren Sie verteilte Transaktionen in MySQL XA
  • Implementierung der Knotenverbindung zur MySQL-Abfragetransaktionsverarbeitung
  • Sieben Lösungen für klassische verteilte Transaktionen zwischen MySQL und Golan
  • Analyse und Zusammenfassung der Auswirkungen von MySQL-Transaktionen auf die Effizienz
  • Details zur MySQL-Transaktionsisolationsebene
  • Detaillierte Erklärung der Transaktionen und Indizes in der MySQL-Datenbank
  • MySQL-Transaktionsanalyse

<<:  So überprüfen und organisieren Sie Websitedateien mit Dreamweaver8

>>:  Über die Kontrolle und Verschönerung von Eingabedateien

Artikel empfehlen

Anwendung schöner Stylesheets bei der Erstellung von XHTML+CSS-Webseiten

Dies ist ein Artikel, der vor langer Zeit geschrie...

Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff

Ein Wort vorab: Plötzlich erhielt ich die Aufgabe...

Vue implementiert Ankerpositionierungsfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Tutorial zur Installation von MySQL 8.0.18 unter Windows (Community Edition)

In diesem Artikel wird kurz die Installation von ...

Einführung in gängige Befehle und Tastenkombinationen in Linux

Inhaltsverzeichnis 1 Systemeinführung 2 Systemver...

Installations-Tutorial für die komprimierte Version von MySQL 5.7.18 Archiv

In diesem Artikel wird die spezifische Methode zu...

Kann CSS auf diese Weise verwendet werden? Die Kunst wunderlicher Farbverläufe

Im vorherigen Artikel – Der Charme einer Zeile CS...

JavaScript zum Erreichen eines einfachen Bildwechsels

In diesem Artikel wird der spezifische Code für J...

Fallstricke basierend auf MySQL-Standardsortierregeln

Der Standardtyp varchar in MySQL ist case-insensi...