Heim  >  Artikel  >  Datenbank  >  Die automatische Festschreibung von MySQL-Transaktionen führt automatisch ein Festschreiben durch

Die automatische Festschreibung von MySQL-Transaktionen führt automatisch ein Festschreiben durch

黄舟
黄舟Original
2017-02-06 10:52:331155Durchsuche

Der Standardbetriebsmodus von MySQL ist der Autocommit-Modus. Das bedeutet, dass jede Abfrage automatisch als separate Transaktion ausgeführt wird, sofern Sie nicht explizit eine Transaktion starten. Wir können ändern, ob der Autocommit-Modus automatisch übermittelt wird, indem wir den Wert von Autocommit festlegen.

Sie können den aktuellen Autocommit-Modus mit dem folgenden Befehl anzeigen

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.04 sec)

Aus den Abfrageergebnissen stellen wir fest, dass der Wert von Value ON ist, was darauf hinweist, dass Autocommit aktiviert ist. Wir können diesen Modus durch die folgende SQL-Anweisung ändern

mysql> set autocommit = 0;

Die Werte 0 und OFF sind natürlich gleich, 1 bedeutet ON. Wenn Sie oben autocommit=0 festlegen, befindet sich der Benutzer immer in einer Transaktion, bis eine Commit- oder Rollback-Anweisung ausgeführt wird, um die aktuelle Transaktion zu beenden und eine neue Transaktion zu starten.

Zum Beispiel:

Zhang San überweist 500 Yuan an Li Si. Dann sollten die folgenden Operationen in der Datenbank durchgeführt werden:

1. Überprüfen Sie zunächst, ob der Kontostand von Zhang San ausreicht

2. Ziehen Sie 500 Yuan von Zhang Sans Konto ab

3 , fügen Sie 500 Yuan zum Konto von Li Si hinzu

Die oben genannten drei Schritte können in einer Transaktion zusammengefasst werden, um den Commit auszuführen. Entweder werden alle ausgeführt oder keiner von ihnen. Wenn alles in Ordnung ist, verpflichten Sie sich zum Senden die permanenten Änderungsdaten; Wenn ein Fehler auftritt, erfolgt ein Rollback auf den Zustand vor der Änderung. Durch die Transaktionsverarbeitung wird es nicht passieren, dass Zhang Sans Geld von Li Sis Konto abgezogen, aber nicht um 500 Yuan erhöht wird, oder dass Zhang Sans Geld nicht von Li Sis Konto abgezogen, sondern 500 Yuan hinzugefügt wird.

Die Standardspeicher-Engine von MySQL ist MyISAM. Die MyISAM-Speicher-Engine unterstützt keine Transaktionsverarbeitung, daher hat eine Änderung des Autocommits keine Auswirkungen. Es wird jedoch kein Fehler gemeldet. Wenn Sie also die Transaktionsverarbeitung verwenden möchten, müssen Sie sicherstellen, dass die von Ihnen verwendete Version die Transaktionsverarbeitung unterstützt, z. B. InnoDB. Wenn Sie die Speicher-Engine der Tabelle nicht kennen, können Sie beim Erstellen der Tabelle überprüfen, ob eine Speicher-Engine vorhanden ist, die den Transaktionstyp angibt. Wenn die Speicher-Engine nicht angegeben ist, wird die Standard-Speicher-Engine verwendet ist MyISAM, das keine Transaktionen unterstützt.

Natürlich dient die Transaktionsverarbeitung dazu, die Atomizität, Konsistenz, Isolation und Haltbarkeit der Tabellendaten sicherzustellen. Diese verbrauchen alle Systemressourcen. Wählen Sie sie daher sorgfältig aus.

Das Obige ist der Inhalt, der automatisch von MySQL Transaction Autocommit übermittelt wird. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn