So verwendet MySQL Transaktionen

So verwendet MySQL Transaktionen

Grundlagen

Eine Transaktion ist eine atomare Operation für eine Gruppe von SQL-Anweisungen. Das heißt, wenn in einer der SQL-Anweisungen der Gruppe ein Fehler auftritt, werden die anderen SQL-Anweisungen derselben Gruppe nicht ausgeführt.

Sie können es als Test verwenden. Nachdem Sie eine Reihe von SQL-Anweisungen ausgeführt haben, können Sie überprüfen, ob die Ergebnisse korrekt sind. Wenn sie korrekt sind, können Sie sie übermitteln. Wenn sie nicht korrekt sind, können Sie ein Rollback durchführen und den ursprünglichen Zustand wiederherstellen.

In MySQL werden alle Vorgänge standardmäßig automatisch festgeschrieben und beim Starten einer Transaktion manuell festgeschrieben.

Grundlegende Verwendung

Separat öffnen

Einzelnes Öffnen bedeutet das Öffnen einer Transaktion für eine Gruppe von SQL-Anweisungen.

CREATE TABLE Benutzer(
  ID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  Name CHAR(12) NOT NULL,
  Saldo INT UNSIGNED 
); -- Erstellen Sie eine Benutzertabelle INSERT INTO user(name,balance) VALUES
  ("Junja", 1000),
  ("Ken", 500); -- Daten einfügen, Transaktion starten; -- Eine Transaktion starten, alle Hinzufügungs-, Lösch- und Änderungsvorgänge müssen manuell übermittelt werden. UPDATE user SET balance = 500 WHERE name = "Yunya"; -- Yunya überweist 500 an Ken
  UPDATE Benutzer SET Guthaben = 1000 WHERE Name = "Ken";
  SELECT * FROM user; -- Überprüfen Sie, ob ein Fehler vorliegt COMMIT; -- Übernehmen Sie die Transaktion: Übernehmen Sie die beiden oben genannten UPDATEs manuell
  -- ROLLBACK; -- Transaktions-Rollback: Verwenden Sie Rollback BEGIN, wenn der Überweisungsbetrag falsch ist. -- Schließen Sie die Transaktion ab, und alle Hinzufügungs-, Lösch- und Änderungsvorgänge werden automatisch festgeschrieben.

Global aktiviert

Wenn alle SQL-Anweisungen Transaktionsvorgänge verwenden, können wir die automatische Übermittlung mit SET AUTOCOMMIT=0 deaktivieren, um den Transaktionsmechanismus zu aktivieren, sodass alle Anweisungen vom Transaktionstyp sind.

-- Automatisches Commit deaktivieren SET AUTOCOMMIT = 0;

INSERT INTO Benutzer(Name, Guthaben) Werte
	('Jack',8000);
	
BEGEHEN;

-- Automatisches Commit aktivieren SET AUTOCOMMIT = 1;

Transaktionsisolierung

Parallelitätsprobleme

Wenn bei gleichzeitigem Zugriff auf mehrere Transaktionen Isolationsprobleme auftreten, kann Folgendes passieren:

Dirty Read: Transaktion A liest die von Transaktion B aktualisierten Daten und setzt dann den Vorgang zurück. In diesem Fall sind die von A gelesenen Daten Dirty Data. Nicht wiederholbares Lesen: Transaktion A liest dieselben Daten mehrmals. Während Transaktion A die Daten mehrmals liest, aktualisiert und übergibt Transaktion B die Daten, was zu inkonsistenten Ergebnissen führt, wenn Transaktion A dieselben Daten mehrmals liest.
Phantomlesen: Systemadministrator A ändert die Noten aller Studenten in der Datenbank von bestimmten Punktzahlen in ABCDE-Noten, aber Systemadministrator B fügt zu diesem Zeitpunkt einen Datensatz mit einer bestimmten Punktzahl ein. Wenn Systemadministrator A die Änderung abgeschlossen hat, stellt er fest, dass immer noch ein Datensatz vorhanden ist, der nicht geändert wurde, als ob eine Illusion aufgetreten wäre. Dies wird als Phantomlesen bezeichnet.
Nicht wiederholbare Lesevorgänge und Phantomlesevorgänge können leicht verwechselt werden. Bei nicht wiederholbaren Lesevorgängen stehen Änderungen im Mittelpunkt, während bei Phantomlesevorgängen Hinzufügungen oder Löschungen im Mittelpunkt stehen. Um das Problem nicht wiederholbarer Lesevorgänge zu lösen, müssen Sie nur die Zeilen sperren, die die Bedingungen erfüllen. Um das Problem von Phantom-Lesevorgängen zu lösen, müssen Sie die Tabelle sperren.

