In MySQL ist die Transaktionsverarbeitung ein Mechanismus zum Verwalten von MySQL-Vorgängen, der stapelweise ausgeführt werden muss, um sicherzustellen, dass die Datenbank keine unvollständigen Operationsergebnisse enthält. Die Transaktionsverarbeitung kann verwendet werden, um die Integrität der Datenbank aufrechtzuerhalten und sicherzustellen, dass MySQL stapelweise ausgeführt wird Vorgänge werden nicht auf halbem Weg beendet, sondern entweder vollständig ausgeführt oder gar nicht ausgeführt.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Transaktionsverarbeitung kann verwendet werden, um die Integrität der Datenbank aufrechtzuerhalten. Sie stellt sicher, dass Stapel von MySQL-Vorgängen entweder vollständig oder gar nicht ausgeführt werden.
Im Personalverwaltungssystem erfordert das Löschen einer Person beispielsweise das Löschen nicht nur der Basisinformationen der Person, sondern auch der mit der Person verbundenen Informationen wie Postfach, Artikel usw. Auf diese Weise erfolgt dieser Datenbankbetrieb Kontoauszüge stellen eine Transaktion dar!
Die Transaktionsverarbeitung ist ein Mechanismus zur Verwaltung von MySQL-Vorgängen, die stapelweise ausgeführt werden müssen, um sicherzustellen, dass die Datenbank keine unvollständigen Vorgangsergebnisse enthält. Durch die Transaktionsverarbeitung können Sie garantieren, dass eine Reihe von Vorgängen nicht auf halbem Weg gestoppt werden, sondern entweder als Ganzes oder überhaupt nicht ausgeführt werden (sofern nicht ausdrücklich angewiesen) . Wenn keine Fehler auftreten, wird der gesamte Satz von Anweisungen in die Datenbanktabelle übernommen (geschrieben). Wenn ein Fehler auftritt, führen Sie einen Rollback (Rückgängigmachen) durch, um die Datenbank in einem bekannten und sicheren Zustand wiederherzustellen.
Im Allgemeinen müssen Transaktionen 4 Bedingungen erfüllen (ACID): Atomizität (ATomizität oder Unteilbarkeit), Konsistenz (COnsistenz), Isolation ( ISolation, auch bekannt als Unabhängigkeit), Beharrlichkeit (DDauerhaftigkeit).
Atomizität: Alle Vorgänge in einer Transaktion werden entweder abgeschlossen oder nicht abgeschlossen und enden nicht in einer Zwischenverbindung. Wenn während der Ausführung der Transaktion ein Fehler auftritt, wird sie auf den Zustand vor Beginn der Transaktion zurückgesetzt, als ob die Transaktion nie ausgeführt worden wäre.
Konsistenz: Die Integrität der Datenbank wird vor Beginn und nach Ende der Transaktion nicht beeinträchtigt. Dies bedeutet, dass die geschriebenen Daten vollständig allen voreingestellten Regeln entsprechen müssen, einschließlich der Genauigkeit und Verkettung der Daten, und dass die nachfolgende Datenbank die vorgegebene Arbeit spontan abschließen kann.
Isolation: Die Datenbank ermöglicht das gleichzeitige Lesen, Schreiben und Ändern ihrer Daten durch mehrere Transaktionen. Durch die Isolation können Dateninkonsistenzen aufgrund von Kreuzausführungen verhindert werden, wenn mehrere Transaktionen gleichzeitig ausgeführt werden. Die Transaktionsisolation ist in verschiedene Ebenen unterteilt, darunter nicht festgeschriebenes Lesen, festgeschriebenes Lesen, wiederholbares Lesen und serialisierbares Lesen.
Persistenz: Nach Abschluss der Transaktion ist die Änderung der Daten dauerhaft und geht auch bei einem Systemausfall nicht verloren.
1.1 Schlüsselwörter
Bei der Verwendung von Transaktionen und der Transaktionsverarbeitung tauchen mehrere Schlüsselwörter immer wieder auf. Hier sind einige Begriffe, die Sie über die Transaktionsverarbeitung kennen müssen:
1.2 Transaktionskontrollanweisung Der Schlüssel zur Verwaltung der Transaktionsverarbeitung besteht darin, Gruppen von SQL-Anweisungen in logische Blöcke
,aufzuteilen und klar anzugeben, wann Daten zurückgesetzt werden sollen und wann nicht . 1.2.1 TRANSAKTION STARTEN Transaktion starten
START TRANSACTION
Allgemeine MySQL-Anweisungen werden direkt in Datenbanktabellen ausgeführt und geschrieben. Dies ist das sogenannte implizite Commit, das heißt, der Commit-Vorgang (Schreiben oder Speichern) wird automatisch ausgeführt.务, aber im Transaktionsverarbeitungsblock wird die Übermittlung nicht implizit fortgesetzt. Um ein explizites Commit durchzuführen, verwenden Sie die
COMMIT-Anweisung. COMMIT schreibt die Transaktion fest und macht alle an der Datenbank vorgenommenen Änderungen dauerhaft. sieht folgendermaßen aus: START TRANSACTION
DELETE FROM orderitems WHERE order_num = 20010;
DELETE FROM orders WHERE order_num = 20010;
COMMIT;
In diesem Beispiel vom System aus Auftrag im Jahr 20010 komplett löschen. Da es sich dabei um die Aktualisierung der beiden Datenbanktabellen „orders“ und „orderItems“ handelt, wird ein Transaktionsblock verwendet, um sicherzustellen, dass die Bestellung nicht teilweise gelöscht wird.
1.2.3 ROLLBACK
ROLLBACK-Befehl von MySQL wird verwendet, um MySQL-Anweisungen rückgängig zu machen (rückgängig zu machen), wie folgt: SELECT * FROM orderitems;
START TRANSACTION -- 事务开始
DELETE FROM orderitems;
SELECT * FROM orderitems;
ROLLBACK;
SELECT * FROM orderitems;
Das obige Beispiel beginnt mit der Anzeige des Inhalts der ordertotals-Tabelle. Führen Sie zunächst ein SELECT aus, um anzuzeigen, dass die Tabelle nicht leer ist. Starten Sie dann eine
,
verwenden Sie eine DELETE-Anweisung, um alle Zeilen in ordertotals zu löschen. Eine weitere SELECT-Anweisung überprüft, ob ordertotals tatsächlich leer ist. Verwenden Sie zu diesem Zeitpunkt eine ROLLBACK-Anweisung, um alle Anweisungen nach START TRANSACTION zurückzusetzen. Die letzte SELECT-Anweisung zeigt, dass die Tabelle nicht leer ist. Natürlich kann ROLLBACK nur innerhalb einer Transaktion verwendet werden (nach Ausführung eines START TRANSACTION-Befehls)
.
wird zum Verwalten von INSERT-, UPDATE- und DELETE-Anweisungen verwendet. Sie können eine SELECT-Anweisung nicht zurücksetzen. (Das macht auch wenig Sinn.) Sie können einen CREATE- oder DROP-Vorgang nicht rückgängig machen. Diese beiden Anweisungen können innerhalb eines Transaktionsblocks verwendet werden, sie werden jedoch nicht rückgängig gemacht, wenn Sie ein Rollback durchführen.1.2.4 Aufbewahrungspunkt
. Dies ist jedoch nur für einfache Transaktionen möglich; komplexere Transaktionen erfordern möglicherweise ein teilweises Commit oder Rollback. Um das Zurücksetzen eines Teils der Transaktionsverarbeitung zu unterstützen, müssen Platzhalter an geeigneten Stellen im Transaktionsverarbeitungsblock platziert werden. Auf diese Weise können Sie bei einem Rollback auf einen Platzhalter zurückgreifen.
Diese Platzhalter werden Retention Points genannt. Um einen Platzhalter zu erstellen, können Sie die folgende Savepoint-Anweisung verwenden: SAVEPOINT delete1;
E Jeder Aufbewahrungspunkt verwendet den einzigen Namen, um ihn zu identifizieren, sodass MySQL bei Ihrer Rückkehr weiß, wohin es zurückkehren soll.退 Der folgende Vorgang kann an den reservierten Punkt zurückgegeben werden:
ROLLBACK TO delete1;
1.2.5 Ändern des Standardübermittlungsverhaltens
SET autocommit = 0;Das
, unabhängig davon, ob eine COMMIT-Anweisung vorhanden ist. Wenn Sie autocommit auf 0 (false) setzen, wird MySQL angewiesen, Änderungen nicht automatisch zu committen (bis autocommit auf true gesetzt ist).
Flags für Verbindungen
Spezialisierte Autocommit-Flags gelten pro Verbindung und nicht serverspezifisch.1.3 Transaktionsverarbeitungsmethoden
Es gibt zwei Hauptmethoden der MYSQL-Transaktionsverarbeitung:
Verwenden Sie BEGIN, ROLLBACK, COMMIT zur Implementierung1)
BEGINTransaktions-Rollback 3)
COMMITTransaktionsbestätigung Beispiel:
START TRANSACTION; -- 开始事务 INSERT INTO runoob_transaction_test VALUE(5); INSERT INTO runoob_transaction_test VALUE(6); COMMIT; -- 提交事务 select * from runoob_transaction_test;
SET AUTOCOMMIT=0Automatische Übermittlung deaktivieren
SET AUTOCOMMIT=1Automatische Übermittlung aktivieren
[Verwandte Empfehlungen: mysql Video-Tutorial 】
Das obige ist der detaillierte Inhalt vonWas ist Transaktionsverarbeitung in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!