Kapitel 13: Mehrbenutzersynchronisation

Slides:



Advertisements
Ähnliche Präsentationen
Mehrbenutzersynchronisation
Advertisements

Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Rücksetzen Bisher betrachtetes Scheduling gewährleistet Isolation, d.h. Serialisierbarkeit, setzt jedoch voraus, dass Transaktionen abgebrochen und rückgesetzt.
Granularity of Locks and Degrees of Consistency in a Shared Data Base
C Tutorium – Semaphoren –
Transaktionsverwaltung
Transaktionsverwaltung
1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt werden R1-Recovery.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Der Einstieg in das Programmieren
1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt werden R1-Recovery.
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Datenbanksysteme für FÜ WS 2004/2005 Transaktionen 1 Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz.
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
Kapitel 14: Recovery Oliver Vornberger
1 Kapitel 12: Transaktionsverwaltung Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück Osnabrück
1 Kapitel 12: Transaktionsverwaltung. 2 Transaktion Bündelung mehrerer Datenbankoperationen Mehrbenutzersynchronisation Recovery.
15.1 Synchronisation nebenläufiger Prozesse
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern© Erhard Künzel.
Synchronisation paralleler Transaktionen AIFB SS Synchronisationsverfahren 4.4 Synchronisationsverfahren (1/18) Sperrmodi und Sperrobjekte Sperrprotokoll.
Transaktion 1Transaktion 2... Transaktion n Synchronisation durch Scheduler Datenbasis-Verwalter lokaler Schedule 1lokaler Schedule n konfliktserialisierbarer.
4.4.2 Sperrverfahren (9/18) Regeln für das Setzen von Sperren
Verklemmungen Bei sperrenbasierter Synchronisation können sogenannte Verklemmungen (engl. deadlocks) auftreten, in denen Transaktionen sich gegenseitig.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Hierarchische Sperrgranulate Granularität: Bezeichnet die Größe der Dateneinheiten, die.
Implementierung von S2PL (1) Scheduler als Verwalter von Sperren auf Datenelementen sowie Warteschlangen für Sperren (Sperren-Verwalter). Transaktion 1Transaktion.
Modellierung von Transaktionen Zur Formalisierung der ACID-Garantien muss Verhalten von Transaktionen modelliert werden. Folge aus der Forderung nach lokaler.
Betriebliche Informationssysteme Prof. Dr. Michael Löwe
Heute: Scherenzange zeichnen
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 21: Concurrency Control.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Globale Transaktions-Verwaltung
Mehrbenutzersynchronisation
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #12 Mehrbenutzersynchronisation.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #7 Mehrbenutzersynchronisation (Teil 1)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #12 Mehrbenutzersynchronisation.
Analyse von Ablaufdiagrammen
Synchronisation paralleler Transaktionen AIFB SS Serialisierbarkeitsprinzip 4.3 Serialisierbarkeitsprinzip (11/13) Vermutung: Eine Schedule S.
Festschreibe-Protokoll (1) Globales Zwei-Phasen-Festschreibe-Protokoll (2- Phasen-Commit, 2PC): Phase 1: –Koordinator benachrichtigt Ressourcen, dass Commit.
Prozess-synchronisation
Transaktion Huang Zhenhao FU Shuai.
Vorlesung #12 Mehrbenutzersynchronisation
Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung Prof. Dr. Manfred Gruber FH München.
Analyseprodukte numerischer Modelle
Vorlesung Datenbanksysteme WS 2.0 Christoph Koch (Subject: DBVO:...
Lokales 2-Phasen-Festschreibe- Protokoll Segment-Verwalter führt commit(T i ) in zwei Phasen aus: Phase 1: Sicherstellung der Wiederholbarkeit. –Für jedes.
Übung: Transaktionale Systeme (Zusammenfassung der Vorlesungsinhalte)
Transaktionen Dr. Heidrun Bethge Datenbanken II.
Mehrbenutzerzugriff auf GIS-Daten
Mehrbenutzersynchronisation
Prüfung auf Serialisierbarkeit (3)
Transaktionsverwaltung
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
Synchronisation mit Zeitmarken (1) Zeitmarken-Synchronisation = einfaches, aber ineffizientes Verfahren zur Gewinnung konfliktserialisierbarer Schedules.
Synchronisation paralleler Transaktionen  AIFB SS Synchronisationsverfahren 4.4 Synchronisationsverfahren (1/3) Typen von Synchronisationsverfahren.
6.3 Verteilte Transaktionen
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #12 Mehrbenutzersynchronisation.
Prof. Dr. T. Kudraß1 Transaktionsmanagement - Einführung.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
6.3 Verteilte Transaktionen
Übung Datenbanksysteme I Besprechung
WS 2001/2002 Mehrbenutzerzugriff auf GIS-Daten
 Präsentation transkript:

Kapitel 13: Mehrbenutzersynchronisation Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück 49069 Osnabrück oliver@uos.de

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

Lost Update T1 T2 read(A, a1) a1 := a1 - 300 read(A, a2) write(A, a2) write(A, a1) read(B, b1) b1 := b1 + 300 write(B, b1)

Dirty Read T1 T2 read(A, a1) a1 := a1 – 300 write(A, a1) read(A, a2 ) read(B, b1) . . . abort

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

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

Schedule nichtseriell seriell  serialisierbar T1 T2 T1 T2 BOT BOT read(A) read(C) write(A) write(C) read(B) write(B) commit BOT read(A) write(A) read(B) write(B) commit read(C) write(C)  serialisierbar

Nicht serialisierbares Schedule T1 T3 BOT read(A) write(A) read(B) write(B) commit wegen A: T1, dann T3 wegen B: T3, dann T1

Semantik „Betrag überweisen“ T1 T3 BOT read(A, a1) a1 := a1 - 50 write(A, a1) read(A, a2 ) a2 := a2 - 100 write(A, a2) read(B, b2) b2 := b2 + 100 write(B, b2) commit read(B, b1) b1 := b1 + 50 write(B, b1) Zufällig ist Reihenfolge unerheblich !

Semantik „Zinsen gutschreiben“ T1 T3 BOT read(A, a1) a1 := a1 - 50 write(A, a1) read(A, a2 ) a2 := a2 * 1.03 write(A, a2) read(B, b2) b2 := b2 * 1.03 write(B, b2) commit read(B, b1) b1 := b1 + 50 write(B, b1) 3 % Zinsen fehlen !

Elementare Operationen ri(A) zum Lesen von Datenobjekt A, wi(A) zum Schreiben von Datenobjekt A, ai zur Durchführung eines abort, ci zur Durchführung eines commit.

Vier Fälle ri(A) und rj(A) : kein Konflikt, da Reihenfolge unerheblich ri(A) und wj(A) : Konflikt, da Reihenfolge entscheidend wi(A) und rj(A) : Konflikt, da Reihenfolge entscheidend wi(A) und wj(A) : Konflikt, da Reihenfolge entscheidend

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

Testen auf Serialisierbarkeit Input: Eine Historie H für Transaktionen T1, . . . , Tk. 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 pi, qj aus der Historie H mit pi <H qj fügen wir die Kante Ti  Tj in den Graph ein.

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.

Beispiel Konflikte: w2(B) < r1(B) w1(A) < r2(A) w2(C) < r3(C) T1 T2 T3 r1(A) r2(B) r2(C) w2(B) r1(B) w1(A) r2(A) w2(C) w2(A) r3(A) r3(C) w1(B) w3(C) w3(A) Konflikte: w2(B) < r1(B) w1(A) < r2(A) w2(C) < r3(C) w2(A) < r3(A) Kanten: T2  T1 T1  T2 T2  T3

Sperrbasierte Synchronisation Stelle durch Sperren die Serialisierbarkeit sicher: S (shared, read lock, Lesesperre): Wenn Transaktion Ti eine S-Sperre für Datum A besitzt, kann Ti 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.

Kompatibilitätsmatrix NL S X S   - X  - -

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

2-Phasen-Sperrprotokoll

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

Verklemmungen T1 T2 BOT lockX(A) lockS(B) read(B) read(A) write(A) lockX(B) T1 muß warten auf T2 lockS(A) T2 muß warten auf T1 . . . . . .  Deadlock

Wartegraphen Satz: Deadlock  Zyklus im Wartegraph Knoten Transaktionen Kante von Ti nach Tj Ti wartet auf Tj Satz: Deadlock  Zyklus im Wartegraph

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.

Hierarchie der Sperrgranulate Datenbasis Segmente Seiten Sätze

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.

Multiple granularity locking (MGL) NL keine Sperrung (no lock) S Sperrung durch Leser X Sperrung durch Schreiber IS Lesesperre (S) weiter unten beabsichtigt IX Schreibsperre (X) weiter unten beabsichtigt NL S X IS IX S   -  - X  - - - - IS   -   IX  - -  

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.

Datenbasis-Hierarchie mit Sperren T5 IS T2 IS T1 IX T1 will X p1 D a 1 2 s p 3 4 5 6 T4 IX T3 IX T2 will S p2 T2 IS T3 will X a2 T1 IX T3 X T4 IX T5 IS T4 will X s3 T2 S T5 will S s5 T1 X T4 IX

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

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

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

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

Beispiel für Zeitstempelverfahren T1 T2 T3 a b c 200 150 175 tr = 0 tr = 0 tr = 0 tw = 0 tw = 0 tw = 0 read(b) tr = 200 read(a) tr = 150 read(c) tr = 175 write(b) tw = 200 write(a) tw = 200 write(c) Abbruch write(a) ignoriert