Universitt Karlsruhe TH Kapitel 7 Zugriffsschicht Zuverlssigkeit 2008

  • Slides: 19
Download presentation
Universität Karlsruhe (TH) Kapitel 7 Zugriffsschicht: Zuverlässigkeit © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann

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

Gegenstand des Kapitels Datenmodell Datentypen: Satzmengen Operatoren: Operatoren auf Mengen Datentypen: Sätze und Satzmengen

Gegenstand des Kapitels Datenmodell Datentypen: Satzmengen Operatoren: Operatoren auf Mengen Datentypen: Sätze und Satzmengen Operatoren: Operatoren auf Sätzen Datentypen: phys. Zugriffsstrukturen auf Sätze Operatoren: seq. Durchlauf, gezielte Suche 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 2 Performanz Mengenorientiertes Datenmodell Anfragebearbeitung Optimaler Einsatz der logischen Ressourcen Satzorientiertes Datenmodell Satz- u. Satzmengenverwaltung Vorschau auf zukünftig benötigte Daten Satzzugriffsstrukturen Zugriffsschicht Vermeiden nicht aktuell benötigter Daten Hauptspeicherseiten u. Segmente Segment- u. Pufferverwaltung Bevorratung von Daten im Hauptspeicher (rechtzeitige Bereitstellung vor Benutzung) Dateien Dateiverwaltung Geräteschnittstelle Schneller Transport zwischen Haupt- und Hintergrundspeicher Speicherstruktur Geräte-E/A © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann DBI 7

Recovery in der Segmentschicht 3 Von einer Transaktion bewirkter Endzustand (1) 1 t (0)

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

Recovery in der Zugriffsschicht 4 (2) 1 op (2) t (1) 1 op(1) 2

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

Recovery in der Zugriffsschicht: Vergleich 5 (2) 1 op (2) t (1) 1 t

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

Record-write Partial-write: Logging der physischen Wirkung des Record -write Ø Idempotenz! a a a

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

Partial-write: Architektursicht 7 Transaktion 1 . . . Transaktion 2 Historie 1 Voraussetzung der

Partial-write: Architektursicht 7 Transaktion 1 . . . Transaktion 2 Historie 1 Voraussetzung der Serialisierbarkeit erfüllt! Transaktion n Historie über Datensätzen Historie n Scheduler Sperren-Verwalter Globale Historie aus read, record-write, allocate, unfix, commit, abort Historie über Datensätzen Satzverwaltung Globale Historie aus read, partial-write, Historie über Seiten allocate, unfix, commit, abort Recovery. Backup. Verwalter read, partial-write: Ersetzen einer allocate, unfix restart Wg. Idempotenz: Recovery. Lösungen können von der Segmentschicht übernommen werden! © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann Puffer. Verwalter Logseiten p 3 p 42 p 46 p 14 p 1 p 62 p 8 p 25 p 68 p 5 p 17 p 67 p 54 p 31 p 99 p 49 p 24 p 19 p 66 p 29 p 23 p 36 p 18 p 33 p 9 p 48 p 24 p 93 p 57 p 81 p 91 p 47 p 56 p 7 Datenseiten d 4 d 5 d 46 d 25 d 19 d 63 d 43 d 9 d 68 d 20 d 34 d 82 d 17 d 26 d 55 d 67 d 10 d 49 d 15 d 69 d 32 d 30 d 24 d 92 d 6 d 97 d 49 d 25 d 57 d 58 d 16 d 49 d 37 d 94 d 8 Bytesequenz auf 1 Seite Parameter: Transaktion, Segment. Seitennummer, Ausschnitt Verwalter unpin do(flush) fetch, flush Logdatei Datenbasis DBI 7

Sample Scenario for Redo-Winners 8 t 1 w(a) w(d) t 2 w(c) t 3

Sample Scenario for Redo-Winners 8 t 1 w(a) w(d) t 2 w(c) t 3 w(b) w(e) w(d) 1 st restart (incomplete) t 4 w(d) t 5 w(a) w(b) w(f) flush(d) flush(b) redo analysis pass 1 st crash © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann resume normal operation 2 nd restart (complete) undo redo pass analysis pass 2 nd crash restart complete DBI 7

