Was ist Transaktion?

Folge von Operationen auf einer Datenbank, die als eine Einheit behandelt wird. COMMIT macht die Ergebnisse dauerhaft, ROLLBACK stellt den Zustand vor Beginn wieder her. Das DBMS verwaltet Transaktionen mit Sperren und Protokollen so, dass sie Atomarität, Konsistenz, Isolation und Dauerhaftigkeit (die ACID-Eigenschaften) erfüllen.

Japanische Bezeichnung: トランザクション

„Transaktion“ kommt in 12 Übungsfragen aus 1 Themen vor, z. B. Grundlagen der Datenbanken.

Fachgebiet: Grundlagen der Datenbanken

COMMIT und ROLLBACK

Bei einer Überweisung zwischen Konten ist das Ergebnis erst korrekt, wenn sowohl die Belastung von Konto A als auch die Gutschrift auf Konto B erfolgt sind. Eine Transaktion fasst eine solche Folge von Operationen zu einer Einheit zusammen: Ein COMMIT am Ende macht die Ergebnisse dauerhaft, und ein ROLLBACK, etwa wenn zwischendurch ein Fehler auftritt, verwirft jede Änderung in der Transaktion. Nicht festgeschriebene Änderungen werden auch bei einem Ausfall verworfen, sodass kein halbfertiger Zustand mit nur einem Teil der Änderungen zurückbleibt.

Nebenläufigkeitskontrolle

Greifen viele Nutzer gleichzeitig auf eine Datenbank zu, lesen und schreiben mehrere Transaktionen dieselben Daten. Ohne jede Kontrolle entstehen Probleme: Eine Änderung kann eine andere überschreiben und zunichtemachen (Lost Update), oder eine Transaktion liest nicht festgeschriebene Daten (Dirty Read). Das DBMS verhindert die gegenseitige Beeinflussung von Transaktionen durch Nebenläufigkeitskontrolle mit gemeinsamen und exklusiven Sperren oder durch Multiversion Concurrency Control (MVCC), das frühere Versionen der Daten für Lesezugriffe aufbewahrt. Wie viel Beeinflussung verhindert wird, wählt man über das Isolationslevel.

Wiederherstellung nach Ausfällen

Das DBMS zeichnet die Werte vor und nach jeder Änderung in einem Protokoll auf und schreibt das Protokoll vor der eigentlichen Datenbank auf den Speicher. Nach einem Ausfall wiederholt es anhand des Protokolls die Änderungen festgeschriebener Transaktionen (Rollforward) und macht die Änderungen nicht festgeschriebener rückgängig (Rollback), sodass ein korrekter Zustand wiederhergestellt wird. Regelmäßige Checkpoints verkürzen den Teil des Protokolls, der bei der Wiederherstellung durchlaufen werden muss.

Jetzt üben: Fragen zu Transaktion

In einer Kontentabelle wird eine Transaktion gestartet, und ein UPDATE, das vom Saldo von Konto A 300 abzieht, sowie ein UPDATE, das zum Saldo von Konto B 300 addiert, werden ausgeführt. Danach wird statt COMMIT ein ROLLBACK ausgeführt. Was geschieht mit der Kontentabelle?

  1. ANur die Addition auf Konto B wird verworfen; der Abzug von Konto A bleibt bestehen
  2. BBeide UPDATEs werden verworfen, und die Tabelle kehrt in den Zustand vor Beginn der Transaktion zurück
  3. CDa die UPDATEs bereits ausgeführt wurden, wird keines von beiden verworfen
Antwort und Erläuterung anzeigen

Antwort: B. Beide UPDATEs werden verworfen, und die Tabelle kehrt in den Zustand vor Beginn der Transaktion zurück

Eine Transaktion ist ein Mechanismus, der eine Folge von Operationen auf einer Datenbank als eine Einheit behandelt. Innerhalb einer Transaktion vorgenommene Änderungen werden mit COMMIT dauerhaft und mit ROLLBACK sämtlich verworfen, sodass die Daten in den Zustand vor Beginn der Transaktion zurückkehren. Hier werden sowohl der Abzug von Konto A als auch die Addition auf Konto B verworfen, und beide Salden bleiben unverändert. Tritt mitten in einer Überweisung ein Fehler auf, sorgt ein ROLLBACK dafür, dass kein halbfertiger Zustand zurückbleibt, in dem nur ein Konto geändert ist. Um nur einen Teil zu verwerfen, kann man mit SAVEPOINT eine Markierung setzen und mit ROLLBACK TO SAVEPOINT dorthin zurückkehren.

Welche der ACID-Eigenschaften, die eine Transaktion haben sollte, besagt, dass eine Überweisung, die Konto A belastet und Konto B gutschreibt, entweder vollständig oder gar nicht ausgeführt wird, selbst wenn zwischendurch ein Fehler auftritt?

  1. AKonsistenz (Consistency)
  2. BDauerhaftigkeit (Durability)
  3. CAtomarität (Atomicity)
Antwort und Erläuterung anzeigen

Antwort: C. Atomarität (Atomicity)

