Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Kapitel 13: Mehrbenutzersynchronisation Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück 49069 Osnabrück

Ähnliche Präsentationen


Präsentation zum Thema: "1 Kapitel 13: Mehrbenutzersynchronisation Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück 49069 Osnabrück"—  Präsentation transkript:

1 1 Kapitel 13: Mehrbenutzersynchronisation Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück Osnabrück

2 2 Multiprogramming Zeitachse T 2 T 3 T 1 Einbenutzer betrieb T 1 T 2 T 3 Mehrbenutzer betrieb

3 3 Lost Update T 1 T 2 read(A, a 1 ) a 1 := a read(A, a 2 ) a 2 := a 2 * 1.03 write(A, a 2 ) write(A, a 1 ) read(B, b 1 ) b 1 := b write(B, b 1 )

4 4 Dirty Read T 1 T 2 read(A, a 1 ) a 1 := a 1 – 300 write(A, a 1 ) read(A, a 2 ) a 2 := a 2 * 1.03 write(A, a 2 ) read(B, b 1 )... abort

5 5 Phantomproblem T1T2 select sum(KontoStand) from Konten; insert into Konten values (C, 1000,...); select sum(KontoStand) from Konten;

6 6 Historie, Schedule Wichtig: Lese/Schreiboperationen Unwichtig: lokale Variable Historie = Schedule = Festlegung für die Reihenfolge sämtlicher relevanter Datenbankoperationen. seriell =alle Schritte einer Transaktion unmittelbar hintereinander serialisierbar =es gibt ein serielles äquivalentes Schedule

7 7 Schedule T1T2T1T2 BOT read(A) write(A) read(B) write(B) commit BOT read(C) write(C) read(A) write(A) commit BOT read(A) BOT read(C) write(A) write(C) read(B) write(B) commit read(A) write(A) commit T1T2T1T2 nichtseriellseriell serialisierbar

8 8 Nicht serialisierbares Schedule T 1 T 3 BOT read(A) write(A) BOT read(A) write(A) read(B) write(B) commit read(B) write(B) commit wegen A: T 1, dann T 3 wegen B: T 3, dann T 1

9 9 Semantik Betrag überweisen T 1 T 3 BOT read(A, a 1 ) a 1 := a write(A, a 1 ) BOT read(A, a 2 ) a 2 := a write(A, a 2 ) read(B, b 2 ) b 2 := b write(B, b 2 ) commit read(B, b 1 ) b 1 := b write(B, b 1 ) commit Zufällig ist Reihenfolge unerheblich !

10 10 Semantik Zinsen gutschreiben T 1 T 3 BOT read(A, a 1 ) a 1 := a write(A, a 1 ) BOT read(A, a 2 ) a 2 := a 2 * 1.03 write(A, a 2 ) read(B, b 2 ) b 2 := b 2 * 1.03 write(B, b 2 ) commit read(B, b 1 ) b 1 := b write(B, b 1 ) commit 3 % Zinsen fehlen !

11 11 Elementare Operationen r i (A) zum Lesen von Datenobjekt A, w i (A) zum Schreiben von Datenobjekt A, a i zur Durchführung eines abort, c i zur Durchführung eines commit.

12 12 Vier Fälle r i (A) und r j (A) : kein Konflikt, da Reihenfolge unerheblich r i (A) und w j (A) : Konflikt, da Reihenfolge entscheidend w i (A) und r j (A) : Konflikt, da Reihenfolge entscheidend w i (A) und w j (A) : Konflikt, da Reihenfolge entscheidend

13 13 Äquivalenz Zwei Historien H 1 und H 2 über der gleichen Menge von Transaktionen sind äquivalent (in Zeichen H 1 H 2 ), wenn sie die Konfliktoperationen der nicht abgebrochenen Transaktionen in derselben Reihenfolge ausführen. D. h. für die durch H 1 und H 2 induzierten Ordnungen auf den Elementaroperationen < H1 bzw. < H2 wird verlangt: Wenn p i und q j Konfliktoperationen sind mit p i < H1 q j, dann muß auch p i < H2 q j gelten. Die Anordnung der nicht in Konflikt stehenden Operationen ist irrelevant.

