Heim  >  Artikel  >  Datenbank  >  Was ist Transaktionsverarbeitung in MySQL?

Was ist Transaktionsverarbeitung in MySQL?

青灯夜游
青灯夜游Original
2022-11-11 17:32:102429Durchsuche

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.

Was ist Transaktionsverarbeitung in MySQL?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Transaktionsverarbeitung

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:

  • Transaktion: bezieht sich auf eine Reihe von SQL-Anweisungen;
  • Rollback (Rollback): bezieht sich auf den Vorgang des Rückgängigmachens einer bestimmten SQL-Anweisung;
  • Commit:
  • bezieht sich auf das Schreiben nicht gespeicherter SQL-Anweisungsergebnisse in die Datenbanktabelle;
  • savepoint (Speicherpunkt):
  • bezieht sich auf den temporären Platzhalter (Platzhalter), der in der Transaktionsverarbeitung festgelegt wird um die gesamte Transaktion rückgängig zu machen).

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

              MySQL verwendet die folgende Anweisung, um den Beginn einer Transaktion

zu identifizieren:  

START  TRANSACTION

1.2.2 COMMIT

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.

Die abschließende COMMIT-Anweisung schreibt die Änderungen nur dann aus, wenn kein Fehler auftritt. Wenn der erste DELETE-Vorgang funktioniert, der zweite jedoch fehlschlägt, wird der DELETE-Vorgang nicht festgeschrieben (tatsächlich wird er automatisch widerrufen).

1.2.3 ROLLBACK

Der

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

Transaktion

,
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)
.

Transaktionsverarbeitung
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

Einfache ROLLBACK- und COMMIT-Anweisungen können die gesamte Transaktion schreiben oder rückgängig machen

. 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

Wie bereits erwähnt, besteht das Standardverhalten von MySQL darin, alle Änderungen automatisch zu übermitteln. Mit anderen Worten: Jedes Mal, wenn Sie eine MySQL-Anweisung ausführen, wird die Anweisung tatsächlich für die Tabelle ausgeführt und die Änderungen werden sofort wirksam. Um MySQL anzuweisen, Änderungen nicht automatisch festzuschreiben, müssen Sie die folgende Anweisung verwenden:
SET autocommit = 0;
        Das

autocommit-Flag bestimmt, ob Änderungen automatisch festgeschrieben werden

, 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 Implementierung

1)

BEGIN
    Starten Sie eine Transaktion
  • 2)
ROLLBACK

Transaktions-Rollback 3)

COMMIT

Transaktionsbestätigung Beispiel:

START TRANSACTION; -- 开始事务
INSERT INTO runoob_transaction_test VALUE(5);
INSERT INTO runoob_transaction_test VALUE(6);
COMMIT; -- 提交事务

select * from runoob_transaction_test;

  • Verwenden Sie SET direkt, um den Auto-Commit-Modus von MySQL zu ändern:

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!

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