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

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

Transcript of Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 7 Kapitel 7...

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

UniversitätKarlsruhe (TH)

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Kapitel 7

Zugriffsschicht: Zuverlässigkeit

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

2

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 BytesSegment = var. Anzahl von Seiten

Operatoren:Anforderung/Freigabe von SeitenSegmente anlegen/öffnen/schließen

Datentypen:Block = feste Anzahl von BytesDatei = 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

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

3

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

op1(0) op

k-1(0)

op1(1) op

i-1(1)

01

01

01

01

Rekonstruktion

0-Konsistenz durch RAID usw. gesichert.

Standardlösung:

Bewahre Zustand n auf(0)

Von einer Transaktion bewirkter Endzustand

Seiten

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

4

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

op1(0) op

k-1(0)

01

01

1(1)

t(1)

r+1(1)

r(1)

q(1)

i(1)

2(1)

op1(1) op

i-1(1)

12

12

2(2)

1(2)

op1(2)

Seiten

Sätze

Transaktionen

01

01

Rekonstruktion

RekonstruktionKompensation

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

5

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Recovery in der Zugriffsschicht: Vergleich

1(0)

p(0)

n+1(0)

n(0)

k(0)

2(0)

op(0) op(0)

01

01

1(1)

t(1)

r+1(1)

r(1)

q(1)

i(1)

2(1)

op1(1) op

i-1(1)

12

12

2(2)

1(2)

op1(2)

Seiten

Sätze

Transaktionen

01

01

Rekonstruktion

RekonstruktionKompensation

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.

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

6

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

a b

a

a b

b

a b

a b

a b

a b

a b

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

7

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

unpindo(flush)

Segment-Verwalter

Partial-write: Architektursicht

Transaktion 1 Transaktion 2 ... Transaktion n

Scheduler

Historie 1 Historie 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

p3 p2 p17 p24 p18 p57

p42 p8 p67 p19 p33 p81

p46 p25 p54 p66 p9 p91

p14 p68 p31 p29 p48 p47

p1 p5 p99 p23 p24 p56

p62 p15 p49 p36 p93 p7

Log-seiten

d4 d43 d17 d15 d2 d58

d5 d9 d26 d69 d6 d16

d46 d68 d55 d32 d97 d49

d25 d20 d67 d30 d49 d37

d19 d34 d10 d24 d25 d94

d63 d82 d49 d92 d57 d8

Daten-seiten

restart

fetch, flush

read, partial-write, allocate, unfix partial-write: Ersetzen einer

Bytesequenz auf 1 SeiteParameter: 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!

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

8

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

1st crash 2nd crash

resumenormaloperation

restartcomplete

analysispass

redopass

undopass

analysispass

redopass

t1

t2

t3

t4

t5

flush(d) flush(d)

1st restart(incomplete)

2nd restart(complete)

w(a)

w(b)

w(c)

w(d)

w(d)

w(a)

w(d)

w(e)

w(b)

flush(b)

w(f)

Sample Scenario for Redo-Winners

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

9

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Sample Scenario Data StructuresSequence number: action Change 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 [LogSeqNo‘s]

1: begin (t1) 1: begin (t1)

2: begin (t2) 2: begin (t2)

3: p-write (a, t1) a: 3 3: p-write (a, t1)

4: begin (t3) 4: begin (t3)

5: begin (t4) 5: begin (t4)

6: p-write (b, t3) b: 6 6: p-write (b, t3)

7: p-write (c, t2) c: 7 7: p-write (c, t2)

8: p-write (d, t1) d: 8 8: p-write (d, t1)

9: commit (t1) 9: commit (t1) 1, 2, 3, 4, 5, 6, 7, 8, 9

10: flush (d) d: 8

11: p-write (d, t3) d: 11 11: p-write (d, t3)

12: begin (t5) 12: begin (t5)

13: p-write (a, t5) a: 13 13: p-write (a, t5)

14: commit (t3) 14: commit (t3) 11, 12, 13, 14

15: flush (d) d: 11

16: p-write (d, t4) d: 16 16: p-write (d, t4)

17: p-write (e, t2) e: 17 17: p-write (e, t2)

18: p-write (b, t5) b: 18 18: p-write (b, t5)

19: flush (b) b: 18 16, 17, 18

20: commit (t4) 20: commit (t4) 20