Die ACID-Eigenschaften sind nach den Anfangsbuchstaben von vier Eigenschaften benannt, die eine Transaktion erfüllen sollte. Atomarität (Atomicity) bedeutet, dass die Operationen einer Transaktion entweder alle oder gar nicht ausgeführt werden; tritt ein Fehler auf, werden die bis dahin vorgenommenen Änderungen verworfen. Konsistenz (Consistency) bedeutet, dass die Daten vor und nach der Transaktion die Integritätsbedingungen erfüllen (Salden werden nie negativ, Fremdschlüssel verweisen immer auf existierende Zeilen usw.). Isolation bedeutet, dass gleichzeitig laufende Transaktionen einander nicht beeinflussen und dasselbe Ergebnis liefern, als wären sie nacheinander ausgeführt worden. Dauerhaftigkeit (Durability) bedeutet, dass die Ergebnisse einer festgeschriebenen Transaktion auch bei einem späteren Fehler nicht verloren gehen. Die im Text beschriebene Alles-oder-nichts-Eigenschaft ist die Atomarität.

Häufige Fragen

Was geschieht, wenn mitten in einer Transaktion ein Fehler auftritt?

Entweder führt die Anwendung ein ROLLBACK aus, oder das DBMS führt die Wiederherstellung nach dem Ausfall durch; in beiden Fällen wird jede Änderung in dieser Transaktion verworfen. Es bleiben nie nur einige der Änderungen zurück.

Welche Probleme entstehen, wenn eine Transaktion lange dauert?

Sie hält Sperren lange fest, sodass andere Transaktionen warten, weniger gleichzeitig verarbeitet werden kann und Deadlocks wahrscheinlicher werden. Grundsätzlich sollte eine Transaktion so kurz sein, wie es zur Wahrung der Konsistenz nötig ist.

„Transaktion“ in den Erläuterungen

Fragen mit „Transaktion“ (12)

  1. In einer Kontentabelle wird eine Transaktion gestartet, und ein UPDATE, das vom Saldo von Konto A 300 abzieht, sowie ein UPDATE, das zum Saldo von Konto B 300 addiert, werden ausgeführt. Danach wird statt COMMIT ein ROLLBACK ausgeführt. Was geschieht mit der Kontentabelle?
  2. Welche der ACID-Eigenschaften, die eine Transaktion haben sollte, besagt, dass eine Überweisung, die Konto A belastet und Konto B gutschreibt, entweder vollständig oder gar nicht ausgeführt wird, selbst wenn zwischendurch ein Fehler auftritt?
  3. Der Bestand eines Produkts in einer Lagertabelle ist 10. Transaktion T1 liest den Bestand und schreibt den Wert minus 3 zurück, T2 liest den Bestand und schreibt den Wert minus 5 zurück. Wie hoch ist der Endbestand, wenn beide ohne Sperren in der Reihenfolge T1 liest, T2 liest, T1 schreibt, T2 schreibt ablaufen?
  4. Transaktion T1 führte SELECT COUNT(*) FROM Bestellung WHERE Betrag >= 1000 aus und erhielt 8. Unmittelbar danach fügte T2 eine Bestellzeile mit einem Betrag von 2000 per INSERT ein und schrieb sie fest. Als T1 dieselbe SELECT-Anweisung erneut ausführte, erhielt sie 9. Um welches Phänomen handelt es sich?
  5. Transaktion T1 hält eine gemeinsame Sperre (Shared Lock) auf einer Zeile und liest sie. T2 fordert eine gemeinsame Sperre und T3 eine exklusive Sperre (Exclusive Lock) auf dieselbe Zeile an. Was gilt für den Zeitraum, bis T1 ihre Sperre freigibt?
  6. Transaktion T1 setzte eine exklusive Sperre auf Zeile A und forderte dann eine Sperre auf Zeile B an, während T2 eine exklusive Sperre auf Zeile B setzte und dann eine Sperre auf Zeile A anforderte, sodass keine von beiden weiterkommt. Was tut ein DBMS üblicherweise, wenn es diese Situation erkennt?
  7. SQL-Anweisungen werden in Datendefinitionssprache (DDL), Datenmanipulationssprache (DML) und Datenkontrollsprache (DCL) eingeteilt. Welche Anweisung gehört zur DDL?
  8. Was ist das Ergebnis, wenn in SQL DELETE FROM Mitarbeiter ohne WHERE-Klausel ausgeführt wird?
  9. Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?
  10. Welche Aussage beschreibt das für die Nebenläufigkeitskontrolle von Transaktionen verwendete Zwei-Phasen-Sperrprotokoll (2PL) richtig?
  11. Viele DBMS zeichnen bei einer Datenänderung die Änderung in einem Protokoll (Journal, Log) auf und schreiben dieses Protokoll vor der eigentlichen Datenbank auf nichtflüchtigen Speicher (WAL: Write-Ahead Logging). Was ist der Hauptgrund für dieses Vorgehen?
  12. Es gibt die Transaktionen T1 bis T5, und vor einem Ausfall wurde einmal ein Checkpoint gesetzt. T1 begann und wurde vor dem Checkpoint festgeschrieben. T2 und T3 begannen vor dem Checkpoint; T2 wurde nach dem Checkpoint, aber vor dem Ausfall festgeschrieben, T3 war zum Zeitpunkt des Ausfalls nicht festgeschrieben. T4 und T5 begannen nach dem Checkpoint; T4 wurde vor dem Ausfall festgeschrieben, T5 nicht. Für welche Transaktionen ist bei der Wiederherstellung nach dem Ausfall ein Rollforward anhand des Protokolls nötig?

Verwandte Begriffe

SQL ACID-Eigenschaften Isolationslevel Deadlock Fremdschlüssel Zwei-Phasen-Sperrprotokoll (2PL) Dritte Normalform (3NF) E-R-Diagramm (Entity-Relationship-Diagramm) Index (Datenbankindex) Normalisierung

Zur Glossarübersicht