9. Synchronisation in DBS: Grundlagen Sperrverfahren Grundlagen, Anomalien im Mehrbenutzerbetrieb Mehrben t erbetrieb Serialisierbarkeit Zweiphasen-Sperrprotokolle Konsistenzstufen von Transaktionen Hierarchische Sperrverfahren Deadlock-Behandlung dl k h dl – Timeout – Wait/Die, Wait/Die Wound/Wait, Wound/Wait WDL – Erkennung Implementierung SS09, © Prof. Dr. E. Rahm der Datenstrukturen (Sperrtabelle) 9-1 IDBS 2 Mehrbenutzerbetrieb Viele gleichzeitige Nutzer auf derselben DB – Mehrbenutzerbetrieb mit paralleler Ausführung unabhängiger Transaktionen Serielle (sequentielle) Ausführung von Transaktionen inakzeptabel – lange Wartezeiten für neue Transaktionen/DB-Anfragen bis laufende Transaktion und andere bereits wartende Transaktionen beendet sind – sehr schlechte CPU CPU-Nutzung Nutzung aufgrund zahlreicher Transaktionsunterbrechungen: E/A, Kommunikationsvorgänge Anomalien im Mehrbenutzerbetrieb ohne Synchronisation 1. Verlorengegangene Änderungen Ä (lost updates) 2. Abhängigkeiten von nicht freigegebenen Änderungen (dirty read, dirty overwrite) 3. Inkonsistente k i Analyse l (non-repeatable ( bl read) d) 4. Phantom-Problem Æ nur durch Änderungstransaktionen verursacht SS09, © Prof. Dr. E. Rahm 9-2 IDBS 2 Verloren gegangene Änderung (Lost Update) DB-Inhalt Gehaltsänderung T1 SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR = 2345 gehalt := gehalt + 2000; (PNR GEHALT) (PNR, Gehaltsänderung T2 2345 29.000 SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR = 2345 gehalt := gehalt + 1000; UPDATE PERS SET GEHALT = :gehalt WHERE PNR = 2345 2345 UPDATE PERS SET GEHALT = :gehalt WHERE PNR = 2345 2345 Zeit SS09, © Prof. Dr. E. Rahm IDBS 2 9-3 Schmutziges Lesen (Dirty Read) DB-Inhalt Gehaltsänderung T 1 UPDATE PERS SET GEHALT = GEHALT + 1000 3 5 WHERE PNR = 2345 (PNR, GEHALT) 2345 29.000 Gehaltsänderung T 2 2345 SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR = 2345 ••• gehalt := gehalt * 1.05; ROLLBACK WORK UPDATE PERS SET GEHALT = :gehalt WHERE PNR = 3456 3456 2345 COMMIT WORK Zeit SS09, © Prof. Dr. E. Rahm 9-4 IDBS 2 Inkonsistente Analyse (Non-repeatable Read) Lesetransaktion (Gehaltssumme berechnen) SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR = 2345 summe = summe + gehalt DB-Inhalt Änderungstransaktion g (PNR, GEHALT) 2345 3456 29.000 38.000 UPDATE PERS SET GEHALT = GEHALT + 1000 WHERE PNR = 2345 2345 40.000 UPDATE PERS SET GEHALT = GEHALT + 2000 WHERE PNR = 3456 3456 50.000 COMMIT WORK SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR = 3456 summe = summe + gehalt COMMIT WORK SS09, © Prof. Dr. E. Rahm Zeit 9-5 IDBS 2 Phantom-Problem Lesetransaktion Änderungstransaktion (Gehaltssumme überprüfen) (Einfügen eines neuen Angestellten) SELECT SUM (GEHALT) INTO :summe FROM PERS WHERE ANR = 17 INSERT INTO PERS (PNR, ANR, GEHALT) VALUES (4567, 17, 55.000) COMMIT WORK SELECT SUM (GEHALT) INTO :summe2 FROM PERS WHERE ANR = 17 IF summe <> summe2 THEN <Fehlerbehandlung> Zeit SS09, © Prof. Dr. E. Rahm 9-6 IDBS 2 Synchronisation von Transaktionen: Modellannahmen Transaktion: Programm T mit DB-Anweisungen Annahme: Wenn T allein auf einer konsistenten DB ausgeführt g wird,, dann terminiert T (irgendwann) und hinterlässt DB in einem konsistenten Zustand. – keine Konsistenzgarantien während der Transaktionsverarbeitung Wenn mehrere Transaktionen seriell ausgeführt werden, dann bleibt die Konsistenz der DB erhalten DB-Anweisungen lassen sich nachbilden durch READ- und WRITEOperationen Transaktion besteht aus – BOT (Begin Of Transaction) – Folge von READ- und WRITE-Anweisungen auf Objekte – EOT (End of Transaction): Commit oder Rollback (Abort) SS09, © Prof. Dr. E. Rahm 9-7 IDBS 2 Modellannahmen (2) Die Ablauffolge Di Abl ff l von Transaktionen T ki mit i ihren ih Operationen O i kann k durch einen Schedule beschrieben werden: – BOT ist implizit – ri(x) bzw. wi(x): Read- bzw. Write-Operation durch Transaktion i auf Objekt x – EOT wird durch ci (Commit) oder ai (Abort / Rollback) dargestellt Beispiel: Beispiel eines seriellen Schedules: r1(x), r2(x), r3(y), w1(x), w3(y), r1(y), c1, r3(x), w2(x), a2, w3(x), c3, ... r1(x), (x) w1(x), (x) r1(y), (y) c1, r3(y), (y) w3(y), (y) r3(x), (x) c3, r2(x), (x) w2(x), (x) c2,... SS09, © Prof. Dr. E. Rahm 9-8 IDBS 2 Korrektheitskriterium der Synchronisation: Serialisierbarkeit Ziel der Synchronisation: logischer Einbenutzerbetrieb, d.h. g aller Mehrbenutzeranomalien Vermeidung Gleichbedeutend mit formalem Korrektheitskriterium der Serialisierbarkeit: Die parallele Ausführung einer Menge von n Transaktionen ist serialisierbar, wenn es eine f g der selben Transaktionen serielle Ausführung gibt, die für einen Ausgangszustand der DB den gleichen Endzustand der DB wie f g erzielt. die pparallele Transaktionsausführung T1 T2 T3 Hintergrund: – serielle Ablaufpläne sind korrekt – jeder Ablaufplan, der denselben Effekt wie ein serieller erzielt, ist akzeptierbar SS09, © Prof. Dr. E. Rahm 9-9 quasi-parallele serieller Ablaufplan A sführ ng Ausführung IDBS 2 Abhängigkeiten Nachweis N h i der d Serialisierbarkeit S i li i b k i kann k über üb Betrachtung B h von Abhängigkeiten zwischen Transaktionen geführt werden Abhä i k it (Konflikt) Abhängigkeit (K flikt) T1-> > T2 besteht, b t ht wenn Transaktion T kti T1 zeitlich vor Transaktion T2 auf das selbe Objekt zugreift und die Zugriffe mit nicht reihenfolgeunabhängigen Operationen erfolgten – zwei Lesezugriffe sind reihenfolgeunabhängig – Schreibzugriffe auf dem selben Objekt verletzten Reihenfolgeunabhängigkeit (unterschiedliche g für Zugriffe g vor vs. nach dem Schreibzugriff) g ) Ergebnisse Konfliktarten: – Schreib-/Lese (WR)-Konflikt – Lese-/Schreib(RW)-Konflikt – Schreib-/Schreib(WW)-Konflikt Beispiel: SS09, © Prof. Dr. E. Rahm r1(x), w2(x), w3(y), w1(y), r3(x) 9 - 10 IDBS 2 Nachweis der Serialisierbarkeit Führen von zeitlichen Füh i li h Abhängigkeiten Abhä i k i zwischen i h Transaktionen T ki in i einem Abhängigkeitsgraphen (Konfliktgraphen) S i li i b k it liegt Serialisierbarkeit li t vor, wenn der d Abhängigkeitsgraph Abhä i k it h keine k i Zyklen enthält => Abhängigkeitsgraph beschreibt partielle Ordnung zwischen Transaktionen, die sich zu einer vollständigen erweitern lässt (Serialisierungsreihenfolge) w (y) r (x) T1 r (y) T2 T3 w (x) SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 11 Anomalien im Schreib/Lese-Modell Lost Update r(x) T1 T2 Dirty Read w(x) w(x) w(x) T1 r(x) T2 Non-repeatable Read r(x) T1 T2 SS09, © Prof. Dr. E. Rahm w(x) 9 - 12 r(x) w(x) IDBS 2 Konsistenzerhaltende Ablaufpläne b inT bei Transaktionen ki bestehen b h n!! mögliche ö li h serielle i ll Schedules S h d l – Z.B. für drei Transaktionen T1, T2, T3 muß so synchronisiert werden, dass der resultierende gleich dem ist,, der bei der seriellen Ausführungg in einer der folgenden g DB-Zustand g Sequenzen zustande gekommen wäre. T1 < T2 < T3 T2 < T1 < T3 T3 < T1 < T2 T1 < T3 < T2 T2 < T3 < T1 T3 < T2 < T1 Sinnvolle Einschränkungen: – Reihenfolgeerhaltende eihenfolgee haltende Se Serialisierbarkeit: ialisie ba keit: jede Transaktion a sa t o sollte so te wenigstens we gste s alle a e Änderungen de u ge sehen, die bei ihrem Start (BOT) bereits beendet waren – Chronologieerhaltende Serialisierbarkeit: jede Transaktion sollte stets die aktuellste j sehen Objektversion Beispiel T1 w (x) T3 T2 SS09, © Prof. Dr. E. Rahm w (x) r (x) IDBS 2 9 - 13 Historische Entwicklung von Synchronisationsverfahren Exklusive Objektsperren RX-Sperrverfahren hierarchische Sperren optimistische Verfahren (BOCC, FOCC, ...) SS09, © Prof. Dr. E. Rahm Zeitmarkenverfahren Varianten von Mehrversionen- Spezialverfahren Sperrverfahren Verfahren (B*-Bäume, (RAX, RAC, ...) 9 - 14 Hot-Spot-Synchronisation) ...) IDBS 2 Zweiphasen-Sperrprotokolle (2 Phase Locking, 2PL) Ei h l Einhaltung folgender f l d Regeln R l gewährleistet äh l i Serialisierbarkeit: S i li i b k i 1. vor jedem Objektzugriff muss Sperre mit ausreichendem Modus angefordert werden 2 gesetzte Sperren anderer Transaktionen sind zu beachten 2. 3. eine Transaktion darf nicht mehrere Sperren für ein Objekt anfordern 4. Zweiphasigkeit: - Anfordern A f d von Sperren S erfolgt f l iin einer i W ht Wachstumsphase h - Freigabe der Sperren in Schrumpfungsphase - Sperrfreigabe kann erst beginnen, wenn alle Sperren gehalten werden 5. Spätestens bei EOT sind alle Sperren freizugeben #Sperren (2PL) itli h zeitlicher Transaktionsverlauf SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 15 Striktes Zwei-Phasen-Sperren 2PL garantiert Serialisierbarkeit lediglich in fehlerfreier Umgebung Fehler während Schrumpfungsphase können zu "Dirty Read" etc. führen Lösungsalternativen – Lesen schmutziger Daten und Abhängigkeiten bei Commit überprüfen (Problem: kaskadierende Rollbacks) – Besser: strikte Zwei-Phasen-Sperrverfahren mit Sperrfreigabe nach Commit (in CommitPhase 2 eines Zwei-Phasen-Commits) #Sperren Lock(x) Unlock(x) T1 Lock(x) Unlock(x) BOT T2 EOT strikt zweiphasiges Sperren Lock(x) T3 Preclaiming SS09, © Prof. Dr. E. Rahm 9 - 16 BOT EOT IDBS 2 RX-Sperrverfahren Sperranforderung S f d einer i T Transaktion: ki R (Read) (R d) oder d X (eXclusive ( X l i bzw. b Write) Wi ) Gewährter Sperrmodus des Objektes: NL, R, X Kompatibilitätsmatrix: aktueller Modus NL R X + verträglich (kompatibel) R angeforderter M d Modus - unverträglich X (NL (no lock) wird meist weggelassen) unverträgliche Sperranforderung (Sperrkonflikt) führt zur Blockierung – anfordernde Transaktion muss warten bis Sperre verfügbar wird SS09, © Prof. Dr. E. Rahm 9 - 17 IDBS 2 Problem von Sperrkonversionen T1 T2 R (y) X (y) R (y) X (y) Sperrkonversionen führen oft zu Deadlocks Erweitertes E i Sperrverfahren S f h – Ziel: Verhinderung von Konversions-Deadlocks – U-Sperre (Update) für Lesen mit Änderungsabsicht – bei b i Änderung Ä d Konversion K i U → X, X andernfalls d f ll U → R (Downgrading) (D di ) angeforderter Modus R aktueller Modus R U X + - U + - - X - - - – u.a. in DB2 eingesetzt (SELECT FOR UPDATE) – das d Verfahren h ist i unsymmetrisch i h - was würde d eine i Symmetrie i bei b i U bewirken? b ik SS09, © Prof. Dr. E. Rahm 9 - 18 IDBS 2 Konsistenzstufen von Transaktionen U Ursprüngliche ü li h Definition D fi i i von Gray G et al. l (1976) Konsistenzstufe 0: –T Transaktionen kti halten h lt kurze k Schreibsperren S h ib auff den d Objekten, Obj kt die di sie i ändern Konsistenzstufe 1: – Transaktionen halten lange Schreibsperren auf den Objekten, die sie ändern Konsistenzstufe 2: – Transaktionen halten lange g Schreibsperren p auf den Objekten, j , die sie ändern, sowie kurze Lesesperren auf Objekten, die sie lesen Konsistenzstufe f 3: – Transaktionen halten lange Schreibsperren auf den Objekten, die sie ändern sowie lange Lesesperren auf Objekten, ändern, Objekten die sie lesen. lesen SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 19 Cursor Stability Kurze L K Lesesperren iinnerhalb h lb von Änderungstransaktionen Ä d ki (Konsistenzstufe (K i f 2) können zu Lost Updates führen Cursor Stability: (kurze) Lesesperre bleibt gesetzt bis Cursor auf nächsten Satz wechselt – Verlust cursorbasierter Änderungen g wird umgangen g g – Mitverantwortung des Programmierers zur Korrektheit der Synchronisation exec sql SELECT GEHALT INTO :gehalt FROM PERS WHERE PNR=:pnr; gehalt = gehalt + 1000; exec sql UPDATE PERS SET GEHALT = :gehalt h l WHERE PNR=:pnr; SS09, © Prof. Dr. E. Rahm exec sql exec sql DECLARE CURSOR C FOR SELECT GEHALT FROM PERS WHERE PNR=:pnr; OPEN C; exec sqll FETCH C INTO :gehalt; h l gehalt = gehalt + 1000; exec sql UPDATE PERS SET GEHALT = :gehalt WHERE CURRENT OF CURSOR; exec sql CLOSE C; 9 - 20 IDBS 2 Konsistenzebenen in SQL92 SQL92 vier SQL92: i K Konsistenzebenen i b (I (Isolation l i L Level) l) bbzgl. l S Synchronisation h i i – Konsistenzebenen sind durch die Anomalien bestimmt, die jeweils in Kauf genommen werden – Lost-Update muß generell vermieden werden – Default ist Serialisierbarkeit (serializable) Konsistenzebene Read Uncommitted Anomalie Non-Repeatable Dirty Read Read + + Phantome + Read Committed - + + p Read Repeatable - - + Serializable - - - SQL-Anweisung SQL Anweisung zum Setzen der Konsistenzebene: SET TRANSACTION <tx mode>, ISOLATION LEVEL <level> – tx mode: READ WRITE (Default) bzw. READ ONLY Beispiel: SET TRANSACTON READ ONLY READ UNCOMMITTED für Änderungstransaktionen unzulässig SS09, © Prof. Dr. E. Rahm 9 - 21 IDBS 2 Hierarchische Sperrverfahren S Sperrgranulat l bestimmt b i Parallelität/Aufwand P ll li ä /A f d – feines Granulat reduziert Sperrkonflikte p anzufordern und zu verwalten – jjedoch sind viele Sperren Hierarchische Verfahren erlauben Flexibilität bei Wahl des Granulates (’multigranularity locking’) – z.B. lange Transaktionen (Anfragen) auf Relationenebene und kurze Transaktionen auf Satzebene synchronisieren – kommerzielle DBS unterstützen zumeist mindestens 2-stufige Objekthierarchie, z.B. Segment-Seite bzw. Satztyp (Relation) - Satz (Tupel) Datenbank Dateien (Segmente) DB S1 S2 Satztypen (Relationen) Sätze (Tupel) SS09, © Prof. Dr. E. Rahm R21 S3 R22 T 2 11 9 - 22 IDBS 2 Hierarchische Sperrverfahren: Anwartschaftssperren p mit R- und X-Sperre werden alle Nachfolgerknoten implizit mitgesperrt => Einsparungen möglich alle Vorgängerknoten sind ebenfalls zu sperren, um Unverträglichkeiten zu vermeiden => Verwendung von Anwartschaftssperren ('intention locks') einfachste Lösung: Nutzung eines Sperrtyps (I-Sperre) I R X DB I + - - Si R - + - X - - - I R Rij X Unverträglichkeit von II und R R-Sperren Sperren zu restriktiv => zwei Arten von Anwartschaftssperren (IR und IX) SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 23 Anwartschaftssperren (2) A Anwartschaftssperren h f fü für L Leser und dS Schreiber h ib IR IX R X IR + + + - IX + + - - Si R + - + - X - - Rij DB IR - IX R X IR- Sperre (intent read), falls auf untergeordneten Objekten nur lesend zugegriffen wird, wird sonst IX-Sperre IX Sperre Weitere Verfeinerung sinnvoll, um den Fall zu unterstützen, wo alle Tupel eines Satztyps gelesen und nur einige davon geändert werden sollen – X-Sperre auf Satztyp sehr restriktiv – IX-auf Satztyp verlangt Sperren jedes Tupels => > neuer Typ von Anwartschaftssperre: RIX = R + IX – nur für zu ändernde Sätze muß (X-)Sperre auf Tupelebene angefordert werden SS09, © Prof. Dr. E. Rahm 9 - 24 IDBS 2 Anwartschaftssperren (3) V ll ä di Vollständiges Protokoll P k ll der d Anwartschaftssperren A h f – RIX gibt ein Leserecht auf den Knoten und seine Nachfolger. Weiterhin ist damit das Recht verbunden, auf Nachfolger-Knoten IX, U und X-Sperren anzufordern. – U gewährt äh t Leserecht L ht auff den d Knoten K t undd seine i Nachfolger N hf l - repräsentiert ä ti t die di Absicht, Ab i ht den d Knoten K t in i der d Zukunft zu verändern. Bei Änderung Konversion U → X, sonst U → R. IR IX R RIX U X IR + + + + - - IX + + - - - - R + - + - - - RIX + - - - - - U - - + - - - X - - - - - - – – – – – RIX U IR R X IX Sperranforderungen von der Wurzel zu den Blättern Bei R- oder IR-Anforderung müssen für alle Vorgänger IX- oder IR-Sperren erworben werden Bei X-, U-, RIX- o. IX-Anforderung müssen alle Vorgänger in RIX oder IX gehalten werden Sperrfreigaben von den Blättern zu der Wurzel Bei EOT sind alle Sperren freizugeben SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 25 Hierarchische Sperren: Beispiel DATABASE T1: IX T2: IR T3: R TABLE-2 TABLE-1 T1:IX TABLE-3 T1: IX T2: IR T1: IX T2: R T2: R T2 T2: T2:S T1:X R REC -A REC-A REC -B REC-B T1: X – – – – REC -C REC-C T1: R T2: R T3 wartet T2 hat Lesesperre auf der gesamten Tabelle 3 Lesesperren auf Satzebene in Tabelle 2 T1 hat Satzsperren in Tabelle 1 und 2 SS09, © Prof. Dr. E. Rahm 9 - 26 IDBS 2 Hierarchische Sperren: (De-) Escalation Lock Escalation – Falls Transaktion sehr viele Sperren benötigt -> dynamisches Umschalten auf gröberes öb Granulat G l – Bsp.: nach 1000 Satzsperren auf einer Tabelle -> 1 Tabellensperre erwerben – Schranke ist typischer Tuning-Parameter Manchmal kann Lock De-Escalation sinnvoll sein – Erwerbe grob-granulare Sperre (z.B. für Tabelle) – vermerke referenzierte Objekte auf fein-granularer Ebene (z.B. Sätze) – bei Konflikt(en): ( ) Umschalten auf feine Sperren p SS09, © Prof. Dr. E. Rahm 9 - 27 IDBS 2 Deadlock-Behandlung 5 Voraussetzungen für f Deadlock dl k – – – – – paralleler Objektzugriff exklusive Zugriffsanforderungen anfordernde Transaktion besitzt bereits Objekte/Sperren keine vorzeitige Freigabe von Objekten/Sperren (non-preemption) zyklische Wartebeziehung zwischen zwei oder mehr Transaktionen Beispiel T1 w(x) w(y) w(y) w (x) T2 Datenbanksysteme: D b k D Deadlock-Behandlung dl k B h dl erfordert f d R Rücksetzung k (R (Rollback) llb k) von Transaktionen SS09, © Prof. Dr. E. Rahm 9 - 28 IDBS 2 Lösungsmöglichkeiten zur Deadlock-Behandlung 1. Timeout-Verfahren – – – – Transaktion wird nach festgelegter Wartezeit auf Sperre zurückgesetzt problematische Bestimmung des Timeout-Wertes viele unnötige Rücksetzungen bei kleinem Timeout-Wert lange Blockaden bei großem Timeout-Wert 2. Deadlock-Verhütung (Prevention) – keine Laufzeitunterstützung zur Deadlock-Behandlung erforderlich – Bsp.: Preclaiming (in DBS i.a. nicht praktikabel) 3 Deadlock-Vermeidung 3. D dl k V id (Avoidance) (A id ) – potentielle Deadlocks werden durch entsprechende Maßnahmen vermieden – Laufzeitunterstützung La f eit nterstüt ng nötig 4. Deadlock-Erkennung (Detection) – Zyklensuche innerhalb eines Wartegraphen – gestattet minimale Anzahl von Rücksetzungen SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 29 Deadlock-Vermeidung Zuweisung einer eindeutigen Transaktionszeitmarke bei BOT im Konfliktfall darf nur ältere (bzw. jüngere) Transaktion warten => kein Zyklus möglich – in Verteilten DBS : Behandlung globaler Deadlocks ohne Kommunikation WAIT/DIE-Verfahren – anfordernde Transaktion wird zurückgesetzt, falls sie jünger als Sperrbesitzer ist – ältere äl T Transaktionen ki warten auff jüngere jü Tj fordert Sperre, Konflikt mit Ti T1 (ts=10) ält als l Tj } if ts t (T (T) t (T (T) i) < ts j) { Ti älter then WAIT (Ti) else ROLLBACK (Ti) { "Die" } T1 T2 SS09, © Prof. Dr. E. Rahm w(x) w(y) Wait T2 (ts=15) Wait Wait ? T3 (ts=25) w(y) w (x) 9 - 30 IDBS 2 Deadlock-Vermeidung (2) WOUND / WAIT-Verfahren: WAIT V f h – Sperrbesitzer wird zurückgesetzt, wenn er jünger als anfordernde Transaktion ist: jüngere Transaktionen warten auf ältere – preemptiver Ansatz Ti fordert Sperre Sperre, Konflikt mit T: Tj : if ts (Ti ) < ts (Tj ) { Ti älter als Tj } then ROLLBACK (Tj ){ "Wound" } else WAIT (Ti ) w(x) T1 w(y) w(y) T2 w(x) Verbesserung für Wait/Die und Wound/Wait: – statt BOT-Zeitmarke BOT Zeitmarke Zuweisung der Transaktionszeitmarke erst bei erstem Sperrkonflikt ("dynamische Zeitmarken") – erster Sperrkonflikt kann stets ohne Rücksetzung behandelt werden IDBS 2 SS09, © Prof. Dr. E. Rahm 9 - 31 Deadlock-Vermeidung: Wait Depth Limited "Wartetiefe" (Wait Depth): – eine nicht-blockierte Transaktion hat Wartetiefe 0 – blockierte Transaktion T hat Wartetiefe i+1,falls i+1 falls i die maximale Wartetiefe derjenigen Transaktionen ist, die T blockieren Wait Depth p Limited ((WDL): ) Begrenzung g g der maximalen Wartetiefe d – d=0: kein Warten (Immediate Restart) -> keine Deadlocks möglich – d=1: Warten erfolgt nur auf nicht-blockierte (laufende) Transaktionen -> keine Deadlocks möglich Problemfälle mit drohender Wartetiefe > 1 F ll 1: Fall 1 Ti1 Ti2 ... Tik SS09, © Prof. Dr. E. Rahm Fall 2: Tj1 Ti Tj2 ... Ti1 Tj Ti2 ... Tjk Tik 9 - 32 Tj1 Ti Tj2 ... Tj Tjk IDBS 2 Wait-Depth Limited (2) WDL1 V i WDL1-Variante "R "Running i P Priority" i i " Ti fordert Sperre Sperre, Konflikt mit Tj : if (Tj blockiert) then KILL (Tj ) {Bevorzung der laufenden Transaktion} else if (Tk wartet auf Ti ) {es existiert ein T k , die auf Ti wartet } then ROLLBACK(Ti ) else WAIT (Ti ) Ti Tj Tk T Ti Tj Ti Tj bei hohen Konfliktraten zeigte WDL in Simulationen besseres Leistungsverhalten als 2PL SS09, © Prof. Dr. E. Rahm IDBS 2 9 - 33 Deadlock-Erkennung Explizites E li i Führen Füh eines i W Wartegraphen h (wait-for ( i f graph) h) und dZ Zyklensuche kl h zur Erkennung von Verklemmungen – T1 -> T2: T1 wartet auf T2 wegen unverträglicher Sperranforderung – Wartegraphen enthält nur laufende Transaktionen (im Gegensatz zu Abhängigkeitsgraphen) T3 T5 O1 O2 O1 T2 O3 T4 O4 T1 Deadlock-Auflösung Deadlock Auflösung durch Zurücksetzen einer oder mehrerer am Zyklus beteiligter Transaktion (z.B. Verursacher oder ’billigste’ Transaktion) Zyklensuche entweder – bei jedem Sperrkonflikt bzw. – verzögert (z.B. über Timeout gesteuert) SS09, © Prof. Dr. E. Rahm 9 - 34 IDBS 2 Implementierungsaspekte: Datenstrukturen H h T b ll zur Realisierung Hash-Tabelle R li i der d Sperrtabelle S b ll – schneller Zugriff auf Objekt/Ressourcenkontrollblöcke für Lock-Aufrufe Transaktionstabelle Matrixorganisation Objekt /Transaktions Objekt-/Transaktionstabelle – schnelle Bestimmung freizugebender Sperren bei Commit Kurzzeitsperren ( Latch“)) für („Latch Zugriffe auf Sperrtabelle – Semaphor pro HashKlasse reduziert Konflikt-Gefahr SS09, © Prof. Dr. E. Rahm S Sperrtabelle t b ll (Ressourcentabelle) 9 - 35 IDBS 2 Sperrverfahren in Datenbanksystemen Sperrverfahren: Vermeidung von Anomalien, in dem – zu ändernde Objekte dem Zugriff aller anderen Transaktionen entzogen werden, – zu lesende Objekte vor Änderungen geschützt werden Standardverfahren: Hierarchisches Zweiphasen-Sperrprotokoll – mehrere Sperrgranulate p g – Verringerung der Anzahl der Sperranforderungen Probleme bei der Implementierung von Sperren – Zweiphasigkeit der Sperren führt häufig zu langen Wartezeiten (starke Serialisierung) – häufig benutzte Indexstrukturen können zu Engpässen werden – Eigenschaften des Schemas können "hot spots" erzeugen Optimierungen: – – – – Begnügung mit reduzierter Konsistenzstufe V kü Verkürzung dder S Sperrdauer, d iinsbesondere b d für fü Änderungen Ä d Nutzung mehrerer Objektversionen spezialisierte Sperren (Nutzung der Semantik von Änderungsoperationen) SS09, © Prof. Dr. E. Rahm 9 - 36 IDBS 2