14 14 Testen auf Serialisierbarkeit Input:Eine Historie H für Transaktionen T 1,..., T k. Output:entweder: nein, ist nicht serialisierbar oder ja, ist serialisierbar + serielles Schedule Idee:Bilde gerichteten Graph G, dessen Knoten den Transaktionen entsprechen. Für zwei Konfliktoperationen p i, q j aus der Historie H mit p i < H q j fügen wir die Kante T i T j in den Graph ein.

15 15 Serialisierbarkeitstheorem Eine Historie H ist genau dann serialisierbar, wenn der zugehörige Serialisierbarkeitsgraph azyklisch ist. Im Falle der Kreisfreiheit läßt sich die äquivalente serielle Historie aus der topologischen Sortierung des Serialisierbarkeitsgraphen bestimmen.

16 16 Beispiel r 1 (A) r 2 (B) r 2 (C) w 2 (B) r 1 (B) w 1 (A) r 2 (A) w 2 (C) w 2 (A) r 3 (A) r 3 (C) w 1 (B) w 3 (C) w 3 (A) T 1 T 2 T 3 Konflikte: w 2 (B) < r 1 (B) w 1 (A) < r 2 (A) w 2 (C) < r 3 (C) w 2 (A) < r 3 (A) Kanten: T 2 T 1 T 1 T 2 T 2 T 3

17 17 Sperrbasierte Synchronisation Stelle durch Sperren die Serialisierbarkeit sicher: S (shared, read lock, Lesesperre): Wenn Transaktion T i eine S-Sperre für Datum A besitzt, kann T i read(A) ausführen. Mehrere Transaktionen können gleichzeitig eine S-Sperre auf demselben Objekt A besitzen X (exclusive, write lock, Schreibsperre): Ein write(A) darf nur die eine Transaktion ausführen, die eine X-Sperre auf A besitzt.

18 18 Kompatibilitätsmatrix NLSX S - X --

19 19 Zwei-Phasen-Sperrprotokoll Jedes Objekt muß vor der Benutzung gesperrt werden. Eine Transaktion fordert eine Sperre, die sie schon besitzt, nicht erneut an. Eine Transaktion respektiert vorhandene Sperren gemäß der Verträglichkeitsmatrix und wird ggf. in eine Warteschlange eingereiht. Jede Transaktion durchläuft eine Wachstumsphase (nur Sperren anfordern) und dann eine Schrumpfungsphase (nur Sperren freigeben). Bei Transaktionsende muß eine Transaktion alle ihre Sperren zurückgeben

20 20 2-Phasen-Sperrprotokoll

21 21 2-Phasen-Sperrprotokoll BOT lockX(A) read(A) write(A) BOT lockS(A)T 2 muß warten lockX(B) read(B) unlockX(A) T 2 wecken read(A) lockS(B)T 2 muß warten write(B) unlockX(B) T 2 wecken read(B) commit unlockS(A) unlockS(B) commit T 1 T 2

22 22 Verklemmungen BOT lockX(A) BOT lockS(B) read(B) read(A) write(A) lockX(B)T 1 muß warten auf T 2 lockS(A)T 2 muß warten auf T Deadlock T 1 T 2

23 23 Wartegraphen KnotenTransaktionen Kante von T i nach T j T i wartet auf T j Satz: Deadlock Zyklus im Wartegraph

24 24 Zurücksetzen einer Transaktion Minimierung des Rücksetzaufwandes: Wähle jüngste beteiligte Transaktion. Maximierung der freigegebenen Resourcen: Wähle Transaktion mit den meisten Sperren. Vermeidung von Verhungern (engl. Starvation): Wähle nicht diejenige Transaktion, die schon oft zurückgesetzt wurde. Mehrfache Zyklen: Wähle Transaktion, die an mehreren Zyklen beteiligt ist.

