Transaktionsmanagement in DBMS: Zustände, Typen & ACID

⚡ Intelligente Zusammenfassung

Das Datenbank-Transaktionsmanagement behandelt eine oder mehrere Datenbankoperationen als eine einzige logische Einheit, die die Datenbank von einem konsistenten Zustand in einen anderen überführt. Es nutzt ACID-Eigenschaften, definierte Transaktionszustände und Zeitpläne, um korrekte gleichzeitige Zugriffe zu gewährleisten.

  • 🔁 Kerneinheit: Eine Transaktion gruppiert zusammengehörige Lese- und Schreibvorgänge so, dass sie entweder gemeinsam erfolgreich sind oder gemeinsam fehlschlagen, niemals nur teilweise.
  • 🧪 ACID-Eigenschaften: AtomStabilität, Konsistenz, Isolation und Dauerhaftigkeit garantieren korrekte Ergebnisse auch bei Fehlern oder gleichzeitigem Betrieb.
  • 🚦 Transaktionsstatus: Die Status „Aktiv“, „Teilweise abgeschlossen“, „Abgeschlossen“, „Fehlgeschlagen“ und „Beendet“ beschreiben den Lebenszyklus einer Transaktion.
  • 👥 Warum Parallelverarbeitung? Da es sich um eine gemeinsam genutzte Datenbank handelt, laufen viele Transaktionen gleichzeitig ab und dürfen sich nicht gegenseitig die Daten beschädigen.
  • 📋 Stundenpläne: Ein Zeitplan ordnet die Operationen paralleler Transaktionen und erhält dabei die interne Reihenfolge jeder Transaktion aufrecht.
  • 🔗 Serialisierbarkeit: Ein paralleler Ablaufplan ist korrekt, wenn sein Ergebnis einer sequenziellen Ausführung entspricht, beurteilt anhand der Konflikt- oder Sichtäquivalenz.
  • Wiederherstellung: Eine fehlgeschlagene Transaktion wird zurückgesetzt, sodass ihre Teilschreibvorgänge niemals in der endgültigen Datenbank landen.

Transaktionsverwaltung in DBMS

Was ist eine Datenbanktransaktion?

A Datenbanktransaktion Eine Datenbanktransaktion ist eine logische Verarbeitungseinheit in einem DBMS, die einen oder mehrere Datenbankzugriffe umfasst. Kurz gesagt, Datenbanktransaktionen repräsentieren reale Ereignisse in einem Unternehmen.

Alle Datenbankzugriffsoperationen, die zwischen dem Beginn und dem Ende einer Transaktion ausgeführt werden, bilden in einem DBMS eine einzige logische Transaktion. Während der Transaktion ist die Datenbank inkonsistent. Erst mit dem Commit der Transaktion wird der Zustand von einem konsistenten Zustand in einen anderen geändert.

Datenbanktransaktionen, die zwischen konsistenten Zuständen wechseln
Datenbanktransaktion

Fakten über Datenbanktransaktionen

  • Eine Transaktion ist eine Programmeinheit, deren Ausführung den Inhalt einer Datenbank ändern kann oder nicht.
  • Das Transaktionskonzept im DBMS wird als eine Einheit ausgeführt.
  • Wenn die Datenbankoperationen die Datenbank nicht aktualisieren, sondern nur Daten abrufen, wird dieser Transaktionstyp als schreibgeschützte Transaktion bezeichnet.
  • Eine erfolgreiche Transaktion kann den Zustand der Datenbank von einem KONSISTENTEN ZUSTAND in einen anderen ändern.
  • DBMS-Transaktionen müssen atomar, konsistent, isoliert und dauerhaft sein.
  • Wenn sich die Datenbank vor einer Transaktion in einem inkonsistenten Zustand befände, würde sie nach der Transaktion in diesem inkonsistenten Zustand verbleiben.

Warum ist Parallelität bei Transaktionen notwendig?

Eine Datenbank ist eine gemeinsam genutzte Ressource. Sie wird von vielen Benutzern und Prozessen gleichzeitig verwendet. Beispiele hierfür sind Bankensysteme, Reservierungssysteme für Bahn und Fluggesellschaften, Börsenüberwachungssysteme sowie Warenwirtschaftssysteme und Kassensysteme in Supermärkten.

Wenn der gleichzeitige Zugriff nicht verwaltet wird, kann dies zu Problemen wie den folgenden führen:

  • Hardwareausfälle und Systemabstürze.
  • Gleichzeitige Ausführung derselben Transaktion, Deadlockoder langsame Leistung.

Die Kontrolle dieses gemeinsamen Zugriffs ist die Aufgabe von ParallelitätskontrolleDabei werden Sperren und Zeitstempel verwendet, um Transaktionen sicher zu verschachteln. Zuvor ist es hilfreich, die Zustände zu kennen, die eine Transaktion durchläuft.

Status von Transaktionen

