Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7 Zugriffsschicht: Zuverlässigkeit.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7 Zugriffsschicht: Zuverlässigkeit."—  Präsentation transkript:

1 Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7 Zugriffsschicht: Zuverlässigkeit

2 2 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Gegenstand des Kapitels Mengenorientiertes Datenmodell Datenmodell Dateien Dateiverwaltung Geräteschnittstelle Anfragebearbeitung Satzorientiertes Datenmodell Speicherstruktur Schneller Transport zwischen Haupt- und Hintergrundspeicher Hauptspeicherseiten u. Segmente Segment- u. Pufferverwaltung Bevorratung von Daten im Hauptspeicher (rechtzeitige Bereitstellung vor Benutzung) Transparenter homogener Speicher Datentypen: Seite = feste Anzahl von Bytes Segment = var. Anzahl von Seiten Operatoren: Anforderung/Freigabe von Seiten Segmente anlegen/öffnen/schließen Datentypen: Block = feste Anzahl von Bytes Datei = variable Anzahl v. Blöcken Operatoren: Dateien anlegen/öffnen/schließen Lesen/Schreiben von Blöcken Geräte-E/A Satz- u. Satzmengenverwaltung Satzzugriffsstrukturen Zugriffsschicht Vorschau auf zukünftig benötigte Daten Vermeiden nicht aktuell benötigter Daten Datentypen: Sätze und Satzmengen Operatoren: Operatoren auf Sätzen Datentypen: Satzmengen Operatoren: Operatoren auf Mengen Datentypen: phys. Zugriffsstrukturen auf Sätze Operatoren: seq. Durchlauf, gezielte Suche Optimaler Einsatz der logischen Ressourcen Performanz

3 3 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 1 Kompensation Transaktionen Recovery in der Segmentschicht 1 (0) j (1) i (1) 2 (1) 1 (1) p (0) n+1 (0) n (0) m (0) k (0) 2 (0) op 1 (0) op k-1 (0) op 1 (1) op i-1 (1) Rekonstruktion 0-Konsistenz durch RAID usw. gesichert. Standardlösung: Bewahre Zustand n auf (0) Von einer Transaktion bewirkter Endzustand Seiten

4 4 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Recovery in der Zugriffsschicht Recovery könnte statt in der Segmentschicht auch in der Zugriffsschicht erfolgen. Sätze sind feinkörniger als Seiten. Vorteil: meist sehr kurze Logeinträge Nachteil: mehr Operationen mehr Logging 1 (0) p (0) n+1 (0) n (0) k (0) 2 (0) op 1 (0) op k-1 (0) (1) t (1) r+1 (1) r (1) q (1) i (1) 2 (1) op 1 (1) op i-1 (1) (2) 1 (2) op 1 (2) Seiten Sätze Transaktionen Rekonstruktion Kompensation

5 5 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Recovery in der Zugriffsschicht: Vergleich 1 (0) p (0) n+1 (0) n (0) k (0) 2 (0) op (0) op (0) (1) t (1) r+1 (1) r (1) q (1) i (1) 2 (1) op 1 (1) op i-1 (1) (2) 1 (2) op 1 (2) Seiten Sätze Transaktionen Rekonstruktion Kompensation Seiten-Logging Full-write: Logging der gesamten Seite unabhängig vom Ausmaß der Änderungen. Satz-Logging Record-write: Logging lediglich der lokalen Änderungen auf der Seite.

6 6 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Record-write Partial-write: Logging der physischen Wirkung des Record-write Idempotenz! write(a) write(b) flush restart redo(a) redo(b) Physiological-write: Logisches Logging des Record-write: Operation und Parameter Idempotenz nicht zwingend! write(a) write(b) flush restart redo(a) redo(b) ab a ab b ab ab ab ab ab

7 7 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 unpin do(flush) Segment- Verwalter Partial-write: Architektursicht Transaktion 1Transaktion 2... Transaktion n Scheduler Historie 1Historie n Sperren-Verwalter Historie über Datensätzen Historie über Seiten Log- datei Recovery- Backup- Verwalter Globale Historie aus read, partial-write, allocate, unfix, commit, abort Puffer- Verwalter Daten- basis p3p3 p2p2 p 17 p 24 p 18 p 57 p 42 p8p8 p 67 p 19 p 33 p 81 p 46 p 25 p 54 p 66 p9p9 p 91 p 14 p 68 p 31 p 29 p 48 p 47 p1p1 p5p5 p 99 p 23 p 24 p 56 p 62 p 15 p 49 p 36 p 93 p7p7 Log- seiten d4d4 d 43 d 17 d 15 d2d2 d 58 d5d5 d9d9 d 26 d 69 d6d6 d 16 d 46 d 68 d 55 d 32 d 97 d 49 d 25 d 20 d 67 d 30 d 49 d 37 d 19 d 34 d 10 d 24 d 25 d 94 d 63 d 82 d 49 d 92 d 57 d8d8 Daten- seiten restart fetch, flush read, partial-write, allocate, unfix partial-write: Ersetzen einer Bytesequenz auf 1 Seite Parameter: Transaktion, Seitennummer, Ausschnitt Satzverwaltung Globale Historie aus read, record-write, allocate, unfix, commit, abort Historie über Datensätzen Voraussetzung der Serialisierbarkeit erfüllt! Wg. Idempotenz: Recovery- Lösungen können von der Segmentschicht übernommen werden!

