1. ACID-Eigenschaften Die Transaktionsverarbeitung ist ein Verwaltungsmechanismus für MySQL-Operationen, die in Stapeln ausgeführt werden müssen. Wenn während einer Transaktion eine Operation in der Mitte fehlschlägt, wird sie auf den ursprünglichen sicheren Zustand Nach MySQL 5.5 wurde die Standard-Speicher-Engine von MyLSAM durch InnoDB ersetzt. Einer der wichtigen Gründe dafür ist, dass InnoDB Transaktionen unterstützt. Sehen wir uns mit Die vier wichtigsten Eigenschaften von Transaktionen werden oft als Syntax der TransaktionssteuerungDie MySQL-Transaktionssteuerung verfügt über mehrere wichtige Knoten, nämlich Transaktionsstart, Commit, Rollback und Speicherpunkt. Das Starten einer Transaktion bedeutet, dass die Ausführung der Transaktion beginnt. Die Anweisung lautet Beispiel: A überweist B 100 Yuan: // Normal ausführen und übermitteln BEGIN; # Transaktion starten UPDATE account_balance SET balance = balance - 100.00 WHERE account_name = 'A'; UPDATE Kontostand SETZEN Kontostand = Kontostand + 100,00 WHERE Kontoname = „B“; COMMIT; # Transaktion festschreiben // Ausnahme aufgetreten, Rollback BEGIN; # Transaktion starten UPDATE account_balance SET balance = balance - 100.00 WHERE account_name = 'A'; UPDATE Kontostand SETZEN Kontostand = Kontostand + 100,00 WHERE Kontoname = „B“; ROLLBACK; # Transaktions-Rollback In komplexen Szenarien müssen wir manchmal nicht den gesamten Vorgang zurücksetzen, sondern ihn in Stapeln ausführen und auf einen bestimmten Knoten zurücksetzen. Dies entspricht der Verschachtelung mehrerer Untertransaktionen unter einer großen Transaktion. In MySQL kann BEGINNEN; in user_tbl(id)-Werte einfügen (1); in user_tbl(id)-Werte einfügen (2); ROLLBACK; # 1,2 schreibe nicht BEGIN; in user_tbl(id)-Werte einfügen (1); SPEICHERPUNKT s1; in user_tbl(id)-Werte einfügen (2); ROLLBACK TO s1; # Rollback zum Aufbewahrungspunkt s1, sodass 1 erfolgreich geschrieben wird, 2 zurückgesetzt wird und das Endergebnis 1 ist RELEASE SAVEPOINT s1; # Den Speicherpunkt freigeben Übrigens gibt es zwei Arten von Transaktionen: implizite Transaktionen (automatisch festgeschrieben) und explizite Transaktionen (müssen manuell festgeschrieben werden). MySQL verwendet standardmäßig implizite Transaktionen, die automatisch festgeschrieben und durch den # Variablen anzeigen SHOW VARIABLES LIKE 'autocommit'; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ # Auto-Commit aktivieren (Standard) Setzen Sie Autocommit = 1; # Autocommit deaktivieren SET autocommit = 0; Wenn im automatischen Commit-Status keine Transaktion explizit geöffnet wird, ist jede DML-Anweisung eine Transaktion und das System führt für jede SQL-Anweisung automatisch einen Commit-Vorgang aus. Nachdem Sie eine Transaktion mit BEGIN oder START TRANSACTION gestartet haben, bleibt Autocommit deaktiviert, bis Sie die Transaktion mit COMMIT oder ROLLBACK beenden. An diesem Punkt wird der Autocommit-Modus auf seinen vorherigen Zustand zurückgesetzt. Es gibt einen weiteren Parameter # Variablen anzeigen SHOW VARIABLES LIKE 'completion_type'; +-----------------+----------+ | Variablenname | Wert | +-----------------+----------+ | Abschlusstyp | KEINE_KETTE | +-----------------+----------+ completion_type = 0: Der Standardwert. Nach der Ausführung des Commits wird nicht automatisch eine neue Transaktion gestartet. 3. Ausnahme bei gleichzeitiger Transaktion In einer tatsächlichen Produktionsumgebung kann es zu gleichzeitigen Anfragen in großem Maßstab kommen. Wenn die Transaktionsisolationsstufe nicht richtig eingestellt ist, können einige abnormale Situationen auftreten. Die häufigsten Anomalien sind 1. Schmutzige LektüreDirty Read bedeutet, dass eine Transaktion auf nicht festgeschriebene Daten einer anderen Transaktion zugreift, und zwar wie folgt:
2. Nicht wiederholbares LesenNicht wiederholbares Lesen bezieht sich auf die Situation, in der sich der Inhalt des Datenwerts während einer Transaktion ändert, bei der dieselben Daten mehrmals gelesen werden, was dazu führt, dass derselbe Wert nicht mehr gelesen werden kann. Es beschreibt das Phänomen der Aktualisierung/Löschung derselben Daten , wie im folgenden Prozess gezeigt:
3. PhantomlesenPhantomlesen bezeichnet die Situation, in der sich die Anzahl der Datenelemente während einer Transaktion ändert, indem dieselben Daten mehrfach gelesen werden, als ob eine Illusion aufgetreten wäre. Es beschreibt das Phänomen des Einfügens/Löschens für die gesamte Tabelle, wie im folgenden Prozess gezeigt:
4. TransaktionsisolationsebeneDie serialisierte Transaktionsverarbeitung ist natürlich die sicherste Methode, aber die Serialisierung kann die Anforderungen an einen hoch parallelen Zugriff auf die Datenbank nicht erfüllen. Als Kompromiss müssen wir manchmal den Isolationsstandard der Datenbank senken, um die Parallelität der Transaktionen zu erhalten. Dabei müssen wir die Korrektheit innerhalb eines kontrollierbaren Bereichs zugunsten einer verbesserten Effizienz opfern. Dieser Kompromiss wird durch die Isolationsstufe der Transaktion erreicht. Die Datenbank hat vier Transaktionsisolationsebenen, von niedrig bis hoch: (1) Nicht festgeschrieben lesen Die Toleranz der oben genannten drei abnormalen Situationen in den vier Isolationsstufen ist wie folgt ( Der Befehl zum Anzeigen der Isolationsebene lautet: VARIABLEN WIE „transaction_isolation“ ANZEIGEN; # oder SELECT @@global.tx_isolation, @@tx_isolation; Die zweite Möglichkeit besteht darin, die globalen und aktuellen Sitzungsisolationsebenen anzuzeigen. Der Befehl zum Festlegen der Isolationsebene lautet : # Legen Sie die Isolationsstufe der aktuellen Sitzung auf „Nicht festgeschriebenes Lesen“ fest. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; # Stellen Sie die globale Isolationsebene auf Lesen nicht festgeschriebener Daten ein. SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; Dies ist das Ende dieses Artikels mit der detaillierten Erklärung von MySQL-Transaktionen. Weitere relevante MySQL-Inhalte finden Sie in früheren 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:
|
>>: Sprechen Sie über die 8 Benutzerinstinkte hinter der Benutzererfahrung im Design
Inhaltsverzeichnis Vorwort 1. Laden Sie MySQL von...
Hintergrund In Docker werden vier Container mit d...
Wenn wir den Inhalt einer archivierten oder kompr...
1. Quellenliste sichern Die Standardquelle von Ub...
1. Reproduktion des Problems: Zählen Sie die Gesa...
In diesem Artikelbeispiel wird der spezifische Co...
Als ich vor einigen Tagen ein Modul einer Webseite...
Bei der Verwendung von MySQL sortieren und fragen...
Inhaltsverzeichnis Basisversion Schritt 1: Axios ...
Wirkung: Ideen: Verwenden Sie das Eingabetypattri...
1. Installation von MySQL 1. Öffnen Sie die herun...
Wie wir alle wissen, gibt es in Computern zwei Art...
Einführung Basierend auf Docker-Containern und Do...
Inhaltsverzeichnis 1. Was ist scrapy_splash? 2. D...
1. left(name,4) fängt die 4 Zeichen auf der linke...