Transaktionen und Sperren Flashcards
Begriff Transaktion
Folge von Operationen die eine DB von einem konsistenten Zustand in einen möglicherweise neuen aber wieder konsistenten Zustand überführt.
Wofür welches Wort steht das A in ACID ?
Atomarität / atomicity
Wofür welches Wort steht das C in ACID ?
Konsistenz / consistente
Wofür welches Wort steht das I in ACID ?
Isolation
Wofür welches Wort steht das D in ACID ?
Dauerhaftigkeit / durability
Was bedeutet “Konsistenz” in ACID ?
Mit dem Ende einer Transaktion (auch bei Abbruch) müssen alle Integritätsbedingungen erfüllt sein.
Was bedeutet “Isolation” in ACID ?
Nutzer hat Eindruck, dass er alleine mit der DB arbeitet
- Nebenläufige Transaktionen beeinflussen sich nicht
- Transaktionen müssen so ausgeführt werden als würden sie seriell ausgeführt
Was bedeutet “Dauerhaftigkeit” in ACID ?
Änderungen sollen dauerhaft in der DB auf dem Externen Speicher festgeschrieben sein.
Was bedeutet “Dauerhaftigkeit” in ACID ?
Änderungen sollen dauerhaft in der DB auf dem Externen Speicher festgeschrieben sein.
Transaktionen Fehlerfall: wozu gehört “die Buchung rückgängig machen” ?
A (Atomarität)
Transaktionen Fehlerfall: wozu gehört “Integritätsbedingungen müssen erfüllt sein” ?
C (Konsistenz)
Transaktionen Fehlerfall: wozu gehört “parallele Transaktionen dürfen nicht zu Fehlern führen” ?
I (Isolation)
Transaktionen Fehlerfall: wozu gehört “Buchung soll dauerhaft gespeichert werden” ?
D (Dauerhaftigkeit)
Transaktionsgrenzen in SQL (Nennung)
- BOT
- COMMIT
- ABORT
Transaktionsgrenzen in SQL : BOT Kürzel
Beginn of Transaction
Transaktionen Fehlerquellen
- lost update
- dirty read
- non-repeatable read
- Phantom Problem
Transaktionen Fehlerquellen: Was ist “Lost Update” ?
Zwei Transaktionen lesen und verändern einen Wert, nur das “neuer”/”letztere” Schreiben des Wertes wird persistiert (das erste Schreiben geht verloren)
Transaktionen Fehlerquellen: Was ist “dirty read” ?
- T1 verändert einen Wert
- T2 liest diesen aus
- T1 bricht ab
T2 hat nun einen unechten / schmutzigen Wert ausgelesen.
Transaktionen Fehlerquellen: Was ist “non repeatable read” ?
- T1 liest einen Wert aus
- T2 verändert den Wert
- T1 liest den Wert erneut aus
T1 hat nun zwei verschiedene Werte ausgelesen
Transaktionen Fehlerquellen: Was ist das “Phantomproblem” ?
- T1 selektiert alle Tupel aus Relation
- T2 Fügt neue Tupel in Relation ein /löscht welche
- T1 updated alle selektierten Tupel
Das neue Tupel aus T2 wird nicht geupdated !
Transaktionslevel “Read uncommitted” : welche Fehlerquellen sind ausgeschlossen ?
- Lost Update
Transaktionslevel “Read Commited” : welche Fehlerquellen sind ausgeschlossen ?
- Lost Update
- Dirty Read
Transaktionslevel “Repeatable Read” : welche Fehlerquellen sind ausgeschlossen ?
- Lost Update
- Dirty Read
- Non Repeatable Read
Transaktionslevel “Serializable” : welche Fehlerquellen sind ausgeschlossen ?
Alle:
- Lost Update
- Dirty Read
- Non Repeatable Read
- Phantomproblem
Was ist die “Serialisierbarkeit” ?
Verschränkter Schedule == Serieller Schedule
Was ist ein “Schedule” ?
zusammengefasste Folge von Operationen / Transaktionen
Verschränkter Schedule zu:
T1: r1(x) - r1(y) - w1(x)
T2: r2(y) - w2(y)
r1(x) - r2(y) - r1(y) - w2(y) - w1(x)
Serieller Schedule zu:
T1: r1(x) - r1(y) - w1(x)
T2: r2(y) - w2(y)
r1(x) - r1(y) - w1(x) - r2(y) - w2(y)
Was it das “Zwei-Phasen Sperrprotokoll “(2PL) : was ist die “Verklemmung” / “Deadlock” ?
Gegenseitiges Warten von zwei Transaktionen die jeweils verschiedene Objekte sperren und im zweiten Schritt das Objekt der jeweils anderen Transaktion sperren wollen.
Was versteht man unter der “Granularität” von Sperren ?
Wie klein der Bereich ist den die Sperre betrifft (DB->Attribut)