Was sind Transaktionen?

Transaktion:

  • Folge von Befehlen (read,write), die die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand führt.

→ Einheit integritätserhaltender Zustandsänderung einer Datenbank

Transaktionen (TA)

Hauptaufgaben von Transaktionen:

  • Synchronisation (Koordination mehrerer Benutzerprozess)
  • Recovery (Beheben von Fehlersituationen)

Eigenschaften von Transaktionen:

  • Atomacity
  • Consistency
  • Isolation
  • Durabilit

ACID

Warum Transaktionen?

  • Datenbanken werden selten von nur einem Benutzer benutzt → mehrere Nutzer arbeiten gleichzeitig auf den Daten

  • Die Nutzer sollen nichts von den anderen Nutzern mitbekommen → logischer Einnutzerbetrieb

  • Pseudoparallele Ausführung der Transaktionen → bessere Auslastung des Systems

  • Ohne Kontrolle des Ablaufs von TAs → Anomalien können auftreten

Anomalien

Für Anomalie sind immer 3 Aktionen von 2 Transaktionen auf ein Object nötig

Anomalien – Lost Update

Lost Update Erklärung

Bei einem “Lost Update” tritt folgendes Scenario auf:

  • Zunächst wird 100 gelesen.
  • Dann 10 addiert → 110.
  • Die 110 wurden aber noch nicht geschrieben.
  • T2 liest derweil x und liest → 100.
  • 100 -20 = 80.
  • T1 schreibt jetzt die 110.
  • T2 überschreibt dies direkt mit 80.
  • war ein Lost Update.

Bei dieser Art von Fehler überschreibt eine Transaktion die Änderungen einer anderen, bevor diese permanent gemacht werden konnten, was oft zu Inkonsistenzen in der Datenverarbeitung führt.

  • Verloren gegangene Änderung

  • Zwei Transaktionen: ,

  • ändert Object x → Änderung wird durch überschrieben

Änderung von geht verloren Verstoß gegen Durability

Anomalien – Dirty Read / Dirty Write

Dirty Read Erklärung

Bei einem “Dirty Read” liest eine Transaktion Daten, die von einer anderen Transaktion geändert, aber noch nicht endgültig gesichert wurden. Hierbei kann es passieren, dass diese vorläufigen Daten später von der ursprünglichen Transaktion zurückgerollt werden, was zu Inkonsistenzen führt. Ein Beispiel dafür ist:

  • T1 liest x, welches 100 ist.
  • T1 erhöht x um 10, sodass x jetzt 110 ist.
  • T1 schreibt den neuen Wert von x (110).
  • T2 liest den neuen Wert von x (110), bevor T1 erfolgreich abgeschlossen hat.
  • T2 verringert x um 20, sodass x jetzt 90 ist.
  • T2 schreibt den neuen Wert von x (90).
  • T1 scheitert und muss alle Änderungen zurückrollen, einschließlich der Erhöhung von x auf 110.
  • Das führt dazu, dass die Änderung von T2 auf einem ungültigen, weil zurückgerollten Wert basierte, was typisch für ein Dirty Read ist.

Diese Situation verdeutlicht das Risiko eines Dirty Reads, bei dem Daten gelesen und modifiziert werden, die möglicherweise nicht dauerhaft im System verbleiben.

  • Zugriff auf „schmutzige“ (nicht dauerhaft gültige) Daten

  • Zwei Transaktionen: ,

  • verändert Object x zwei mal

  • Zwischen Änderung liest den Wert von x (dieser Wert bleibt aber nicht dauerhaft gültig)

Verstoß gegen Consistency

Anomalien – Non-Repeatable Read

Non-Repeatable Read Erklärung

Ein “Non-Repeatable Read” tritt auf, wenn eine Transaktion denselben Datensatz mehrmals liest und unterschiedliche Werte erhält, weil eine andere Transaktion zwischenzeitlich Änderungen vorgenommen und festgeschrieben hat. Dies kann zu Inkonsistenzen und unerwarteten Ergebnissen führen. Hier ein Beispiel:

  • T1 liest x, welches 100 ist.
  • T2 ändert x von 100 auf 110 und schreibt den neuen Wert.
  • T1 liest x erneut und stellt fest, dass der Wert sich von 100 auf 110 geändert hat.
  • Diese Änderung führt zu einem Non-Repeatable Read, da T1 beim zweiten Lesen einen anderen Wert erhält also beim ersten Mal.

Dies illustriert, wie kritisch es ist, dass Transaktionen während eines Lesevorgangs konsistente Daten vorfinden, um die Integrität der Datenbearbeitung zu gewährleisten.

  • Eine Transaktion sieht während ihrer Ausführung zwei unterschiedliche Werte von einem Object
  • liest beim ersten Auslesen von x einen anderen Wert also beim zweiten, da den Wert von x verändert

Verstoß gegen Isolation

Transaktionen müssen so Ausgeführt werden, dass das ACID-Prinzip nicht verletzt wird


Ultimative Anomalien Zusammenfassung