Isolationsstufe

Die Standardisolationsstufe des Systems ist Stufe 3 und es können Phantomlesevorgänge auftreten.

Isolationsstufe Chinesische Bedeutung Schmutzige Lektüre Nicht wiederholbares Lesen Phantom lesen veranschaulichen
lesen Sie nicht festgeschrieben Nicht festgeschrieben lesen Ja Ja Ja Die niedrigste Transaktionsisolationsebene. Bevor eine Transaktion festgeschrieben wird, sind die von ihr vorgenommenen Änderungen für andere Transaktionen sichtbar.
Lesen verpflichtet Nicht wiederholbares Lesen NEIN Ja Ja Stellen Sie sicher, dass eine Transaktion erst von einer anderen Transaktion gelesen werden kann, nachdem sie festgeschrieben wurde. Eine andere Transaktion kann die nicht festgeschriebenen Daten dieser Transaktion nicht lesen.
wiederholbares Lesen Wiederholbares Lesen NEIN NEIN Ja Wenn Sie denselben Datenbereich mehrmals lesen, wird der Snapshot der ersten Abfrage zurückgegeben, auch wenn andere Transaktionen die Daten aktualisiert oder geändert haben. Die von einer Transaktion während der Ausführung gesehenen Daten müssen konsistent sein
serialisierbar Serialisierung NEIN NEIN NEIN Transaktionen sind zu 100 % isoliert, wodurch Dirty Reads, nicht wiederholbare Reads und Phantom Reads vermieden werden können. Die teuerste, aber zuverlässigste Transaktionsisolierungsebene

Abfrageeinstellungen

Abfrageisolationsebene

wählen Sie @@tx_isolation;

Festlegen der Isolationsebene

set session transaction isolation level read uncommitted; -- set session ist nur für die aktuelle Sitzung gültig, set global ist global gültig.

Oben finden Sie Einzelheiten zur Verwendung von Transaktionen in MySQL. Weitere Informationen zu MySQL-Transaktionen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Tiefgreifendes Verständnis von verteilten PHP+MySQL-Transaktionen und -Lösungen
  • Eine kurze Analyse von MySQL-Sperren und -Transaktionen
  • Lassen Sie uns über die Merkmale und Isolationsstufen von MySQL-Transaktionen sprechen
  • Wie implementiert MySQL ACID-Transaktionen?
  • Warum MySQL große Transaktionen vermeiden sollte und wie man sie löst
  • Beispielanalyse des Prinzips der MySQL-Transaktionsisolationsebene
  • Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene
  • Analyse der MySQL-Transaktionsmerkmale und Ebenenprinzipien

<<:  Vue verwendet Echart, um Beschriftungen und Farben anzupassen

>>:  Ubuntu öffnet Port 22

Artikel empfehlen

Web-Kenntnisse: Lösung für die Koexistenz mehrerer IE-Versionen IETester

Meine Empfehlung Lösung für die Koexistenz mehrer...

Schauen wir uns einige leistungsstarke Operatoren in JavaScript an

Inhaltsverzeichnis Vorwort 1. Null-Koaleszenzoper...

So erstellen Sie PHP7 mit einem benutzerdefinierten Docker-Image

Führen Sie zunächst eine einfache Docker-Installa...

Der Unterschied zwischen Schlüssel und Index in MySQL

Schauen wir uns zunächst den Code an: ALTER TABLE...

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

So installieren Sie MySQL 8.0.17 und konfigurieren den Fernzugriff

1. Vorbereitung vor der Installation Überprüfen S...

Entmystifizierung des HTML 5-Arbeitsentwurfs

Das World Wide Web Consortium (W3C) hat einen Entw...

Ubuntu öffnet Port 22

Szenario Sie müssen das Xshell-Tool verwenden, um...