Datenbanksysteme 1 Mehrbenutzersynchronisation Marius Eich 30. November 2016 1 / 14 Konfliktoperationen Konfliktoperationen sind Operationen, deren Reihenfolge in der Historie festgelegt sein muss: ri (A) und rj (A): Kein Konflikt. Reihenfolge ist egal. ri (A) und wj (A) und umgekehrt: Konflikt. Die Reihenfolge der Operationen ist entscheidend. wi (A) und wj (A): Konflikt. 2 / 14 Serialisierbarkeit Serialisierbarkeit ist das minimale Korrektheitskriterium einer Historie bzgl. der Mehrbenutzersynchronisation. Historie ist serialisierbar, wenn sie äquivalent zu einer seriellen Historie ist. 3 / 14 Serialisierbarkeitsgraph SG Gegeben: Historie H mit erfolgreich abgeschlossenen Transaktionen {T1 , . . . Tn }. Knotenmenge von SG (H): {T1 , . . . Tn }. Für Konfliktoperationen pi , qj aus H mit pi <H qj : Füge Kante Ti → Tj ein. H ist serialisierbar, wenn SG (H) azyklisch ist. 4 / 14 Schreib/Leseabhängigkeiten Ti liest von Tj , wenn gilt: Tj schreibt mindestens ein Datum A, das Ti nachfolgend liest: wj (A) <H ri (A) Tj wird nicht vor dem Lesevorgang von Ti zurückgesetzt: aj <H ri (A) Alle anderen zwischenzeitlichen Schreibvorgänge auf A durch andere Transaktionen werden vor dem Lesen durch Ti zurückgesetzt. 5 / 14 Eigenschaften von Historien Eine Historie H ist rücksetzbar (RC), wenn immer die schreibende Transaktion in H vor der lesenden Transaktion ihr commit durchführt. vermeidet kaskadierendes Rücksetzten (ACA), wenn immer die schreibende Transaktion in H ihr commit durchführt, bevor die lesende Transaktion liest. ist strikt, wenn die Transaktion, H die ein Datum A schreibt, immer ihr commit durchführt, bevor eine andere Transaktion A liest oder schreibt. 6 / 14 Historienklassen alle Historien H9 RC H8 ACA H7 ST H1 H2 SR H3 H4 H6 serielle Historien H5 7 / 14 Zwei-Phasen-Sperrprotokoll (2PL) 8 / 14 Zwei-Phasen-Sperrprotokoll (2PL) 2PL garantiert lediglich die Serialisierbarkeit. Beispiel für nicht-rücksetzbare Historie mit 2PL: w1 [x] − unlock x − r2 [x]w2 [y ]c2 c1 9 / 14 Strenges 2PL ⇒ garantiert strikte Historien 10 / 14 Deadlocks Deadlock: w1 [x]w2 [y ]w1 [y ]w2 [x] Auflösen des Deadlocks durch Zurücksetzen einer oder mehrerer beteiligter Transaktionen Denkbare Kriterien für Auswahl der zurückzusetzenden TA: I I I Alter der TA Ressourcen, die TA hält Anzahl der Deadlocks, an denen TA beteiligt ist Deadlockvermeidung durch: I I Preclaiming Zeitstempel (wound-wait / wait-die) 11 / 14 Kompatibilitätsmatrix NL S X S X X X X - - 12 / 14 Aufgabe 4 T1 T2 T3 T4 T5 a x S - b s s X - c X s s - T1 d x X e s s s - f S x T4 T3 T2 T5 13 / 14 Aufgabe 5 S √ S X IS IX SIX √ - X - IS √ IX √ √ √ √ √ - 1 2 5 7 - Datenbank 3 6 SIX √ 4 8 9 Relationen 10 Tupel Drei Transaktionen T1, T2 und T3 fordern folgende Sperren an: T1: Exklusive Sperre auf Knoten 5 T2: Lese-Sperre auf Knoten 7 T3: Lese-Sperre auf Knoten 4 14 / 14