KAPITEL 6 TRANSAKTIONSVERWALTUNG UND RECOVERY h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 1 Einordnung in die 5-Schichten-Architektur Mengenorientierte Schnittstelle Datensystem Transaktionsverwaltung Recovery Satzorientierte Schnittstelle Zugriffssystem Interne Satzschnittstelle Speichersystem Systempufferschnittstelle Pufferverwaltung Dateischnittstelle Betriebssystem Geräteschnittstelle Externspeicher h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 2 Transaktionsverwaltung und Recovery Inhalte des Kapitels • Transaktionsverwaltung – Transaktionsbegriff (ACID) Wiederholung DB (Bachelor) – Synchronisation und Sperren – Isolation Level in SQL – MVCC – Hierarchische Sperren – Isolation Level und Sperren in relationalen DBMS • Recovery – Fehlerklassen – Recovery-Strategien Lernziele • Verständnis für Synchronisationsbegriff • Kenntnis verschiedener Sperrverfahren • Kenntnis der Fehlerklassen und der unterschiedlichen Recovery-Strategien • Verständnis der Auswirkungen der Recovery-Anforderungen auf den Puffer-Manager h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 3 Wiederholung DB (Bachelor) Transaktionsbegriff Transaktionen • Eine Transaktion ist eine Folge von Operationen (Aktionen), welche die Datenbank von einem konsistenten Zustand in einen konsistenten, eventuell veränderten, Zustand überführt, wobei das ACID-Prinzip eingehalten werden muss. • Aspekte: – Semantische Integrität: Korrekter (konsistenter) DB-Zustand nach Ende der Transaktion – Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriff mehrerer Benutzer auf dieselben Daten vermeiden h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 4 Wiederholung DB (Bachelor) ACID-Eigenschaften • Atomicity (Atomarität): – Transaktion wird entweder ganz oder gar nicht ausgeführt Mechanismen zur Fehlerbehandlung notwendig. • Consistency (Konsistenz oder auch Integritätserhaltung): – Datenbank ist vor Beginn und nach Beendigung einer Transaktion jeweils in einem konsistenten Zustand Mechanismen zur Konsistenzsicherung und Fehlerbehandlung notwendig. • Isolation (Isolation): – Nutzer, der mit einer Datenbank arbeitet, sollte den Eindruck haben, dass er mit dieser Datenbank alleine arbeitet Mechanismen zur Mehrbenutzersynchronisation notwendig. • Durability (Dauerhaftigkeit / Persistenz): – nach erfolgreichem Abschluss einer Transaktion muss das Ergebnis dieser Transaktion „dauerhaft“ in der Datenbank gespeichert werden Mechanismen zur Fehlerbehandlung notwendig. h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 5 Wiederholung DB (Bachelor) Mehrbenutzerbetrieb • Probleme im (unkontrolliertem) Mehrbenutzerbetrieb – Verlorengegangenes Ändern (lost update) – Abhängigkeiten von nicht freigegebenen Daten (dirty read) – Inkonsistentes Lesen (non repeatable read) – Phantom-Problem h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 6 Wiederholung DB (Bachelor) • Verlorengegangene Änderungen (lost update) Zwei Programme („Überweisung“ und „Zinsgutschrift“) arbeiten gleichzeitig auf der Datenbank: Zeit Transaktion 1 1 2 3 4 5 6 7 8 9 10 11 Transaktion 2 read (A,a1) a1 := a1 - 50 read (A,a2) a2 = a2 * 1.03 write (A, a2) commit write (A,a1) read (B,b1) b1 := b1 + 50 write (B,b1) commit h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Zustand von A auf der Datenbank 1000 … … … 1030 … 950 … … … 950 Kapitel 6: Transaktionsverwaltung und Recovery 7 Wiederholung DB (Bachelor) Abhängigkeit von nicht freigegebenen Änderungen (dirty read) • Der neue Mitarbeiter B soll 10% mehr als Mitarbeiter A verdienen. • Mitarbeiter A erhält eine Gehaltserhöhung um 100 Euro. Diese Transaktion wird abgebrochen, da am Ende der Transaktion die Verletzung einer Integritätsbedingung festgestellt wird (z.B. Maximalgrenze für Gehalt einer bestimmten Tarifgruppe verletzt). Zeit Transaktion 1 1 2 3 4 5 6 7 9 Transaktion 2 read (A,a1) a1 := a1 + 100 write (A,a1) read (A,a2) b1 = a2 * 1.1 write (B, b1) commit abort A B 2500 2500 2600 … … … 2600 2500 2860 2860 2860 • Problem? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 8 Inkonsistente Analyse (non repeatable read) Wiederholung DB (Bachelor) • Die Summe der Gehälter aller Mitarbeiter wird ermittelt. • Parallel dazu werden die Gehälter der Mitarbeiter um jeweils 1.000 Euro erhöht. Zeit Transaktion 1 1 2 3 4 5 6 7 8 9 10 11 12 Transaktion 2 read (A, a1) summe = summe + a1 read (A, a2) a2 = a2 + 1000 write (A, a2) read (B, b2) b2 = b2 + 1000 write (B, b2) commit read (B, b1) summe = summe + b1 commit • Problem? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 9 Wiederholung DB (Bachelor) Phantom-Problem • Ein Bonus von 100.000 Euro soll gleichmäßig auf alle Mitarbeiter der Firma verteilt werden. • Parallel dazu wird ein neuer Mitarbeiter eingefügt. Zeit Transaktion 1 1 select count(*) into X from Mitarbeiter; 2 3 4 5 Transaktion 2 insert into Mitarbeiter values (Meier, 50.000, …); commit; update Mitarbeiter set Gehalt = Gehalt + 100.000/X; commit; • Problem? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 10 Wiederholung DB (Bachelor) Synchronisation von Transaktionen: Modell Ziel der Synchronisation: Vermeidung aller Mehrbenutzeranomalien Modell • Wenn Transaktionen seriell ausgeführt werden, dann bleibt die Konsistenz der DB erhalten. • Transaktion: BOT, Folge von READ- und WRITE-Anweisungen, EOT • Die Ablauffolge von Transaktionen mit ihren Operationen kann durch einen Schedule beschrieben werden (BOT ist implizit, EOT wird durch ci (commit) oder ai (abort) dargestellt): – Beispiel: r1(x), r2(x), r3(y), w1(x), w3(y), r1(y), c1, r3(x), w2(x), a2, w3(x), c3, ... – Beispiel eines seriellen Schedules : r1(x), w1(x), r1(y), c1, r3(y), w3(y), r3(x), c3, r2(x), w2(x), c2,... h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 11 Wiederholung DB (Bachelor) Korrektheitskriterium der Synchronisation: Serialisierbarkeit – 1(2) • Ziel der Synchronisation: logischer Einbenutzerbetrieb, d.h. Vermeidung aller Mehrbenutzeranomalien • Gleichbedeutend mit formalem Korrektheitskriterium der Serialisierbarkeit: – Die parallele Ausführung einer Menge von n Transaktionen ist serialisierbar, wenn es eine serielle Ausführung derselben Transaktionen gibt, die den gleichen DB-Zustand und die gleichen Ausgabewerte wie die ursprüngliche Ausführung erzielt. • Hintergrund: – serielle Ablaufpläne sind korrekt – jeder Ablaufplan, der denselben Effekt wie ein serieller erzielt, ist akzeptierbar h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 12 Wiederholung DB (Bachelor) Korrektheitskriterium der Synchronisation: Serialisierbarkeit – 2(2) Transaktion 1 Transaktion 2 T1 - 1 T1 - 2 T1 - 3 Transaktion 3 T2 - 1 T2 - 2 T2 - 3 T3 - 1 T3 - 2 (Quasi-) parallele Ausführung … T1 - 1 T2 - 1 T3 - 1 T1 - 2 T1 - 3 T2 - 2 T2 - 3 T3 - 2 h_da Prof. Dr. Uta Störl Die parallele Ausführung einer Menge von n Transaktionen ist serialisierbar, wenn es eine serielle Ausführung derselben Transaktionen gibt, die den gleichen DB-Zustand und die gleichen Ausgabewerte wie die ursprüngliche Ausführung erzielt. Architektur von DBMS WS 2015/16 T2 - 1 T2 - 2 T2 - 3 T3 - 1 T3 - 2 T1 - 1 T1 - 2 T1 - 3 Kapitel 6: Transaktionsverwaltung und Recovery 13 Wiederholung DB (Bachelor) Nachweis der Serialisierbarkeit – 1(2) • Ansatz: Führen von zeitlichen Abhängigkeiten zwischen Transaktionen in einem Abhängigkeitsgraphen (Konfliktgraphen) • Abhängigkeit (Konflikt) besteht, wenn zwei Transaktionen auf dasselbe Objekt mit nicht reihenfolgeunabhängigen Operationen zugreifen. • Konfliktarten: – Schreib-/Lese-Konflikt w(x) r(x) – Lese-/Schreib-Konflikt r(x) w(x) – Schreib-/Schreib-Konflikt w(x) w(x) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 14 Wiederholung DB (Bachelor) Nachweis der Serialisierbarkeit – 2(2) r (x) w (y) T1 r (y) T2 w (x) ? T2 w (x) T3 T1 T3 • Serialisierbarkeit liegt vor, wenn der Abhängigkeitsgraph keine Zyklen enthält • Abhängigkeitsgraph beschreibt partielle Ordnung zwischen Transaktionen, die sich zu einer vollständigen erweitern lässt (Serialisierungsreihenfolge) im Beispiel: T3 → T1 → T2 h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 15 Wiederholung DB (Bachelor) Sperren • Berechnung des Abhängigkeitsgraphen ist für den Korrektheitsnachweis von Synchronisationsverfahren interessant, aber weniger für den direkten Einsatz im DBMS geeignet (Ausnahme: optimistische Sperrverfahren) Praktische Umsetzung in DBMS: Sperren – Zwei Arten von Sperren • rl(x) Lesesperre (read lock bzw. shared lock) auf Objekt x • wl(x) Schreibsperre (write lock bzw. exclusive lock) – Kompatibilitätsmatrix h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 16 Wiederholung DB (Bachelor) Zwei-Phasen-Sperrprotokolle (2 Phase Locking, 2PL) Einhaltung folgender Regeln gewährleistet Serialisierbarkeit: 1. Vor jedem Objektzugriff muss Sperre mit ausreichendem Modus angefordert werden – Schreibzugriff w(x) nur nach Setzen einer Schreibsperre wl(x) möglich – Lesezugriffe r(x) nur nach rl(x) oder wl(x) erlaubt 2. Gesetzte Sperren anderer Transaktionen sind zu beachten – Nur Lesesperren sind „verträglich“ 3. Zweiphasigkeit: – Anfordern von Sperren erfolgt in einer Wachstumsphase – Freigabe der Sperren in Schrumpfungsphase – Sperrfreigabe kann erst beginnen, wenn alle Sperren gehalten werden 4. Spätestens bei EOT sind alle Sperren freizugeben h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 17 Wiederholung DB (Bachelor) Zwei-Phasen-Sperrprotokoll (2PL) • 2PL garantiert Serialisierbarkeit in einer fehlerfreien Umgebung • aber: Fehler während Schrumpfungsphase können zu dirty read 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. #Sperren 2PL BOT h_da Prof. Dr. Uta Störl Wachstum Architektur von DBMS WS 2015/16 Schrumpfung EOT Zeit Kapitel 6: Transaktionsverwaltung und Recovery 18 Wiederholung DB (Bachelor) Striktes Zwei-Phasen-Sperrprotokoll (S2PL) • alle Sperren werden bis EOT gehalten damit ist kaskadierendes Rücksetzen ausgeschlossen • Nachteil? #Sperren S2PL EOT BOT h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Zeit Kapitel 6: Transaktionsverwaltung und Recovery 19 Wiederholung DB (Bachelor) Verklemmungen (deadlocks) T1 T2 Bemerkung wl(x) wl(y) wl(y) wl(x) T1 muss auf T2 warten T2 muss auf T1 warten deadlock DBMS muss deadlock erkennen und eine der beiden Transaktionen abrechen – verschiedene Strategien: – ältere Transaktion oder jüngere Transaktion – Analyse des Wartegraphens (minimale Auswirkungen berechnen) – Timeout-Verfahren – ... h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 20 Wiederholung DB (Bachelor) Konservative Sperrprotokolle (C2PL, C2PL) • Alternative Variante: Preclaiming in Verbindung mit dem strikten 2PL oder S2PL C2PL bzw. CS2PL • Problem? #Sperren CS2PL BOT h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 EOT Zeit Kapitel 6: Transaktionsverwaltung und Recovery 21 Wiederholung DB (Bachelor) Phantom-Problem: Sperren als Lösung? • Ein Bonus von 100.000 Euro soll gleichmäßig auf alle Mitarbeiter der Firma verteilt werden. • Parallel dazu wird ein neuer Mitarbeiter eingefügt. Zeit 1 T1 select count(*) into X from Mitarbeiter; 2 3 4 5 T2 insert into Mitarbeiter values (Meier, 50.000, …); commit; update Mitarbeiter set Gehalt = Gehalt + 100.000/X; commit; • Sperren? • Lösung? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 22 Wiederholung DB (Bachelor) Phantom-Problem: Lösung • Zusätzlich zu den Tupeln muss auch der Zugriffweg, auf dem man zu den Objekten gelangt ist, gesperrt werden. • Beispiel: – select count(*) into X from Mitarbeiter; alle Mitarbeiter (bzw. deren Primärschlüssel-Index) müssen mit einer RL-Sperre belegt werden beim Einfügen eines neuen Mitarbeiter wird dies erkannt und T2 muss warten • Sperre kann ggf. auch selektiver sein – z.B.: – select count(*) into X from Mitarbeiter where PNr between 1000 and 2000 nur die Mitarbeiter mit der entsprechenden PNr müssen gesperrt werden (z.B. Index-Bereich von PNr[1000,2000]) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 23 Wiederholung DB (Bachelor) Isolation Level in SQL set transaction [ { read only | read write } , ] [ isolation level { read uncommitted | read committed | repeatable read | serializable } ] • Beispiel (erstes Statement innerhalb der Transaktion) set transaction read only, isolation level read committed; select ...; commit; h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 24 Wiederholung DB (Bachelor) Bedeutung der Isolationsstufen • read uncommitted – schwächste Stufe: Zugriff auf nicht geschriebene Daten, nur für read only Transaktionen (sonst wäre lost update möglich!) – statistische und ähnliche Transaktionen (ungefährer Überblick, nicht korrekte Werte) – keine Sperren effizient ausführbar, keine anderen Transaktionen werden behindert • read committed – nur Lesen endgültig geschriebener Werte, aber nonrepeatable read möglich • repeatable read – kein nonrepeatable read, aber Phantomproblem kann auftreten • serializable – garantierte Serialisierbarkeit h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 25 Wiederholung DB (Bachelor) Auswirkung der Isolationsstufen Konsistenzebene Anomalie dirty read non repeatable read Phantome read uncommitted + + + read committed - + + repeatable read - - + serializable - - - h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 26 Transaktionsverwaltung und Recovery • Transaktionsverwaltung Transaktionsbegriff Synchronisation und Sperren Isolation Level in SQL – MVCC – Hierarchische Sperren – Isolation Level und Sperren in relationalen DBMS • Recovery – Fehlerklassen – Recovery-Strategien h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 27 MVCC: Motivation • Vorbetrachtung – T1 liest x ( r1(x) c1 ) – T2 schreibt x ( w2 (x) c2 ) – T1 und T2 werden „gleichzeitig“ gestartet – Was kann passieren? • Komplexeres Beispiel: r1(x) w1(x) r2(x) w2(y) r1(y) w1(z) c1 c2 nicht konfliktserialisierbar … … aber: wenn r1(y) eine alte Version von y lesen könnte … äquivalent zu r1(x) w1(x) r1(y) r2(x) w2(y) w1(z) c1 c2 konfliktserialisierbar! h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 28 MVCC: Idee Multiversionen-Synchronisation (Multiversion Concurrency Control, MVCC) – Prinzip: jede Änderungsoperation w erzeugt eine neue Version des geänderten Datenbankobjekts – Leseoperationen können nun auf passender („alter“) Version lesen – realisiert z.B. in Oracle, PostgreSQL, MS SQL Server (seit V 2005), IBM DB2 (seit V 9.7 2009), diversen analytischen DBMS und verschiedenen NoSQL-DBMS h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 29 MVCC: Vorteile • Vorteile – MVCC führt zur Entkopplung von Lese- und Änderungsoperationen – Eine Lesetransaktion hat eine Sicht auf die Datenbank, als ob alle Daten am Beginn der Transaktion atomar gelesen werden – Keine Synchronisation gegen Lesetransaktionen notwendig Reduktion der Konfliktwahrscheinlichkeit • Beispiel: T1 T2 BOT w(x0 → x1) w(y0 → y1) commit TR BOT r(y0) BOT w(x1 → x2) commit ≡ TR T1 T2 h_da Prof. Dr. Uta Störl r(x0) Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 30 MVCC: Realisierung • Änderungsoperationen müssen wie bisher synchronisiert werden • Für jede Transaktion muss die (korrekte) zu lesende Version des Objekts bestimmt werden: – globaler Transaktionszähler (transaction number count, TNC) – für jede Transaktion: BOT-Zeitstempel bts (= aktueller TNC) und commitZeitstempel (dann gültiger TNC + 1) – Schreibzeitstempel wts für jede Version eines geänderten Objekts (wird beim commit auf commit-Zeitstempel der Transaktion gesetzt) – Lesetransaktion TR hat Zugriff auf die jüngste Version von x für die gilt: wts (x) < bts (TR) also die letztgültige Version des Objektes vor Beginn der Transaktion • Effiziente Versionenverwaltung notwendig – z.B. Verwaltung der Versionen der Objekte in einem Ringpuffer – garbage collection (wts(xi) < wts(xj) < bts_min xi kann gelöscht werden) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 31 Transaktionsverwaltung und Recovery • Transaktionsverwaltung Transaktionsbegriff Synchronisation und Sperren Isolation Level in SQL MVCC – Hierarchische Sperren – Isolation Level und Sperren in relationalen DBMS • Recovery – Fehlerklassen – Recovery-Strategien h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 32 Hierarchisches Sperren: Motivation Motivation • Welche Probleme können bei sehr feingranularen Sperren und sehr vielen gleichzeitig aktiven Transaktionen auftreten? • Sperrgranulate in relationalen DBMS: h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 33 Hierarchisches Sperren: Prinzip Hierarchisches Sperren (multi granularity locking, MGL) • Sperren pflanzen sich nach unten (in Richtung der Blätter) fort • Sperren dürfen nicht von oben (von der Wurzel her) überschrieben werden • Zusätzlich: intentionale Sperren (engl. intentional locks) - Warnungen vor Sperren, die sich in der Hierarchie weiter unten befinden – irl (intentionale Lesesperre) und – iwl (intentionale Schreibsperre) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 34 Hierarchisches Sperren: Ablauf 1. Sperren werden auf einem Pfad in der Reihenfolge von der Wurzel zum Zielobjekt gesetzt 2. Datenobjekt, auf dem gearbeitet werden soll, wird gesperrt: Schreiboder Lesesperre (dabei Sperrenverträglichkeitsmatrix beachten!) 3. Alle anderen Knoten auf dem Pfad bekommen intentionale Sperren 4. Sperren können verschärft werden, das heißt ein rl kann zum wl werden, ein irl zum rl und ein irl zum iwl, falls keine Konflikte zu anderen Transaktionen vorhanden sind. 5. Freigabe erfolgt in umgekehrter Reihenfolge Kompatibilitätsmatrix h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 35 Hierarchisches Sperren: Beispiel – 1(2) T1: Durchschnittspreis aller Produkte T2: Update MinMenge für Produkt „New York Espresso“ 1 1 = 2 explizite Sperren für T1 h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Quelle: Saake/Heuer/Sattler:2005 Kapitel 6: Transaktionsverwaltung und Recovery 36 Hierarchisches Sperren: Beispiel – 2(2) T1: Durchschnittspreis aller Produkte T2: Update MinMenge für Produkt „New York Espresso“ 1 Produkt 1 n n = 2n + 2 explizite Sperren für T1 (mit n = Anzahl Tupel in Relation Produkt) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Quelle: Saake/Heuer/Sattler:2005 Kapitel 6: Transaktionsverwaltung und Recovery 37 Hierarchische Sperren: (De-)Escalation Lock Escalation • Falls Transaktion sehr viele Sperren benötigt dynamisches Umschalten auf gröberes Granulat – Beispiel: nach 1000 Satzsperren auf einer Tabelle 1 Tabellensperre erwerben – Schranke ist typischer Tuning-Parameter Manchmal kann auch 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 Anmerkung: In DBMS i.a. auch explizites Sperren von Tabellen durch Benutzer / Anwendungsprogramm möglich h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 38 Transaktionsverwaltung und Recovery • Transaktionsverwaltung Transaktionsbegriff Synchronisation und Sperren Isolation Level in SQL MVCC Hierarchische Sperren – Isolation Level und Sperren in relationalen DBMS • Recovery – Fehlerklassen – Recovery-Strategien h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 39 Isolation Level und Sperren in Oracle • MVCC Unterstützung der IL read committed und serializable SQL Oracle set transaction set transaction [ { read only | read write } ] [ { read only | read write } ] [ isolation level [ isolation level { read uncommitted | { read committed | read committed | repeatable read | serializable } ] serializable } ] • Isolationsebenen für eine Menge von Transaktionen alter session set isolation_level <isolation_level> • Hierarchische Sperren – Tabellen und Zeilen – Für Tabellen explizites Sperren möglich (5 verschiedene Lock-Modi) lock table <table_name> <lock_mode> h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 40 Isolation Level und Sperren in IBM DB2 • Unterstützung aller SQL-Isolationsebenen (leider mit anderen Namen) SQL DB2 set transaction change isolation to [ { read only | read write } ] [ isolation level { read uncommitted | [ { UR Uncommitted Read read committed | CS Cursor Stability repeatable read | RS Read Stability serializable } ] RR } ] Repeatable Read • Seit 9.7 Standardverhalten im Isolation Level CS (Cursor Stability) MVCC: currently committed semantics (implementiert mit Hilfe des Transaktionslogs) – kann deaktiviert werden: update db cfg using CUR_COMMIT DISABLED • Hierarchische Sperren – Tabellen und Zeilen – Für Tabellen explizites Sperren möglich (2 verschiedene Lock-Modi) lock table <table-name > in { SHARE MODE | EXCLUSIVE MODE } h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 41 Weitere Isolationsverfahren • Nicht-sperrende Verfahren – Zeitstempelverfahren – Optimistische Sperrverfahren • Hier nicht betrachtet: Sperren in Indexstrukturen • Alternative Konsistenzmodelle (BASE) siehe Kapitel Verteilte Datenbankarchitekturen h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 42 Zusammenfassung Transaktionsverwaltung • Transaktionsbegriff • Notwendigkeit der Synchronisation • Serialisierbarkeitstheorie • Sperrmodelle • Transaktionen in SQL h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 43 Transaktionsverwaltung und Recovery • Transaktionsverwaltung Transaktionsbegriff Synchronisation und Sperren Isolation Level in SQL MVCC Hierarchische Sperren Isolation Level und Sperren in relationalen DBMS • Recovery – Fehlerklassen – Recovery-Strategien h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 44 Fehlerklassifikation Fehlerklassifikation 1. Transaktionsfehler 2. Systemfehler 3. Externspeicherfehler unterschiedliche Recovery-Maßnahmen je nach Fehlerart h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 45 Transaction-Recovery: Beispiel • Szenario: T1 B B‘ commit A A‘ T2 C C‘ abort Zeitachse • Transaction-Recovery – C‘ muss wieder auf C zurückgesetzt werden (UNDO). h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 46 Transaktionsfehler ( Transaction-Recovery) • Typische Transaktionsfehler – Fehler im Anwendungsprogramm – Transaktionsabbruch explizit durch den Benutzer – Transaktionsabbruch durch das System • Charakteristika – Abbruch einer einzelnen(!) Transaktion – kein Einfluss auf den Rest des Systems auch: lokaler Fehler • Behandlung (Transaction-Recovery) – „Isoliertes“ Zurücksetzen aller Änderungen der abgebrochenen Transaktionen = lokales UNDO bzw. R1-Recovery – Wichtig: von dieser Transaktion veränderte Blöcke können sich sowohl im Datenbank-Puffer als auch bereits in der materialisierten Datenbank (also auf dem Externspeicher) befinden! h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 47 Protokollierung von Änderungsinformation • Durchgeführte Änderungen werden von den meisten DBMS in einem Log bzw. Log-Dateien protokolliert. • Ein Log besteht aus Einträgen der Form: { LSN, TA, PageID, Undo, Redo PrevLSN } – LSN: – – – – – Log-Sequence Number = eindeutige und aufsteigende Nummerierung der Log-Einträge TA: Transaktionskennung (Nummer) PageID: Seitennummer Undo: UNDO-Information Redo: REDO-Information PrevLSN: LSN des letzten Eintrags der selben Transaktion • Außerdem wird Beginn und Ende einer Transaktion vermerkt (BOT, commit, abort) h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 48 Log-Einträge: Beispiel LSN TA PageID Undo Redo PrevLSN #1 T1 BOT #2 T1 27 #3 T2 BOT #4 T2 40 [. C .] [. C‘.] #3 #5 T1 70 [. B .] [. B‘.] #2 #6 T1 commit 0 [. A .] [. A‘.] #1 0 #5 • Physische vs. logische Protokollierung h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 49 Transaction-Recovery: Beispiel (Forts.) Transaction-Recovery • alle Log-Einträge von T2 werden in umgekehrter Reihenfolge ihrer ursprünglichen Ausführung gelesen und rückgängig gemacht, d.h. die UndoInformation (alter Zustand der Seite) in die Datenbank eingebracht. LSN TA PageID #1 T1 BOT #2 T1 27 #3 T2 BOT #4 T2 40 [. C .] [. C‘.] #3 #5 T1 70 [. B .] [. B‘.] #2 #6 T1 commit #5 #7 T2 abort #4 h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Undo Redo PrevLSN 0 [. A .] [. A‘.] #1 0 Kapitel 6: Transaktionsverwaltung und Recovery 50 Systemfehler ( Crash Recovery) • Typische Systemfehler – DBMS-Fehler – Betriebssystemfehler – Hardware-Fehler • Charakteristika – die im DB-Puffer befindlichen Daten sind zerstört – die auf dem Externspeicher befindlichen Daten (also die „materialisierte“ Datenbank) ist jedoch unversehrt! • Behandlung (Crash Recovery) – Nachvollziehen der von abgeschlossenen Transaktionen nicht in die DB eingebrachten Änderungen = partielles REDO bzw. R2-Recovery – Zurücksetzen der von nicht beendeten Transaktionen in die DB eingebrachten Änderungen = globales UNDO bzw. R3-Recovery h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 51 Crash-Recovery: Beispiel – 1(2) Szenario: Systemfehler T1 B B‘ commit A A‘ C C‘ T2 T3 D D‘ E E‘ commit Zeitachse h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 52 Crash-Recovery: Beispiel – 2(2) Situation im Puffer bzw. der Datenbank • • • T1 (committed) T2 (offen) T3 (committed) : A‘ wurde bereits zurück geschrieben; B‘ nicht(!) : C‘ wurde bereits zurück geschrieben(!), D‘ noch nicht : E‘ wurde bereits zurück geschrieben DB-Puffer Datenbank C‘ A‘ D ... B h_da Prof. Dr. Uta Störl E‘ Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 53 Crash-Recovery 3 Phasen 1. Analyse Das Log wird von Anfang bis zum Ende gelesen und ermittelt, welche Transaktionen erfolgreich beendet (committed) wurden und welche zum Fehlerzeitpunkt offen waren. 2. Wiederholung der Historie (REDO) Es werden alle(!) protokollierten Änderungen in der Reihenfolge ihrer Ausführung in die Datenbank eingebracht. 3. UNDO Die Änderungsoperationen der zum Fehlerzeitpunkt offenen Transaktionen werden rückgängig gemacht. h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 54 Crash-Recovery: Phase 1 Analyse • Ermittlung aller abgeschlossenen Transaktionen (T1 und T3 ) und offenen Transaktionen (T2) LSN TA PageID #1 T1 BOT #2 T1 27 #3 T2 BOT #4 T2 40 [. C .] [. C‘.] #3 #5 T3 44 [. E .] [. E‘.] 0 #6 T3 commit #7 T1 70 #8 T1 commit h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Undo Redo PrevLSN 0 [. A .] [. A‘.] #1 0 #5 [. B .] [. B‘.] #2 #7 Kapitel 6: Transaktionsverwaltung und Recovery 55 Crash-Recovery: Phase 2 und 3 Phase 2 Wiederholung der Historie (REDO) C‘ A‘ C‘ A‘ D B E‘ Phase 3 UNDO der offenen Transaktionen C A‘ D B‘ E‘ D B‘ E‘ Datenbankzustand nach dem Systemfehler h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 56 Write-Ahead-Log-Prinzip (WAL) • Wir haben in den Beispielen vorausgesetzt, dass die für die Recovery benötigte Information im Log steht (trotz Verlust der Hauptspeicherinformation) – ist das gewährleistet? Bevor eine Transaktion festgeschrieben (committed) wird, müssen alle zu ihr gehörenden Log-Einträge ausgeschrieben werden (für das REDO im Fehlerfall). Bevor eine veränderte Seite in die Datenbank eingebracht wird, müssen alle diese Seite betreffenden Log-Einträge ausgeschrieben werden (für das UNDO im Fehlerfall). • Diese beiden Forderungen werden als Write-Ahead-Log-Prinzip (WAL) bezeichnet. • Anmerkung: Natürlich werden dabei nicht einzelne Log-Einträge, sondern alle Log-Einträg bis zum betroffenen sequentiell ausgeschrieben. h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 57 Checkpoints • Problem: wenn auf der Datenbank viele Operationen ausgeführt wurden, ist das im Fehlerfall zu verarbeitende Log sehr umfangreich … Optimierung: Schreiben von Checkpoints (Sicherungspunkte): – Bei einem Checkpoint alle veränderten Datenbankseiten aus dem Puffer in die Datenbank schreiben und dies im Log vermerkt: { #5, CKPT } Log muss im Fehlerfall nur ab dem letzten Checkpoint analysiert werden. • Checkpoint-Häufigkeit kann konfiguriert werden und ist kritisch für die Performance des Systems • Häufiges Schreiben von Checkpoints: – reduziert die Zeit für eine Crash-Recovery, aber – kann Performance im laufenden Betrieb beeinträchtigen! h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 58 Checkpoints in Oracle – 1(2) • Parameter zur Beeinflussung der REDO-Dauer: • FAST_START_MTTR_TARGET spezifiziert Erwartungswert für mittlere Recovery-Zeit (mean time to recover) • früher andere Parameter (inzwischen deprecated): – FAST_START_IO_TARGET spezifiziert maximale Anzahl DB-Seiten (Obergrenze) die im Recovery-Fall angewendet werden müssen oder – LOG_CHECKPOINT_TIMEOUT Zeitabstand in s zwischen aktuellem Log-Ende und letztem Checkpoint oder – LOG_CHECKPOINT_INTERVAL max. Anzahl von Log-Einträgen seit letztem Checkpoint h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 59 Checkpoints in Oracle – 2(2) • Messergebnisse – OLTP (Online Transaction Processing), d.h. viele parallele, relativ kurze Transaktionen – 200.000 Puffer-Seiten a 4 Kb FAST_START_IO_TARGET Durchsatz (Transaktionen pro Minute) Crash-Recovery-Zeit disabled 805 4 min 34 s 30.000 804 1 min 20 s 20.000 798 1 min 10 s 10.000 798 49 s 1.000 797 21 s Einstellung der Parameter muss anwendungsspezifisch (abhängig von Transaktionsprofil und Anforderungen an Recovery) gewählt werden. Quelle: T. Lahiri et al.: Fast-Start: Quick Fault Recovery in Oracle. Proc. ACM SIGMOD Conf., May 2001 h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 60 Externspeicherfehler ( Media-Recovery) • Typische Externspeicherfehler – Hardware-Fehler: „Head-Crashes“, Controller-Fehler etc. – Naturgewalten wie Feuer oder Erdbeben – Viren • Charakteristika – Die Daten der materialisierten Datenbank sind zerstört oder unbrauchbar • Behandlung (Media-Recovery) – Die Datenbank muss mit Hilfe einer Sicherungskopie (Backup) wiederhergestellt werden. – Danach muss der letzte transaktionskonsistente Zustand wiederhergestellt werden, d.h. es alle seit der Erstellung des Backup erfolgreich beendeten Transaktionen nachvollzogen werden. Konsequenz: Die Log-Dateien müssen auf einem anderen Medium gesichert werden (z.B. anderer Rechner, Magnetband o.ä.)! h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 61 Media-Recovery • Wichtige Unterscheidung: In welchem Zustand ist die Datenbank bei der Sicherung? • Variante 1: Es sind keine Transaktionen auf der Datenbank während der Sicherung aktiv = Offline-Backup (consistent backup) – Vorteil: Datenbankkopie ist in transaktionskonsistentem Zustand! – Nachteil: Während der Sicherung darf keine (Schreib-)Transaktion auf der Datenbank aktiv sein! (vielfach nicht akzeptabel, z.B. 24h Betrieb im Internet bzw. bei weltweit agierenden Unternehmen) • Variante 2: Es können Transaktionen auf der Datenbank während der Sicherung aktiv sein = Online-Backup (inconsistent backup) – Vorteil: Datenbankbetrieb wird nicht (oder kaum) beeinträchtigt – Nachteil: Datenbankkopie ist nicht in transaktionskonsistentem Zustand – Wiederherstellung (Recovery) aufwändiger • Kommerzielle DBMS unterstützen heute meist(!) beide Varianten. h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 62 Media-Recovery: Grundprinzip – 1(2) • Gesicherte Daten (Offline-Backup): OfflineBackup x-1 Log-Datei n-4 Log-Datei n-3 OfflineBackup x Log-Datei n-2 Log-Datei n-1 Log-Datei n • Media-Recovery – Letzte Sicherungskopie der Datenbank wird eingespielt – Nach der letzten Sicherung erstellte Log-Dateien werden analysiert und die Änderungen erfolgreich beendeter Transaktionen nachvollzogen (REDO) (Bemerkung: aus Performance-Gründen kann auch eine Vorgehensweise analog zur Crash-Recovery gewählt werden: komplette Historie wiederholen und danach Undo der Änderungen offener Transaktionen.) OfflineBackup x Log-Datei n-2 Log-Datei n-1 Zeit Log-Datei n Zeit h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 63 Media-Recovery: Grundprinzip – 2(2) • Gesicherte Daten (Online-Backup): OnlineBackup x-1 Log-Datei n-4 Log-Datei n-3 OnlineBackup x Log-Datei n-2 Log-Datei n-1 Log-Datei n • Media-Recovery – Letzte Sicherungskopie der Datenbank wird eingespielt – Es müssen auch Log-Dateien vor dem letzten Backup betrachtet werden, da die Sicherungskopie u.U. Änderungen von später nicht erfolgreich beendeten Transaktionen enthält. Die Undo-Information dieser Transaktionen wird benötigt. Recovery zeitaufwändiger und Administration (Aufbewahren der LogDateien) aufwändiger Log-Datei n-4 Log-Datei n-3 OnlineBackup x Log-Datei n-2 Log-Datei n-1 Zeit Log-Datei n Zeit h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 64 Inkrementelles Backup • Bei großen Datenbanken ist eine Komplettsicherung sehr(!) zeitaufwändig Sicherung der veränderten Datenbankseiten = inkrementelles Backup • Bei der Wiederherstellung wird – das letzte Full Backup und alle danach erstellten inkrementellen Backups eingespielt und danach – nur die Log-Dateien (Annahme: offline Backup) nach dem letzten inkrementellen Backup angewandt: h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 65 Weitere Backup-Varianten Die bereits aufgeführten Backup-Varianten • Online vs. Offline Backup • Komplettes Backup vs. inkrementelles Backup können orthogonal mit weiteren Backup-Varianten kombiniert werden: • Partielles Backup (Backup von Teilen der Datenbank z.B. Tablespaces) • Paralleles Backup h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 66 Point-In-Time-Recovery Szenario: Bestimmte Datensätze wurden versehentlich durch einen Anwender oder Administrator gelöscht (und die Transaktion committed!). • Wie kann dieses Löschen (oder falsches Verändern o.ä.) rückgängig gemacht werden? – Ansatz 1: Undo-Information der entsprechenden Transaktion anwenden. Probleme? – Ansatz 2: Wiederherstellung der Datenbank bis zu einem definierten Zeitpunkt vor dem Fehler („Simulation“ eines Systemfehlers zu diesem Zeitpunkt) = Point-In-Time-Recovery Probleme? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 67 Backup und Recovery • Backup- und Recovery-Kommandos in Datenbanksystemen sind nicht standardisiert. • Es gibt eine Vielzahl von Parameter (Ausgabekanäle, Parameter für Größe von Log-Dateien und Häufigkeit der Sicherung, CheckpointParameter etc.) • Die Wahl dieser Parameter und der Sicherungsstrategie hat erhebliche(!) Auswirkungen sowohl auf die Performance im laufenden Betrieb als auch auf die Wiederherstellungszeit im Fehlerfall. • Wichtig: Spiegelung bzw. RAID-Systeme sind kein ausreichender Ersatz für regelmäßige Backups! Warum? h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 68 Backup und Recovery in Oracle Log-Dateien (Oracle: Redo-Log-Dateien) • mehrere Redo-Log-Gruppen die zirkular beschrieben werden – Parameter MAXLOGFILES (Anzahl Gruppen) und MAXLOGMEMBERS (Anzahl Log-Dateien pro Gruppe) • Archivierung möglich (notwendig für Media Recovery) • Wiederverwendung (überschreiben), sobald die Inhalte nicht mehr für Crash Recovery gebraucht werden und sobald Log-Datei archiviert Backup • komplett und inkrementell (full vs. incremental) • offline und online (consistent vs. inconsistent) • partielles Backup (einzelner Tablespace oder einzelne Datei) Recovery • komplette oder partielle Recovery (analog zum Backup) • Point-In-Time-Recovery (incomplete recovery) für ganze Datenbank oder einzelnen Tablespace h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 69 Backup und Recovery in IBM DB2 Log-Dateien • Log-Dateien werden entweder zirkular überschrieben oder sequentiell erzeugt und gefüllt: logarchmeth1 = off [logretain] – Parameter zum Archivieren der Log-Dateien: userexit, disk, tsm, vendor Backup • komplett und inkrementell • offline und online • partielles Backup (Tablespace) Recovery • Wiedereinspielen eines Backup (restore) • Anwenden der Log-Dateien (rollforward) bis zu einem bestimmten Zeitpunkt ( Point-In-Time-Recovery) oder bis zum Ende h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 70 Zusammenfassung Recovery • Fehlerklassen • Recovery-Strategien • Protokollierung und Sicherungspunkte (Checkpoints) • Backup-Varianten h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 71 Architektur von Datenbanksystemen Architektur von Datenbanksystemen Verwaltung des Hintergrundspeichers Dateiorganisation und Zugriffsstrukturen Basisalgorithmen für Datenbank-Operationen Anfrageoptimierung Transaktionsverwaltung und Recovery • Verteilte Datenbankarchitekturen h_da Prof. Dr. Uta Störl Architektur von DBMS WS 2015/16 Kapitel 6: Transaktionsverwaltung und Recovery 72