Sample Scenario Data Structures Sequence number: action Change of cached database [Page. No: Seq.

Sample Scenario Data Structures Sequence number: action Change of cached database [Page. No: Seq. No] Change of stable database [Page. No: Seq. No] Log entry added to log buffer [Log. Seq. No: action 1: begin (t 1) 2: begin (t 2) 3: p-write (a, t 1) a: 3 3: p-write (a, t 1) 4: begin (t 3) 5: begin (t 4) 6: p-write (b, t 3) b: 6 6: 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: 8 8: p-write (d, t 1) 9: commit (t 1) 10: flush (d) 11: p-write (d, t 3) d: 11 11: p-write (d, t 3) 12: begin (t 5) a: 13 13: p-write (a, t 5) 14: commit (t 3) 15: flush (d) 11, 12, 13, 14 d: 11 16: p-write (d, t 4) d: 16 16: p-write (d, t 4) 17: p-write (e, t 2) e: 17 17: p-write (e, t 2) 18: p-write (b, t 5) b: 18 18: p-write (b, t 5) 19: flush (b) b: 18 20: commit (t 4) 21: p-write (f, t 5) 1, 2, 3, 4, 5, 6, 7, 8, 9 d: 8 12: begin (t 5) 13: p-write (a, t 5) Log entries added to stable log [Log. Seq. No‘s] 16, 17, 18 20: commit (t 4) f: 21 20 21: p-write (f, t 5) SYSTEM CRASH © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann DBI 7 9

First restart 10 Analysis pass: losers = {t 2, t 5} Redo pass +

First restart 10 Analysis pass: losers = {t 2, t 5} Redo pass + : Sequence number: action Change of cached database [Page. No: Seq. No] redo (3) a: 3 redo (6) b: 6 flush (a) redo (8) Log entry added to log buffer [Log. Seq. No: action Log entries added to stable log [Log. Seq. No‘s] a: 3 d: 8 flush (d) redo (11) Change of stable database [Page. No: Seq. No] d: 8 d: 11 SECOND SYSTEM © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann CRASH DBI 7

Second restart 11 Analysis pass: losers = {t 2, t 5} Redo pass +

Second restart 11 Analysis pass: losers = {t 2, t 5} Redo pass + undo pass: Sequence number: action Change of cached database [Page. No: Seq. No] 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 RESTART COMPLETE: RESUME © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann Change of stable database [Page. No: Seq. No] Log entry added to log buffer [Log. Seq. No: action Log entries added to stable log [Log. Seq. No‘s] NORMAL OPERATION DBI 7

Physiological-write 12 n Folgen der fehlenden Idempotenz: Auf eine Seite, die korrekt in der

Physiological-write 12 n Folgen der fehlenden Idempotenz: Auf eine Seite, die korrekt in der Datenbasis geführt wird, kann dieselbe Operation nicht erneut ausgeführt werden. u 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“! u n Außerhalb Verschiebungen sind partial-writes weiterhin sinnvoll. Um nicht unterscheiden zu müssen: Verwende nicht idempotente general-writes. © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann DBI 7

General-write: Architektursicht 13 Transaktion 1 . . . Transaktion 2 Historie 1 Voraussetzung der

General-write: Architektursicht 13 Transaktion 1 . . . Transaktion 2 Historie 1 Voraussetzung der Serialisierbarkeit erfüllt! Transaktion n Historie über Datensätzen Scheduler Sperren-Verwalter Globale Historie aus read, record-write, allocate, unfix, commit, abort Historie über Datensätzen Satzverwaltung Globale Historie aus read, general-write, Historie über allocate, unfix, commit, abort Recovery. Backup. Verwalter read, general-write: allocate, unfix restart Puffer. Verwalter Logseiten p 3 p 42 p 46 p 14 p 1 p 62 p 8 p 25 p 68 p 5 p 17 p 67 p 54 p 31 p 99 p 49 p 24 p 19 p 66 p 29 p 23 p 36 p 18 p 33 p 9 p 48 p 24 p 93 p 57 p 81 p 91 p 47 p 56 p 7 partial-write oder Segment- physiological-write Datenseiten d 4 d 5 d 46 d 25 d 19 d 63 d 43 d 9 d 68 d 20 d 34 d 82 d 17 d 26 d 55 d 67 d 10 d 49 d 15 d 69 d 32 d 30 d 24 d 92 d 6 d 97 d 49 d 25 d 57 d 58 d 16 d 49 d 37 d 94 d 8 Seiten unpin Verwalter do(flush) fetch, flush Logdatei © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann Datenbasis DBI 7

Redo-Winners 14 var Database. Cache: set of Page indexed by Page. No; type Page:

Redo-Winners 14 var Database. Cache: set of Page indexed by Page. No; type Page: record of Wurde auf der Seitenebene Page. No: identifier; PSN. nicht genutzt! Jetzt Mittel der Page. Seq. No: identifier; Buchführung! Status: (clean, dirty) /* only cache*/; Contents: array [Page. Size] of char; end; var Log. Buffer: ordered set of Log. Entry indexed by Log. Seq. No; type Log. Entry: record of Log. Seq. No: identifier; LSN. Trans. Id: identifier; Höchste für die Transaktion Page. No: identifier; vergebene LSN Action. Type: (write, full-write, begin, commit, rollback); Undo. Info: array of char; type Trans. Info: record of Redo. Info: array of char; Trans. Id: identifier; Previous. Seq. No: identifier; Last. Seq. No: identifier; end; var Active. Trans: Verkettung innerhalb set of Trans. Info indexed by Trans. Id der Transaktion © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann DBI 7

Redo-Winners 15 n n Trifft der redo-Pass auf einen Log-Eintrag mit Log. Seq. No

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

Sample Scenario 16 t 1 w(a) Detailbetrachtung: w(d): Verschieben eines Satzes w(d) t 2

Sample Scenario 16 t 1 w(a) Detailbetrachtung: w(d): Verschieben eines Satzes w(d) t 2 w(c) t 3 w(b) w(e) w(d) 1 st restart (incomplete) t 4 w(d) t 5 w(a) w(b) w(f) flush(d) flush(b) redo analysis pass 1 st crash © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann resume normal operation 2 nd restart (complete) undo redo pass analysis pass 2 nd crash restart complete DBI 7

Sample Scenario Data Structures Sequence number: action Change of cached database [Page. No: Seq.

Sample Scenario Data Structures Sequence number: action Change of cached database [Page. No: Seq. No] Change of stable database [Page. No: Seq. No] Log entry added to log buffer [Log. Seq. No: action 1: begin (t 1) 2: begin (t 2) 3: g-write (a, t 1) a: 3 3: g-write (a, t 1) 4: begin (t 3) 5: begin (t 4) 6: g-write (b, t 3) b: 6 6: 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: 8 8: g-write (d, t 1) 9: commit (t 1) 10: flush (d) 11: g-write (d, t 3) d: 11 Verschiebung in Datenbasis 1, 2, 3, 4, 5, 6, 7, 8, 9 11: g-write (d, t 3) 12: begin (t 5) a: 13 13: g-write (a, t 5) 14: commit (t 3) 15: flush (d) 11, 12, 13, 14 d: 11 16: g-write (d, t 4) d: 16 16: g-write (d, t 4) 17: g-write (e, t 2) e: 17 17: g-write (e, t 2) 18: g-write (b, t 5) b: 18 18: g-write (b, t 5) 19: flush (b) b: 18 20: commit (t 4) 21: g-write (f, t 5) Vermerke Verschiebung d: 8 12: begin (t 5) 13: g-write (a, t 5) Log entries added to stable log [Log. Seq. No‘s] 20: commit (t 4) f: 21 Verschiebungs-effekt 16, 17, 18 bleibt erhalten 20 21: g-write (f, t 5) SYSTEM CRASH © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann DBI 7 17

First restart 18 Analysis pass: losers = {t 2, t 5} Redo pass +

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

Second restart 19 Analysis pass: losers = {t 2, t 5} Redo pass +

Second restart 19 Analysis pass: losers = {t 2, t 5} Redo pass + undo pass: Sequence number: action Change of cached database [Page. No: Seq. No] 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 RESTART COMPLETE: RESUME © 2008 Univ, Karlsruhe, IPD, Prof. Lockemann Change of stable database [Page. No: Seq. No] Log entry added to log buffer [Log. Seq. No: action Log entries added to stable log [Log. Seq. No‘s] Erledigt beim ersten restart Schon beim ersten restart keine Aktion! Alter Zustand noch in der Datenbasis! NORMAL OPERATION DBI 7