Nachfolgend sind die verschiedenen Zustände eines Transaktionskonzepts im DBMS aufgeführt:

Staat Beschreibung
Aktiver Zustand Eine Transaktion tritt in den aktiven Zustand ein, sobald der Ausführungsprozess beginnt. Während dieses Zustands können Lese- oder Schreibvorgänge durchgeführt werden.
Teilweise engagiert Eine Transaktion wechselt nach Abschluss in den Status „teilweise abgeschlossen“.
Engagierter Staat Sobald die Transaktion den Status „festgeschrieben“ erreicht hat, wurde ihre Ausführung erfolgreich abgeschlossen und alle Änderungen werden dauerhaft in der Datenbank gespeichert.
Status fehlgeschlagen Eine Transaktion gilt als fehlgeschlagen, wenn eine der Prüfungen fehlschlägt oder wenn die Transaktion im aktiven Zustand abgebrochen wird.
Beendeter Zustand Der Status einer Transaktion erreicht den Status „abgeschlossen“, wenn die Transaktion das System verlässt und nicht neu gestartet werden kann.

Zustandsübergangsdiagramm für eine Datenbanktransaktion

Lasst uns ein Studium beginnen Zustandsübergangsdiagramm Dies verdeutlicht, wie sich eine Transaktion zwischen diesen verschiedenen Zuständen bewegt.

  1. Sobald eine Transaktion zur Ausführung startet, wird sie aktiv. Sie kann eine Lese- oder Schreiboperation ausführen.
  2. Sobald die Lese- und Schreibvorgänge abgeschlossen sind, erreicht die Transaktion den Status „teilweise abgeschlossen“.
  3. Anschließend müssen Wiederherstellungsprotokolle sicherstellen, dass ein Systemausfall nicht dazu führt, dass die Änderungen der Transaktion nicht dauerhaft gespeichert werden können. Wenn diese Prüfung erfolgreich ist, wird die Transaktion ausgeführt und in den Status „festgeschrieben“ versetzt.
  4. Schlägt die Prüfung fehl, wechselt die Transaktion in den Status „fehlgeschlagen“.
  5. Wird die Transaktion im aktiven Zustand abgebrochen, wechselt sie in den Status „fehlgeschlagen“. Um die Auswirkungen ihrer Schreibvorgänge auf die Datenbank rückgängig zu machen, muss die Transaktion zurückgesetzt werden.
  6. Der beendete Zustand bezieht sich auf die Transaktion, die das System verlässt.

Was sind die Eigenschaften von Säuren?

ACID-Eigenschaften werden verwendet, um die Integrität der Datenbank während der Transaktionsverarbeitung zu gewährleisten. ACID steht in DBMS für ATomizität, CBeständigkeit, IEinsamkeit und DHaltbarkeit.

  • AtomEis: Eine Transaktion ist eine einzelne Vorgangseinheit. Sie führen sie entweder vollständig aus oder überhaupt nicht. Eine teilweise Ausführung ist nicht möglich.
  • Konsistenz: Sobald die Transaktion ausgeführt ist, sollte sie von einem konsistenten Zustand in einen anderen übergehen.
  • Isolationswerte: Eine Transaktion sollte isoliert von anderen Transaktionen ausgeführt werden. Bei gleichzeitiger Ausführung dürfen Zwischenergebnisse von parallel ausgeführten Transaktionen nicht einander zugänglich gemacht werden.
  • Haltbarkeit: Nach erfolgreichem Abschluss einer Transaktion sollten die Änderungen in der Datenbank auch im Falle von Systemausfällen erhalten bleiben.

ACID-Eigenschaften in DBMS mit Beispiel

Nachfolgend ein Beispiel für die ACID-Eigenschaften in einem DBMS:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

Bei Transaktion 1 werden 50 $ von Konto X auf Konto Y übertragen.

Bei Transaktion 2 wird jedem Konto eine Zinszahlung in Höhe von 10 % gutgeschrieben.

Werden beide Transaktionen gleichzeitig eingereicht, gibt es keine Garantie dafür, dass Transaktion 1 vor Transaktion 2 oder umgekehrt ausgeführt wird. Unabhängig von der Reihenfolge muss das Ergebnis so sein, als würden die Transaktionen nacheinander ausgeführt.

Arten von Transaktionen

Basierend auf den Anwendungsbereichen:

  • Nicht verteilt vs. verteilt.
  • Kompensationstransaktionen.
  • Transaktionszeitpunkt.
  • Online vs. Stapelverarbeitung.

Basierend auf den Aktionen:

  • Zweistufig.
  • Eingeschränkt.
  • Handlungsmodell.

Basierend auf der Struktur:

  • Flache oder einfache Transaktionen: bestehen aus einer Folge primitiver Operationen, die zwischen einer Anfangs- und einer Endoperation ausgeführt werden.
  • Verschachtelte Transaktionen: Eine Transaktion, die andere Transaktionen enthält.
  • Arbeitsablauf.

Was ist ein Zeitplan?