25 25 Hierarchie der Sperrgranulate Datenbasis Segmente Seiten Sätze

26 26 Granularität Bei zu kleiner Granularität werden Transaktionen mit hohem Datenzugriff stark belastet. Bei zu großer Granularität wird der Parallelitätsgrad unnötig eingeschränkt.

27 27 Multiple granularity locking (MGL) NLkeine Sperrung (no lock) SSperrung durch Leser XSperrung durch Schreiber ISLesesperre (S) weiter unten beabsichtigt IXSchreibsperre (X) weiter unten beabsichtigt NLSXISIX S - - X IS - IX - -

28 28 Protokoll Idee: vor dem Sperren erst geeignete Sperren in allen übergeordneten Knoten von oben nach unten anfordern. Bevor ein Knoten mit S oder IS gesperrt wird, müssen alle Vorgänger vom Sperrer im IX- oder IS-Modus gehalten werden. Bevor ein Knoten mit X oder IX gesperrt wird, müssen alle Vorgänger vom Sperrer im IX-Modus gehalten werden. Sperren von unten nach oben freigeben.

29 29 Datenbasis-Hierarchie mit Sperren D a 1 a 2 s 1 p 1 s 2 s 3 p 2 s 4 s 5 p 3 s 6 T 1 IX T 1 X T 1 IX T 2 IS T 2 S T 3 X T 3 IXT 4 IX T 5 IS T 1 will X p 1 T 2 will S p 2 T 3 will X a 2 T 4 will X s 3 T 5 will S s 5

30 30 Zeitstempelverfahren Äquivalenz zu seriellem Schedule gemäß Eintrittszeit Jede Transaktion erhält Zeitstempel bei Eintritt ins System drückt einem Item seinen Zeitstempel auf Jedes Item hat Lesestempel = höchster Zeitstempel durch Leseoperation Schreibstempel = höchster Zeitstempel durch Schreiboperation

31 31 Regeln Transaktion mit Zeitstempel t darf kein Item lesen mit Schreibstempel t w > t (denn der alte Item-Wert ist weg). Zurücksetzen ! Transaktion mit Zeitstempel t darf kein Item schreiben mit Lesestempel t r > t (denn der neue Wert kommt zu spät). Zurücksetzen ! Zwei Transaktionen können dasselbe Item zu beliebigen Zeitpunkten lesen. OK ! Transaktion mit Zeitstempel t darf kein Item beschreiben mit Schreibstempel t w > t ignorieren !

32 32 Regeln Transaktion X mit Zeitstempel t bei Zugriff auf Item mit Lesestempel t r und Schreibstempel t w : if (X = read) and (t t w ) führe X aus und setze t r := max{t r, t} if (X = write) and (t t r ) and (t t w ) then führe X aus und setze t w := t if (X = write) and ( t r t < t w ) tue nichts If (X = read and t < t w ) or (X = write and t < t r ) setze Transaktion zurück

33 33 Beispiel für Zeitstempelverfahren Stempel Item a hat t r = t w = 0 read(a) t r := 150 read(a) t r := 160 a := a - 1 write(a) ok, da 160 t r = 160 und 160 t w = 0 t w := 160 write(a) T 1 wird zurückgesetzt, da 150 < t r = 160 T1 T2

34 34 Beispiel für Zeitstempelverfahren t r = 0t r = 0t r = 0 t w = 0t w = 0t w = 0 read(b)t r = 200 read(a)t r = 150 read(c)t r = 175 write(b)t w = 200 write(a)t w = 200 write(c) Abbruch write(a) ignoriert T1T2T3abc


Herunterladen ppt "1 Kapitel 13: Mehrbenutzersynchronisation Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück 49069 Osnabrück"

Ähnliche Präsentationen


Google-Anzeigen