8 8 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 1 st crash2 nd crash resume normal operation restart complete analysis pass redo pass undo pass analysis pass redo pass t1t1 t2t2 t3t3 t4t4 t5t5 flush(d) 1 st restart (incomplete) 2 nd restart (complete) w(a) w(b) w(c) w(d) w(a) w(d) w(e) w(b) flush(b) w(f) Sample Scenario for Redo-Winners

9 9 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Sample Scenario Data Structures Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] 1: begin (t 1 ) 2: begin (t 2 ) 3: p-write (a, t 1 )a: 33: p-write (a, t 1 ) 4: begin (t 3 ) 5: begin (t 4 ) 6: p-write (b, t 3 )b: 66: p-write (b, t 3 ) 7: p-write (c, t 2 ) c: 7 7: p-write (c, t 2 ) 8: p-write (d, t 1 )d: 88: p-write (d, t 1 ) 9: commit (t 1 ) 1, 2, 3, 4, 5, 6, 7, 8, 9 10: flush (d)d: 8 11: p-write (d, t 3 )d: 1111: p-write (d, t 3 ) 12: begin (t 5 ) 13: p-write (a, t 5 )a: 1313: p-write (a, t 5 ) 14: commit (t 3 ) 11, 12, 13, 14 15: flush (d)d: 11 16: p-write (d, t 4 )d: 1616: p-write (d, t 4 ) 17: p-write (e, t 2 )e: 1717: p-write (e, t 2 ) 18: p-write (b, t 5 )b: 1818: p-write (b, t 5 ) 19: flush (b)b: 1816, 17, 18 20: commit (t 4 ) 20 21: p-write (f, t 5 )f: 2121: p-write (f, t 5 ) SYSTEM CRASH

10 10 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 First restart Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] redo (3)a: 3 redo (6)b: 6 flush (a)a: 3 redo (8)d: 8 flush (d)d: 8 redo (11)d: 11 SECOND SYSTEMCRASH Analysis pass: losers = {t 2, t 5 } Redo pass + :

11 11 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Second restart Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] redo (3)a: 3 redo (6)b: 6 redo (8)d: 8 redo (11)d: 11 redo(16)d: 16 undo(18)b: 6 undo(17)e: 0 undo(13)a: 3 undo(7)c: 0 SECOND RESTARTCOMPLETE: RESUMENORMAL OPERATION Analysis pass: losers = {t 2, t 5 } Redo pass + undo pass:

12 12 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Physiological-write Folgen der fehlenden Idempotenz: Auf eine Seite, die korrekt in der Datenbasis geführt wird, kann dieselbe Operation nicht erneut ausgeführt werden. Korrektheit bestand bereits vor dem Systemzusammenbruch oder entstand durch eine Winner-Aktion vor einem erneuen Zusammenbruch. Eine korrekte Aktion darf exakt einmal ausgeführt werden. Notwendig ist eine Art Buchführung! Außerhalb Verschiebungen sind partial-writes weiterhin sinnvoll. Um nicht unterscheiden zu müssen: Verwende nicht idempotente general-writes.

13 13 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 unpin do(flush) Segment- Verwalter General-write: Architektursicht Transaktion 1Transaktion 2... Transaktion n Scheduler Historie 1Historie n Sperren-Verwalter Historie über Datensätzen Historie über Seiten Log- datei Recovery- Backup- Verwalter Globale Historie aus read, general-write, allocate, unfix, commit, abort Puffer- Verwalter Daten- basis p3p3 p2p2 p 17 p 24 p 18 p 57 p 42 p8p8 p 67 p 19 p 33 p 81 p 46 p 25 p 54 p 66 p9p9 p 91 p 14 p 68 p 31 p 29 p 48 p 47 p1p1 p5p5 p 99 p 23 p 24 p 56 p 62 p 15 p 49 p 36 p 93 p7p7 Log- seiten d4d4 d 43 d 17 d 15 d2d2 d 58 d5d5 d9d9 d 26 d 69 d6d6 d 16 d 46 d 68 d 55 d 32 d 97 d 49 d 25 d 20 d 67 d 30 d 49 d 37 d 19 d 34 d 10 d 24 d 25 d 94 d 63 d 82 d 49 d 92 d 57 d8d8 Daten- seiten restart fetch, flush read, general-write, allocate, unfix general-write: partial-write oder physiological-write Satzverwaltung Globale Historie aus read, record-write, allocate, unfix, commit, abort Historie über Datensätzen Voraussetzung der Serialisierbarkeit erfüllt!