Ein Ablaufplan ist ein Prozess, bei dem mehrere parallele Transaktionen zu einer Gruppe zusammengefasst und nacheinander ausgeführt werden. Dabei muss die Reihenfolge der Anweisungen innerhalb jeder Transaktion beibehalten werden. Werden zwei Transaktionen gleichzeitig ausgeführt, kann das Ergebnis der einen Transaktion das Ergebnis der anderen beeinflussen.

Beispiel

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Wenn Transaktion 2 vor Transaktion 1 ausgeführt wird, werden veraltete Informationen zur Produktmenge ausgelesen. Daher sind Zeitpläne erforderlich.

Parallele Ausführung in einer Datenbank ist unvermeidlich. Sie ist jedoch nur zulässig, wenn zwischen den gleichzeitig ausgeführten Transaktionen eine Äquivalenzrelation besteht. Diese Äquivalenz lässt sich in drei Typen unterteilen.

Ergebnisäquivalenz: Wenn zwei Ablaufpläne nach ihrer Ausführung dasselbe Ergebnis liefern, spricht man von einem ergebnisäquivalenten Ablaufplan. Sie können für bestimmte Werte das gleiche Ergebnis liefern, für andere Werte jedoch unterschiedliche. Beispielsweise aktualisiert eine Transaktion die Produktmenge, während eine andere die Kundendaten aktualisiert.

Ansichtsäquivalenz: Sichtäquivalenz liegt vor, wenn die Transaktionen in beiden Abläufen eine ähnliche Aktion ausführen. Beispielsweise fügt eine Transaktion Produktdetails in die Produkttabelle ein, während eine andere Transaktion Produktdetails in die Archivtabelle einfügt. Die Transaktion ist dieselbe, aber die Tabellen sind unterschiedlich.

Konfliktäquivalenz: In diesem Fall aktualisieren oder betrachten zwei Transaktionen denselben Datensatz. Es besteht ein Konflikt zwischen den Transaktionen, da die Ausführungsreihenfolge das Ergebnis beeinflusst.

Was ist Serialisierbarkeit?

Serialisierbarkeit ist der Prozess der Suche nach einem parallelen Ablaufplan, dessen Ausgabe einem seriellen Ablaufplan entspricht, bei dem Transaktionen nacheinander ausgeführt werden. Abhängig vom Ablaufplantyp gibt es zwei Arten von Serialisierbarkeit:

  • Konfliktserialisierbarkeit.
  • Serialisierbarkeit anzeigen.

Die beiden Ansätze unterscheiden sich darin, wie streng sie die Äquivalenz beurteilen, wie nachfolgend zusammengefasst.

Aspekt Konfliktserialisierbarkeit Serialisierbarkeit anzeigen
Verpflegung Reihenfolge der sich widersprechenden Operationen Lese- und Schreibbeziehungen
Test Der Vorgangsgraph muss azyklisch sein. Siehe Äquivalenz zu einem seriellen Zeitplan
Strenge Strenger, eine Teilmenge Umfassender, schließt auch blinde Autoren ein
Kosten für die Überprüfung Effizient Rechentechnisch schwierig

Jeder konfliktserialisierbare Zeitplan ist auch viewserialisierbar, aber nicht umgekehrt. Deshalb ist die Konfliktserialisierbarkeit der praktische Test, den ein DBMS anwendet.

Häufig gestellte Fragen

Mit Commit werden die Änderungen einer Transaktion dauerhaft in der Datenbank gespeichert. Mit Rollback werden alle Änderungen seit Beginn der Transaktion rückgängig gemacht, wodurch die Datenbank in den konsistenten Zustand vor Transaktionsbeginn zurückversetzt wird.

AtomAtomarität. Tritt ein Absturz während der Ausführung auf, stellt die Atomarität sicher, dass die angefangenen Änderungen verworfen werden, sodass die Transaktion so behandelt wird, als wäre sie nie ausgeführt worden. Die Dauerhaftigkeit schützt dann die gespeicherten Daten nach der Wiederherstellung.

Die KI analysiert Sperrwartezeiten und Deadlock-Graphen, um die Transaktionen zu erkennen, die andere blockieren, und empfiehlt dann eine Isolationsstufe oder Indexänderung, die die Konflikte reduziert, ohne die Korrektheit zu beeinträchtigen.

Bis zu einem gewissen Grad. Indem ein Modell die Sperranforderungsmuster lernt, die früheren Deadlocks vorausgingen, kann es eine riskante Transaktionsmischung frühzeitig erkennen, sodass der Scheduler Transaktionen verzögern oder neu anordnen kann, bevor ein Zyklus entsteht.

Ein sequenzieller Ablaufplan führt eine Transaktion vollständig aus, bevor die nächste beginnt, sodass keine Verschachtelung Daten beschädigen kann. Er ist langsam, weshalb das Ziel ein paralleler Ablaufplan ist, der sich in diesen serialisieren lässt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: