Eine SQL-Transaktion ist eine Folge einer oder mehrerer SQL-Operationen (z. B.INSERT UPDATE DELETE) als eine einzelne Arbeitseinheit ausgeführt. Transaktionen stellen sicher, dass entweder alle Vorgänge erfolgreich sind oder keine ausgeführt werden, wobei die Datenintegrität gewahrt bleibt.
Schlüsseleigenschaften von SQL-Transaktionen: ACID
Die Integrität von SQL-Transaktionen wird durch die ACID-Eigenschaften geregelt, die zuverlässige Datenbanktransaktionen garantieren. Diese vier Eigenschaften wirken zusammen, um sicherzustellen, dass die Datenbank konsistent und zuverlässig bleibt.
- Atomarität: Das Ergebnis einer Transaktion kann entweder völlig erfolgreich oder völlig erfolglos sein. Wenn ein Teil davon fehlschlägt, muss die gesamte Transaktion zurückgesetzt werden.
- Konsistenz: Transaktionen behalten Integritätsbeschränkungen bei, indem sie die Datenbank von einem gültigen Zustand in einen anderen verschieben.
- Isolierung: Gleichzeitige Transaktionen sind voneinander isoliert, um die Genauigkeit der Daten sicherzustellen.
- Haltbarkeit: Sobald eine Transaktion festgeschrieben wurde, bleiben ihre Änderungen auch im Falle eines Systemausfalls wirksam.
Befehle zur SQL-Transaktionssteuerung
In SQL verwalten Befehle zur Transaktionssteuerung die Ausführung von SQL-Operationen, um die Integrität und Zuverlässigkeit von Datenbanktransaktionen sicherzustellen. Diese Befehle helfen bei der Verwaltung des Start-Commits und des Rollbacks von an der Datenbank vorgenommenen Änderungen. Im Folgenden werden die wichtigsten Befehle zur Transaktionssteuerung in SQL mit Syntax und Beispielen erläutert.
Alter von Pete Davidson
1. BEGIN TRANSACTION-Befehl
DerBEGIN TRANSACTIONDer Befehl markiert den Beginn einer neuen Transaktion. Alle SQL-Anweisungen, die diesem Befehl folgen, sind Teil derselben Transaktion, bis aCOMMIT oder ROLLBACK angetroffen wird. Dieser Befehl nimmt keine Änderungen an der Datenbank vor, sondern startet lediglich die Transaktion.
Syntax:
BEGIN TRANSACTION transaction_name ;Beispiel einer SQL-Transaktion mit einem Banküberweisungsszenario
Schauen wir uns ein Beispiel einer Banküberweisung zwischen zwei Konten an. Dieses Beispiel veranschaulicht die Verwendung mehrerer Abfragen in einer einzelnen Transaktion.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;
Wenn ein Fehler auftritt, z. B. ein Problem mit demUPDATEAbfrage, die Sie verwenden könnenROLLBACKUm alle während der Transaktion vorgenommenen Änderungen rückgängig zu machen:
ROLLBACK;Dadurch wird sichergestellt, dass das System nicht in einen inkonsistenten Zustand gerät, beispielsweise wenn Geld von einem Konto abgebucht wird, ohne es einem anderen hinzuzufügen.
BEGIN TRANSACTION TransferFunds;2. COMMIT-Befehl
DerCOMMITMit dem Befehl werden alle während der aktuellen Transaktion vorgenommenen Änderungen in der Datenbank gespeichert. Sobald eine Transaktion festgeschrieben wurde, sind die Änderungen dauerhaft.
Syntax:
COMMIT;Beispiel
Hier ist das BeispielStudentTabelle, die zum Ausführen der Vorgänge in diesem Beispiel verwendet wird. Diese Tabelle enthält grundlegende Schülerdetails wie das Alter des Ausweisnamens und andere relevante Informationen, die mithilfe verschiedener Methoden manipuliert werden Befehle zur Transaktionssteuerung.
StudententischIm Folgenden sehen Sie ein Beispiel, das die Datensätze aus der Tabelle löscht, deren Alter = 20 ist, und dann die Änderungen in der Datenbank festschreibt.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Ausgabe
Ausgabe3. ROLLBACK-Befehl
DerROLLBACKDer Befehl wird verwendet, um alle in der aktuellen Transaktion vorgenommenen Änderungen rückgängig zu machen. Es wird verwendet, wenn ein Fehler auftritt oder die gewünschten Änderungen nicht durchgeführt werden können. Die Datenbank wird in den Zustand zurückgesetzt, in dem sie sich vor dem befand BEGIN TRANSACTION wurde hingerichtet.
Syntax:
ROLLBACK;Beispiel
Löschen Sie die Datensätze aus der Tabelle, deren Alter = 20 ist, und führen Sie dann ein ROLLBACK der Änderungen in der Datenbank durch. In diesem Fall die DELETE Der Vorgang wird rückgängig gemacht und die Änderungen an der Datenbank werden nicht gespeichert.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Ausgabe:
Java-Standardparameter
Ausgabe4. SAVEPOINT-Befehl
ASAVEPOINTwird verwendet, um eine zu erstellen Kontrollpunkt innerhalb einer Transaktion. Wir können auf einen bestimmten Wert zurücksetzenSAVEPOINTanstatt die gesamte Transaktion rückgängig zu machen. Dies ermöglicht es uns, einen Teil der Transaktion rückgängig zu machen, anstatt die gesamte Transaktion.
Syntax:
SAVEPOINT SAVEPOINT_NAME;Beispiel
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Ausgabe:
AusgabeErläuterung:
Aus dem obigen Beispiel: Beispieltabelle 1 Löschen Sie die Datensätze aus der Tabelle, deren Alter = 20 ist, und setzen Sie dann die Änderungen in der Datenbank zurück, indem Sie die Sicherungspunkte beibehalten. Hier wird SP1 vor dem Löschen zunächst als SAVEPOINT erstellt. In diesem Beispiel wurde eine Löschung durchgeführt. Nach dem erneuten Löschen wird SAVEPOINT SP2 erstellt.
5. ROLLBACK ZUM SAVEPOINT
DerROLLBACK TO SAVEPOINTMit dem Befehl können wir die Transaktion auf einen bestimmten Sicherungspunkt zurücksetzen und die nach diesem Punkt vorgenommenen Änderungen effektiv rückgängig machen.
Syntax:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Beispiel
Der Löschvorgang wurde durchgeführt. Gehen wir davon aus, dass wir unsere Meinung geändert und beschlossen haben, zum SAVEPOINT zurückzukehren, den wir als SP1 identifiziert haben und der sich vor dem Löschvorgang befindet. Also in diesem Fall dieDELETEDer Vorgang wird rückgängig gemacht und die Transaktion wird in den Zustand zurückversetzt, in dem sie sich zum Zeitpunkt des Vorgangs befandSP1Sicherungspunkt.
ROLLBACK TO SP1;
//Rollback completed
Ausgabe:
Ausgabe6. RELEASE SAVEPOINT-Befehl
Mit diesem Befehl wird ein von uns erstellter SAVEPOINT entfernt. Sobald ein SAVEPOINT freigegeben wurde, können wir den ROLLBACK nicht mehr nutzen Befehl zum Rückgängigmachen von Transaktionen, die seit dem letzten SAVEPOINT durchgeführt wurden. Es wird zum Initiieren einer Datenbanktransaktion und zum Spezifizieren von Merkmalen der folgenden Transaktion verwendet.
Syntax:
Mathematische Methoden in Java
RELEASE SAVEPOINT SAVEPOINT_NAME;Beispiel
Einmal der SavepointSP2freigegeben wird, können wir nicht mehr darauf zurücksetzen.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Warum Transaktionen im Bankwesen nutzen?
In diesem Fall ohne eine Transaktion riskieren Sie Szenarien, in denen Geld von einem Konto abgebucht, aber nicht dem anderen gutgeschrieben wird, wodurch das System in einem inkonsistenten Zustand bleibt. Transaktionen stellen sicher, dass solche Probleme vermieden werden, indem sie garantieren, dass beide Vorgänge gemeinsam erfolgreich sind oder fehlschlagen.
Arten von SQL-Transaktionen
Je nach Art und den spezifischen Vorgängen, die sie ausführen, gibt es verschiedene Arten von Transaktionen:
- Transaktionen lesen : Wird normalerweise nur zum Lesen der Daten verwendet
SELECTAbfragen. - Transaktionen schreiben : Dabei werden die Daten in der Datenbank mit geändert
INSERTUPDATEoderDELETEOperationen. - Verteilte Transaktionen : Diese Transaktionen erstrecken sich über mehrere Datenbanken und gewährleisten die Konsistenz zwischen ihnen.
- Implizite Transaktionen : Wird von SQL Server für bestimmte Vorgänge automatisch gestartet.
- Explizite Transaktionen : Manuell gesteuerte Transaktionen, bei denen der Benutzer die Transaktion mit beginnt und beendet
BEGIN TRANSACTIONCOMMITUndROLLBACK.
Überwachung und Optimierung von SQL-Transaktionen
Um die Leistung aufrechtzuerhalten und Problemen vorzubeugen, sollten Sie die folgenden Techniken in Betracht ziehen:
1. Überwachen Sie Sperren : Verfolgen Sie das Sperrverhalten und passen Sie Abfragen an, um Sperrkonflikte zu minimieren.
2. Begrenzen Sie den Transaktionsumfang : Begrenzen Sie die Anzahl der von einer Transaktion betroffenen Zeilen oder Datensätze, um die Verarbeitung zu beschleunigen.
3. Verwenden Sie die Stapelverarbeitung : Wenn Sie große Datenmengen verarbeiten, teilen Sie die Vorgänge in kleinere Transaktionen oder Stapel auf, um eine Überlastung des Systems zu vermeiden.
Empfohlenes Quiz Quiz bearbeiten 5 FragenWelches der folgenden Szenarios beschreibt am besten einen Verstoß gegen die Eigenschaft „Isolation“ in ACID?
- A
Eine Transaktion hinterlässt die Datenbank in einem Zustand, der eine Primärschlüsseleinschränkung verletzt.
- B
Zwei gleichzeitig ausgeführte Transaktionen lesen und schreiben dieselben Daten, was zu inkonsistenten Ergebnissen führt.
- C
Ein Benutzer aktualisiert erfolgreich einen Datensatz, aber ein Systemabsturz löscht die Änderung.
- D
Eine Transaktion schlägt mittendrin fehl und alle ihre Änderungen werden rückgängig gemacht.
Dies ist ein klassisches Beispiel für eine Isolationsverletzung, bei der der Zwischenstatus einer Transaktion für eine andere sichtbar ist.
Bei einer Bankanwendung erfolgt bei einer Geldüberweisung die Belastung eines Kontos und die Gutschrift auf einem anderen Konto. Welche ACID-Eigenschaft stellt sicher, dass entweder beide Vorgänge abgeschlossen werden oder keiner?
- A
Isolierung
- B
Atomarität
- C
Haltbarkeit
- D
Konsistenz
Atomicity stellt sicher, dass alle Vorgänge innerhalb einer Transaktion erfolgreich abgeschlossen werden; andernfalls wird die gesamte Transaktion zurückgesetzt.
Polymorphismus
Eine Transaktion wird ausgeführt und ein „COMMIT“ ausgegeben. Unmittelbar nach einem Stromausfall. Welche ACID-Eigenschaft garantiert, dass die durch die Transaktion vorgenommenen Änderungen auch nach dem Neustart des Systems noch vorhanden sind?
- A
Konsistenz
- B
Atomarität
- C
Haltbarkeit
- D
Isolierung
Welche Monate sind im dritten Quartal?
Haltbarkeit ist die Eigenschaft, die sicherstellt, dass eine einmal ausgeführte Transaktion auch im Falle eines Stromausfalls oder eines Systemabsturzes so bleibt.
Was ist der Hauptzweck des Befehls „SAVEPOINT“ in einer Transaktion?
- A
Um einen Teil der Transaktion festzuschreiben.
- B
Um einen Punkt in einer Transaktion zu markieren, zu dem Sie später einen Rollback durchführen können.
- C
Um den Status der Transaktion dauerhaft zu speichern.
- D
Um die Transaktion zu beenden und alle Änderungen dauerhaft zu machen.
„SAVEPOINT“ ermöglicht teilweise Rollbacks innerhalb einer Transaktion.
Betrachten Sie die folgende Transaktion: 'START TRANSACTION; EINFÜGEN ...; SPEICHEPUNKT A; AKTUALISIEREN ...; SAVEPOINT B; LÖSCHEN ...; ROLLBACK ZUM SAVEPOINT A;' Wie ist der Status der Transaktion nach dem Befehl „ROLLBACK“?
- A
Die gesamte Transaktion wird zurückgesetzt.
- B
Lediglich das „DELETE“ wird rückgängig gemacht.
- C
Es tritt ein Fehler auf, weil Sie kein Rollback auf einen Sicherungspunkt durchführen können, der nicht der aktuellste ist.
- D
„INSERT“ wird gespeichert, aber „UPDATE“ und „DELETE“ werden rückgängig gemacht.
Beim Zurücksetzen auf „SAVEPOINT A“ werden alle nach diesem Sicherungspunkt vorgenommenen Änderungen rückgängig gemacht, also „UPDATE“ und „DELETE“.
Quiz erfolgreich abgeschlossen. Ihre Punktzahl: 2/5Genauigkeit : 0%Melden Sie sich an, um die Erklärung anzuzeigen 1/5 1/5 < Previous Weiter >