21: p-write (f, t5) f: 21 21: p-write (f, t5)

SYSTEM CRASH

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

10

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

First restart

Sequence number: action Change 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 [LogSeqNo‘s]

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 SYSTEM CRASH

Analysis pass: losers = {t2, t5}

Redo pass + :

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

11

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Second restart

Sequence number: action Change 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 [LogSeqNo‘s]

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 NORMAL OPERATION

Analysis pass: losers = {t2, t5}

Redo pass + undo pass:

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

12

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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.

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

13

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

unpindo(flush)

Segment-Verwalter

General-write: Architektursicht

Transaktion 1 Transaktion 2 ... Transaktion n

Scheduler

Historie 1 Historie 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

p3 p2 p17 p24 p18 p57

p42 p8 p67 p19 p33 p81

p46 p25 p54 p66 p9 p91

p14 p68 p31 p29 p48 p47

p1 p5 p99 p23 p24 p56

p62 p15 p49 p36 p93 p7

Log-seiten

d4 d43 d17 d15 d2 d58

d5 d9 d26 d69 d6 d16

d46 d68 d55 d32 d97 d49

d25 d20 d67 d30 d49 d37

d19 d34 d10 d24 d25 d94

d63 d82 d49 d92 d57 d8

Daten-seiten

restart

fetch, flush

read, general-write, allocate, unfix general-write:

partial-write oderphysiological-write

Satzverwaltung

Globale Historie aus read, record-write, allocate, unfix, commit, abort Historie über Datensätzen

Voraussetzung der Serialisierbarkeit erfüllt!

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

14

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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!

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

15

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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.

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

16

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

1st crash 2nd crash

resumenormaloperation

restartcomplete

analysispass

redopass

undopass

analysispass

redopass

t1

t2

t3

t4

t5

flush(d) flush(d)

1st restart(incomplete)

2nd restart(complete)

w(a)

w(b)

w(c)

w(d)

w(d)

w(a)

w(d)

w(e)

w(b)

flush(b)

w(f)

Sample Scenario

Detailbetrachtung:w(d): Verschieben eines Satzes

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

17

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Sample Scenario Data StructuresSequence number: action Change 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 [LogSeqNo‘s]

1: begin (t1) 1: begin (t1)

2: begin (t2) 2: begin (t2)

3: g-write (a, t1) a: 3 3: g-write (a, t1)

4: begin (t3) 4: begin (t3)

5: begin (t4) 5: begin (t4)

6: g-write (b, t3) b: 6 6: g-write (b, t3)

7: g-write (c, t2) c: 7 7: g-write (c, t2)

8: g-write (d, t1) d: 8 8: g-write (d, t1)

9: commit (t1) 9: commit (t1) 1, 2, 3, 4, 5, 6, 7, 8, 9

10: flush (d) d: 8

11: g-write (d, t3) d: 11 11: g-write (d, t3)

12: begin (t5) 12: begin (t5)

13: g-write (a, t5) a: 13 13: g-write (a, t5)

14: commit (t3) 14: commit (t3) 11, 12, 13, 14

15: flush (d) d: 11

16: g-write (d, t4) d: 16 16: g-write (d, t4)

17: g-write (e, t2) e: 17 17: g-write (e, t2)

18: g-write (b, t5) b: 18 18: g-write (b, t5)

19: flush (b) b: 18 16, 17, 18

20: commit (t4) 20: commit (t4) 20

21: g-write (f, t5) f: 21 21: g-write (f, t5)

SYSTEM CRASH

Vermerke Verschiebung

Verschiebung in Datenbasis

Verschiebungs-effekt bleibt erhalten

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

18

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

First restart

Sequence number: action Change 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 [LogSeqNo‘s]

redo (3) a: 3

consider-redo (6) b: 18

flush (a) a: 3

consider-redo (8) d: 11

consider-redo (11) d: 11

SECOND SYSTEM CRASH

Analysis pass: losers = {t2, t5}

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

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

19

© 2008 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 7

Second restart

Sequence number: action Change 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 [LogSeqNo‘s]

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 NORMAL OPERATION

Analysis pass: losers = {t2, t5}

Redo pass + undo pass:

Erledigt beim ersten restart

Schon beim ersten restart keine Aktion!

Alter Zustand noch in der Datenbasis!