14 14 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Redo-Winners var DatabaseCache: set of Page indexed by PageNo; type Page: record of PageNo: identifier; PageSeqNo: identifier; Status: (clean, dirty) /* only cache*/; Contents: array [PageSize] of char; end; var LogBuffer: ordered set of LogEntry indexed by LogSeqNo; type LogEntry: record of LogSeqNo: identifier; TransId: identifier; PageNo: identifier; ActionType: (write, full-write, begin, commit, rollback); UndoInfo: array of char; RedoInfo: array of char; PreviousSeqNo: identifier; end; type TransInfo: record of TransId: identifier; LastSeqNo: identifier; end; var ActiveTrans: set of TransInfo indexed by TransId Höchste für die Transaktion vergebene LSN LSN. PSN. Verkettung innerhalb der Transaktion Wurde auf der Seitenebene nicht genutzt! Jetzt Mittel der Buchführung!

15 15 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Redo-Winners Trifft der redo-Pass auf einen Log-Eintrag mit LogSeqNo i für Seite p, so wird die eingetragene Aktion nur ausgeführt falls i > PageSeqNo( p ). Setze dann PageSeqNo( p ):= i. Trifft der undo-Pass auf einen Log-Eintrag mit LogSeqNo i für Seite p, so wird die eingetragene Aktion nur zurückgesetzt falls i PageSeqNo( p ). Setze dann PageSeqNo( p ):= i-1.

16 16 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 1 st crash2 nd crash resume normal operation restart complete analysis pass redo pass undo pass analysis pass redo pass t1t1 t2t2 t3t3 t4t4 t5t5 flush(d) 1 st restart (incomplete) 2 nd restart (complete) w(a) w(b) w(c) w(d) w(a) w(d) w(e) w(b) flush(b) w(f) Sample Scenario Detailbetrachtung: w(d): Verschieben eines Satzes

17 17 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Sample Scenario Data Structures Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] 1: begin (t 1 ) 2: begin (t 2 ) 3: g-write (a, t 1 )a: 33: g-write (a, t 1 ) 4: begin (t 3 ) 5: begin (t 4 ) 6: g-write (b, t 3 )b: 66: g-write (b, t 3 ) 7: g-write (c, t 2 ) c: 7 7: g-write (c, t 2 ) 8: g-write (d, t 1 )d: 88: g-write (d, t 1 ) 9: commit (t 1 ) 1, 2, 3, 4, 5, 6, 7, 8, 9 10: flush (d)d: 8 11: g-write (d, t 3 )d: 1111: g-write (d, t 3 ) 12: begin (t 5 ) 13: g-write (a, t 5 )a: 1313: g-write (a, t 5 ) 14: commit (t 3 ) 11, 12, 13, 14 15: flush (d)d: 11 16: g-write (d, t 4 )d: 1616: g-write (d, t 4 ) 17: g-write (e, t 2 )e: 1717: g-write (e, t 2 ) 18: g-write (b, t 5 )b: 1818: g-write (b, t 5 ) 19: flush (b)b: 1816, 17, 18 20: commit (t 4 ) 20 21: g-write (f, t 5 )f: 2121: g-write (f, t 5 ) SYSTEM CRASH Vermerke Verschiebung Verschiebung in Datenbasis Verschiebungs-effekt bleibt erhalten

18 18 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 First restart Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] redo (3)a: 3 consider-redo (6)b: 18 flush (a)a: 3 consider-redo (8)d: 11 consider-redo (11)d: 11 SECOND SYSTEMCRASH Analysis pass: losers = {t 2, t 5 } Redo pass + : Kein redo, da korrekter Zustand durch Aktion 19 bereits in der Datenbasis Kein redo, da korrekter Zustand durch Aktion 15 bereits in der Datenbasis

19 19 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Second restart Sequence number: actionChange of cached database [PageNo: SeqNo] Change of stable database [PageNo: SeqNo] Log entry added to log buffer [LogSeqNo: action Log entries added to stable log [LogSeqNos] consider-redo (3)a: 3 consider-redo (6)b: 6 consider-redo (8)d: 8 consider-redo (11)d: 11 redo (16)d: 16 undo (18)b: 6 consider-undo (17)e: 0 consider-undo (13)a: 3 consider-undo (7)c: 0 SECOND RESTARTCOMPLETE: RESUMENORMAL OPERATION Analysis pass: losers = {t 2, t 5 } Redo pass + undo pass: Erledigt beim ersten restart Schon beim ersten restart keine Aktion! Alter Zustand noch in der Datenbasis!


Herunterladen ppt "Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7 Zugriffsschicht: Zuverlässigkeit."

Ähnliche Präsentationen


Google-Anzeigen