Mehrbenutzersynchronisation



Ähnliche Dokumente
Mehrbenutzer-Synchronisation

Synchronisation in Datenbanksystemen in a nutshell

Mehrbenutzer-Synchronisation

Software-Engineering und Datenbanken

Serialisierbarkeit von Historien: Minimalanforderung bzgl. "akzeptabler" Synchronisation

Datenbanken: Transaktionskonzept und Concurrency Control

... T n T 1 T 2 T 3. Transaktions-Manager. Daten-Manager. Recovery-Manager Puffer-Manager. Datenbank

Transaktionen und Synchronisation konkurrierender Zugriffe

Datenbanksysteme 2009

Mehrbenutzersynchronisation

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Tag 4 Inhaltsverzeichnis

Übungen zur Vorlesung. Datenbanken I

Mehrbenutzersynchronisation

Koordination des Mehrbenutzerbetriebs 9. Koordination des Mehrbenutzerbetriebs

Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung

1 topologisches Sortieren

Tag 4 Inhaltsverzeichnis

Datenintegrität und Transaktionskonzept

Mehrbenutzersynchronisation

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Eigenschaften von TAs: ACID-Prinzip

Anleitung über den Umgang mit Schildern

Grundlagen der Theoretischen Informatik, SoSe 2008

1 Mathematische Grundlagen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Transaktionsverarbeitung und Nebenläufigkeitskontrolle. Jim Gray ( )

Datenbanken Konsistenz und Mehrnutzerbetrieb III

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Statuten in leichter Sprache

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Datenbanksysteme II SS Übungsblatt 9: Wiederholung

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Mehrbenutzersynchronisation

7 Rechnen mit Polynomen

Primzahlen und RSA-Verschlüsselung

Grundlagen verteilter Systeme

Erstellen von x-y-diagrammen in OpenOffice.calc

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Wie halte ich Ordnung auf meiner Festplatte?

Hilfedatei der Oden$-Börse Stand Juni 2014

Musterlösungen zur Linearen Algebra II Blatt 5

A Lösungen zu Einführungsaufgaben zu QueueTraffic

Transaktionsverwaltung

Beispielszenarien. 12. Transaktionen. ACID-Eigenschaften. Transaktion

Professionelle Seminare im Bereich MS-Office

Fallbeispiel: Eintragen einer Behandlung

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

WinVetpro im Betriebsmodus Laptop

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Monitore. Klicken bearbeiten

Kompetitive Analysen von Online-Algorithmen

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Softwarelösungen: Versuch 4

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Ein Buch entsteht. Ein langer Weg

Erfahrungen mit Hartz IV- Empfängern

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Animationen erstellen

Konfliktgraph. Satz und Definition

Wie Sie mit Mastern arbeiten

Übung - Konfigurieren einer Windows 7-Firewall

Internet online Update (Mozilla Firefox)

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Beweisbar sichere Verschlüsselung

Anmerkungen zur Übergangsprüfung

Unzulänglichkeiten der ANSI-SQL-Isolationslevel [1] Intelligente Datenbanken

Literatur und Quellen. Datenbanken. Inhalt. Inhalt. Transaktionen. Nikolaus Augsten. Wintersemester 2013/14

Wenn wir also versuchen auf einen anderen PC zuzugreifen, dann können wir sowohl per Name als auch mit der Adresse suchen.

Arbeiten mit UMLed und Delphi

Kapitel 12 Integrität der Datenbank

BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

Zwischenablage (Bilder, Texte,...)

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

AutoCAD Dienstprogramm zur Lizenzübertragung

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

10.6 Programmier-Exits für Workitems

Informationsblatt Induktionsbeweis

Internationales Altkatholisches Laienforum

Gruppenrichtlinien und Softwareverteilung

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

Informationen zum neuen Studmail häufige Fragen

Transaktionen Recovery Isolationslevel. Datenbanksysteme. Transaktionen. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

TAV Übung 3. Übung 3: Verteilte Datenhaltung

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Transkript:

Kapitel 10 Mehrbenutzersynchronisation 381 / 520

Mehrbenutzersynchronisation Alle TAs strikt seriell (also nacheinander) auszuführen ist sicher, aber langsam Oft werden Systemressourcen nicht voll ausgenutzt, da eine TA auf Plattenzugriff oder Benutzereingabe wartet Diese TA blockiert dann alle anderen TAs Um Systemressourcen auszunutzen bietet sich Nebenläufigkeit an 382 / 520

Mehrbenutzersynchronisation(2) Nicht abgesicherte Nebenläufigkeit kann aber zu folgenden Problemen führen: lost update dirty read non-repeatable read phantom problem 383 / 520

Probleme Lost Update T 1 T 2 bot r 1 (x) bot r 2 (x) w 1 (x) w 2 (x) commit commit Das Ergebnis der Transaktion T 1 ist verlorengegangen! 384 / 520

Probleme Dirty Read T 1 T 2 bot bot r 2 (x) w 2 (x) r 1 (x) w 1 (y) commit abort T 1 liest einen Wert für x der so nicht gültig ist! 385 / 520

Probleme Non-Repeatable Read T 1 T 2 bot r 1 (x) r 1 (x)... bot w 2 (x) commit T 1 liest x zweimal mit verschiedenem Ergebnis! 386 / 520

Probleme Phantom Problem T 1 T 2 bot select count(*) from R; select count(*) from R;... bot insert into R...; commit T 1 findet ein weiteres Tupel beim Abarbeiten der zweiten Anfrage! 387 / 520

Isolation Levels Vermeidung der Probleme Im Idealfall sollten alle diese Probleme vermieden werden Man muß dabei allerdings einen Kompromiß zwischen Performanz und Genauigkeit schließen Je mehr Sicherheit, desto langsamer wird die Ausführung Über die Isolation Levels kann man DBMS mitteilen, welche Sicherheit erwünscht ist 388 / 520

Isolation Levels Transaktionen und SQL Festsetzen von Eigenschaften einer TA: set transaction Stufe, Zugriffsmodus Folgende Stufen für den Isolation Level sind möglich: read uncommitted read committed repeatable read serializable Mögliche Zugriffsmodi: read only read write 389 / 520

Isolation Levels Transaktionen und SQL(2) lost dirty nonrep. phant. update read read probl. read uncommit. read commited repeat. read serializable 390 / 520

Isolation Levels Transaktionen und SQL(3) read only sagt dem DBMS, daß eine TA nur Leseoperationen enthält Das hat Auswirkungen auf die Performanz Nebenläufiges Ausführen von TAs die nur lesen ist unkritisch, d.h. beliebig vieler solcher TAs können völlig uneingeschränkt parallel laufen Erst wenn eine TA dazukommt, die auch schreibt müssen Vorkehrungen getroffen werden 391 / 520

Isolation Levels Transaktionen und SQL(4) Befehl zum Markieren eines Transaktionsbeginns start transaction; Befehl zur erfolgreichen Beendigung commit [work]; Befehl zum Abbruch rollback [work]; 392 / 520

Historien Was macht ein DBMS? Um Lösungsansätze besser verstehen zu können, wird das Problem zunächst etwas formaler betrachtet Danach werden Lösungen vorgestellt, die in DBMS eingesetzt werden 393 / 520

Historien Formale Definition einer TA Operationen einer TA T i ri (A): Lesen des Datenobjekts A w i (A): Schreiben des Datenobjekts A a i : Abbruch ci : erfolgreiche Beendigung bot: begin of transaction (implizit) 394 / 520

Historien Formale Definition einer TA(2) Eine TA T i ist eine partielle Ordnung von Operationen mit der Ordnungsrelation < i so daß: Ti {r i [x],w i [x] x ist ein Datenobjekt} {a i,c i } a i T i, gdw. c i T i Sei t gleich ai oder c i, dann gilt für jede andere Operation p i : p i < i t i Falls ri [x] und w i [x] T i, dann gilt entweder r i [x] < i w i [x] oder w i [x] < i r i [x] 395 / 520

Historien Darstellung Transaktionen werden oft als gerichtete azyklische Graphen (DAGs) dargestellt: r2 w 2 [z] c 2 r 2 [y] r 2 [x] < 2 w 2 [z], w 2 [z] < 2 c 2, r 2 [x] < 2 c 2, r 2 [y] < 2 w 2 [z], r 2 [y] < 2 c 2 Transitive Beziehungen sind im Graph implizit enthalten 396 / 520

Historien Historien (Schedules) Mehrere TAs können nebenläufig ausgeführt werden Dies wird durch eine Historie (Schedule) beschrieben Eine Historie gibt an, wie Operationen aus verschiedenen TAs relativ zueinander ausgeführt werden Da verschiedene Operationen parallel ausgeführt werden können, ist eine Historie eine partielle Ordnung 397 / 520

Historien Konfliktoperationen Operationen die in Konflikt miteinander stehen dürfen nicht parallel ausgeführt werden Zwei Operationen stehen in Konflikt miteinander, wenn beide auf dem gleichen Datenobjekt arbeiten und mindestens eine davon eine Schreiboperation ist T i T j r i [x] w i [x] r j [x] w j [x] 398 / 520

Historien Definition von Historien Sei T = {T 1,T 2,...,T n } eine Menge von Transaktionen Eine Historie H über T ist eine partielle Ordnung mit der Ordnungsrelation < H, so daß H = n i=1 T i <H n i=1 < i Für zwei beliebige Operationen p,q H die in Konflikt miteinander stehen gilt: entweder p < H q oder q < H p 399 / 520

Historien Beispiel einer Historie r 2 [x] w 2 [y] w 2 [z] c 2 H = r 3 [y] w 3 [x] w 3 [y] w 3 [z] c 3 r 1 [x] w 1 [x] c 1 400 / 520

Konfliktäquivalenz (Konflikt-)Äquivalenz Zwei Historien H und H sind (konflikt-)äquivalent (H H ), wenn: Sie enthalten die gleichen Mengen von TAs (samt allen dazugehörigen Operationen) Sie ordnen die Konfliktoperationen der nicht abgebrochenen TAs in der gleichen Art und Weise an Die Idee dabei ist, das berechnete Endergebnis nicht zu verändern 401 / 520

Konfliktäquivalenz Beispiel r 1 [x] w 1 [y] r 2 [z] c 1 w 2 [y] c 2 r 1 [x] r 2 [z] w 1 [y] c 1 w 2 [y] c 2 r 2 [z] r 1 [x] w 1 [y] w 2 [y] c 2 c 1 r 2 [z] r 1 [x] w 2 [y] w 1 [y] c 2 c 1 402 / 520

Serialisierbarkeit Serialisierbarkeit Da serielle Historien sicher sind, ist es wünschenswert Historien mit ähnlichen Eigenschaften zu haben Insbesondere möchte man eine Historie haben die äquivalent zu einer seriellen Historie ist Eine solche Historie nennt man serialisierbar 403 / 520

Serialisierbarkeit Serialisierbarkeit(2) Präzise Definition: Die abgeschlossene Projektion C(H) einer Historie H enthält nur die erfolgreich abgeschlossenen TAs Eine Historie H ist serialisierbar, wenn C(H) äquivalent zu einer seriellen Historie H s ist 404 / 520

Serialisierbarkeit Serialisierbarkeitstheorem Wie überprüft man die Serialisierbarkeit? Eine Historie ist genau dann serialisierbar, wenn ihr Serialisierbarkeitsgraph SG(H) azyklisch ist 405 / 520

Serialisierbarkeit Serialisierbarkeitsgraph Der Serialisierbarkeitsgraph SG(H) einer Historie H = {T 1,...,T n } ist ein gerichteter Graph mit folgenden Eigenschaften: Die Knoten sind die erfolgreich abgeschlossenen TAs aus H Eine Kante zwischen zwei TAs Ti und T j wird eingetragen, wenn es zwei Konfliktoperationen p i und q j gibt und p i < H q j 406 / 520

Serialisierbarkeit Beispiel Historie H H = w 1 [x] w 1 [y] c 1 r 2 [x] r 3 [y] w 2 [x] c 2 w 3 [y] c 3 SG(H) SG(H) = T 1 ր ց T 2 T 3 407 / 520

Serialisierbarkeit Beispiel(2) H ist serialisierbar Mögliche Ordnungen H 1 s = T 1 T 2 T 3 H 2 s = T 1 T 3 T 2 H H 1 s H 2 s 408 / 520

Serialisierbarkeit Beispiel(3) r 1 [x] w 1 [x] w 1 [y] c 1 H = ւ r 2 [x] w 2 [y] c 2 r 3 [x] w 3 [x] c 3 ր SG(H) = T 2 ց T 3 T 1 409 / 520

Serialisierbarkeit Beispiel(4) H ist serialisierbar Mögliche Ordnung H 1 s = T 2 T 1 T 3 H H 1 s 410 / 520

Serialisierbarkeit Beispiel(5) w 1 [x] w 1 [y] c 1 H = r 2 [x] w 2 [y] c 2 SG(H) = T 1 T 2 H ist nicht serialisierbar 411 / 520

Weitere Eigenschaften Weitere Eigenschaften Für TAs sind weitere Eigenschaften wünschenswert: Rücksetzbarkeit (Recoverability) Vermeidung kaskadierenden Rücksetzens (avoiding cascading aborts: ACA) Striktheit (strictness) 412 / 520

Weitere Eigenschaften Weitere Eigenschaften(2) Zuerst müssen wir Schreib-/Leseabhängigkeiten (reads-from relationship) definieren Eine TA T i liest (Datenobjekt x) von TA T j, wenn w j [x] < r i [x] a j r i [x] Falls ein w k [x] existiert mit w j [x] < w k [x] < r i [x], dann a k < r i [x] Eine TA kann auch von sich selbst lesen 413 / 520

Weitere Eigenschaften Rücksetzbarkeit Eine Historie ist rücksetzbar, wenn folgendes gilt Immer wenn eine TA Ti von einer anderen TA T j liest (i j) und c i H, dann c j < c i Die TAs müssen eine bestimmte Commit-Reihenfolge einhalten Bei nicht rücksetzbaren Historien können Probleme mit dem C und D der ACID-Eigenschaften auftreten 414 / 520

Weitere Eigenschaften Rücksetzbarkeit(2) H = w 1 [x] r 2 [x] w 2 [y] c 2 a 1 H ist nicht rücksetzbar Die Konsequenzen sind: Wenn Ergebnis von T2 so stehen bleibt, dann haben wir inkonsistente Daten (T 2 hat Daten von einer abgebrochenen TA gelesen) Wenn wir T2 zurücksetzen, dann nehmen wir Änderungen einer fest zugesicherten TA zurück 415 / 520

Weitere Eigenschaften Kaskadierendes Rücksetzen Schritt T 1 T 2 T 3 T 4 T 5 0. 1. w 1 [x] 2. r 2 [x] 3. w 2 [y] 4. r 3 [y] 5. w 3 [z] 6. r 4 [z] 7. w 4 [v] 8. r 5 [v] 9. a 1 (abort) 416 / 520

Weitere Eigenschaften Kaskadierendes Rücksetzen(2) Eine Historie vermeidet kaskadierendes Rücksetzen, wenn folgendes gilt Immer wenn eine TA Ti von einer anderen TA T j liest (i j), dann c j < r i [x] Es darf nur von bereits erfolgreich abgeschlossenen TAs gelesen werden 417 / 520

Weitere Eigenschaften Striktheit Eine Historie ist strikt, wenn folgendes gilt Bei zwei Operationen wj [x] < o i [x] (mit o i [x] = r i [x] oder w i [x] gilt entweder a j < o i [x] oder c j < o i [x] Nur von bereits erfolgreich abgeschlossenen TAs darf gelesen oder dürfen Datenobjekte überschrieben werden 418 / 520

Weitere Eigenschaften Striktheit(2) Nur bei strikten Historien darf physische Protokollierung beim Recovery angewendet werden x = 0 w 1 [x,1] before image von T 1 : 0 x = 1 w 2 [x,2] before image von T 2 : 1 x = 2 a 1 c 2 Bei Abbruch von T 1 wird x fälschlicherweise auf 0 gesetzt 419 / 520

Weitere Eigenschaften Einordnung alle Historien H9 SR RC H8 ACA H7 ST H6 serielle Historien H1 H2 H3 H4 H5 SR: serialisierbar, RC: rücksetzbar, ACA: vermeidet kaskadierendes Rücksetzen, ST: strikt 420 / 520

Scheduler Datenbank-Scheduler T 1 T 2 T 3... T n Transaktions-Manager Scheduler Daten-Manager Recovery-Manager Puffer-Manager Datenbank 421 / 520

Scheduler Datenbank-Scheduler(2) Ein Scheduler ist ein Programm, das die eingehenden Operationen ordnet und für eine serialisierbare und rücksetzbare Historie sorgt Mehrere Möglichkeiten nach Entgegennahme einer Operation: (Sofort) ausführen Zurückweisen Verzögern 422 / 520

Scheduler Datenbank-Scheduler(3) Es existieren zwei grobe Strategien: Pessimistisch Optimistisch 423 / 520

Scheduler Pessimistische Scheduler Scheduler verzögert entgegengenommene Operationen Wenn mehrere Operationen da sind, legt Scheduler möglichst geschickte Reihenfolge fest Wichtigster Vertreter: Sperrbasierter Scheduler (in der Praxis weit verbreitet) 424 / 520

Scheduler Optimistische Scheduler Scheduler schickt entgegengenommene Operationen möglichst schnell zur Ausführung, Muß später eventuell Schaden reparieren Wichtigster Vertreter: Zeitstempelbasierter Scheduler 425 / 520

Scheduler Sperrbasierte Synchronisation Hauptidee relativ einfach: Jedes Datenobjekt hat eine zugehörige Sperre Bevor eine TA T i zugreifen darf, muß sie Sperre anfordern Falls eine andere TA Tj Sperre hält, bekommt T i die Sperre nicht und muß warten, bis T j die Sperre freigegeben hat Nur eine TA kann Sperre halten und auf Datenobjekt zugreifen Wie garantiert man Serialisierbarkeit? 426 / 520

Zwei-Phasen-Sperrprotokoll Zwei-Phasen-Sperrprotokoll Abgekürzt durch 2PL Zwei Sperrmodi: S (shared, read lock, Lesesperre) X (exclusive, write lock, Schreibsperre) Verträglichkeitsmatrix (auch Kompatibilitätsmatrix genannt): gehaltene Sperre angeford. Sp. keine S X S X 427 / 520

Zwei-Phasen-Sperrprotokoll Definition Jedes Objekt, das von einer TA benutzt werden soll, muß vorher entsprechend gesperrt werden Eine TA kann eine Sperre die sie hält nicht noch einmal anfordern Wenn eine Sperre nicht gewährt werden kann (nach Matrix), wird TA in Warteschlange eingereiht Eine TA darf nach der ersten Freigabe einer Sperre keine weitere anfordern (es gibt zwei Phasen) Bei Transaktionsende muß eine TA alle Sperren zurückgeben 428 / 520

Zwei-Phasen-Sperrprotokoll Zwei Phasen #Sperren Wachstum Schrumpfung Zeit Wachstumsphase: es werden Sperren angefordert, aber keine freigegeben Schrumpfungsphase: es werden Sperren freigegeben, aber keine angefordert 429 / 520

Zwei-Phasen-Sperrprotokoll Verzahnung nach 2PL Schritt T 1 T 2 Bemerkung 1. BOT 2. lockx[x] 3. r[x] 4. w[x] 5. BOT 6. locks[x] T 2 muss warten 7. lockx[y] 8. r[y] 9. unlockx[x] T 2 wecken 10. r[x] 11. locks[y] T 2 muss warten 12. w[y] 13. unlockx[y] T 2 wecken 14. r[y] 15. commit 16. unlocks[x] 17. unlocks[y] 18. commit 430 / 520

Zwei-Phasen-Sperrprotokoll Strenges 2PL 2PL schließt kaskadierendes Rücksetzen nicht aus Erweiterung zum strengen 2PL: alle Sperren werden bis zum Ende der Transaktion gehalten damit ist kaskadierendes Rücksetzen ausgeschlossen (die erzeugten Schedules sind sogar strikt) 431 / 520

Zwei-Phasen-Sperrprotokoll Strenges 2PL(2) #Sperren EOT Wachstumsphase Zeit 432 / 520

Deadlocks Verklemmungen (Deadlocks) Beispiel für ein Deadlock: T 1 T 2 bot lockx 1 (a) w 1 (a) lockx 1 (b) bot locks 2 (b) r 2 (b) locks 2 (a) 433 / 520

Deadlocks Deadlocks erkennen Keine TA soll ewig auf eine Sperre warten Eine Strategie zum Erkennen von Deadlocks ist Time-Out Richtige Zeitdauer zu finden ist problematisch Präzise Methode benutzt Wartegraphen Knoten sind TAs, Kanten sind Wartet-auf-Beziehungen Wenn Graph Zyklen aufweist, liegt ein Deadlock vor 434 / 520

Deadlocks Wartegraph Beispiel T 1 T 2 T 5 T 4 T 3 Wartegraph hat Zyklen, d.h. Deadlock liegt vor Zyklen können hier durch Zurücksetzen von T 2 oder T 3 aufgelöst werden 435 / 520

Deadlocks Deadlock-Vermeidung Deadlocks können durch Preclaiming vermieden werden Preclaiming bedeutet, daß alle Sperren zu Beginn einer TA angefordert werden In der Praxis unrealistisch #Sperren BOT EOT Zeit 436 / 520

Deadlocks Deadlock-Vermeidung(2) Time-Out-Verfahren ist oft zu vorsichtig, z.t. werden TAs abgebrochen, wenn nur der Verdacht auf ein Deadlock besteht Eine andere Methode besteht darin zum Zeitpunkt wenn T i eine Sperre anfordert, die von T j gehalten wird, zu entscheiden TAs bekommen Prioritäten zugewiesen Wenn Priorität von T i höher ist, darf T i warten Wenn Priorität von T i kleiner ist, wird T i abgebrochen 437 / 520

Deadlocks Deadlock-Vermeidung(3) Durch Prioriäten wird vermieden, daß durch ein Warten ein Deadlock entstehen kann Prioritätenvergabe muß umsichtig erfolgen Wenn eine abgebrochene TA T i beim Neutstart ständig niedrige Prioritäten erhält, können sich immer TAs mit höheren Prioritäten vordrängeln Ti kommt nie zum Zug, wir haben kein Deadlock, aber ein Livelock 438 / 520

Deadlocks Deadlock-Vermeidung(4) Vermeidung von Deadlocks und Livelocks: Verwendung von Zeitstempeln als Prioritäten Zeitstempel sind eindeutig und wachsen monoton mit der Zeit Eine TA bekommt beim ersten Aufruf einen Zeitstempel ts zugewiesen, beim Neustart behält sie den alten Zeitstempel Je älter der Zeitstempel, desto höher die Priorität Irgendwann hat eine immer wieder abgebrochene TA den ältesten Zeitstempel, Livelocks werden verhindert 439 / 520

Deadlocks Deadlock-Vermeidung(5) Angenommen T j hält Sperre, T i fordert sie an Im Zeitstempelverfahren kann ein Scheduler nun zwei verschiedene Strategien fahren Wait-Die: Falls ts(t i ) < ts(t j ), dann wartet T i, sonst bricht T i ab Wound-Wait: Falls ts(t i ) < ts(t j ), dann bricht T j ab, sonst wartet T i 440 / 520

multi-granularity locking Phantom-Problem Mit (strengem) 2PL haben wir alle am Anfang des Kapitels angesprochenen Probleme gelöst, außer des Phantom-Problems Phantom-Problem läßt sich mit Sperren auf Datenobjekten nicht lösen, da keine Sperren auf nichtexistenten Datenobjekten angefordert werden können Lösung des Problems durch hierarchische Sperrgranulate (multi-granularity locking: MGL) 441 / 520

multi-granularity locking MGL Datenbasis Segmente Seiten Sätze 442 / 520

multi-granularity locking Erweiterte Sperrmodi für MGL S (shared): für Leser X (exclusive): für Schreiber IS (intention share): für beabsichtigtes Lesen weiter unten in der Hierarchie IX (intention exclusive): für beabsichtigtes Schreiben weiter unten in der Hierarchie 443 / 520

multi-granularity locking Kompatibilitätsmatrix gehaltene Sperre angef. Sp. keine S X IS IX S X IS IX 444 / 520

multi-granularity locking Sperrprotokoll Sperren werden in der Hierarchie von oben nach unten angefordert Für eine S oder IS Sperre müssen alle Vorgänger in der Hierarchie im IS oder IX Modus gesperrt sein Für eine X oder IX Sperre müssen alle Vorgänger in der Hierarchie im IX Modus gehalten werden Sperren werden von unten nach oben wieder freigegeben (Sperre wird nur freigegeben, wenn auf keinem Nachfolger des Knotens noch eine Sperre gehalten wird) 445 / 520

multi-granularity locking Beispiel Datenbasis (T 1, IX) D (T 2, IS) (T 3, IX) Segmente (T 1, IX) a 1 (T 2, IS) a 2 (T 3, X) Seiten (T 1, X) p 1 p 2 (T 2, S) p 3 Sätze s 1 s 2 s 3 s 4 s 5 s 6 446 / 520

multi-granularity locking Beispiel(2) Datenbasis (T 5, IS) (T 1, IX) (T 2, IS) (T 4, IX) D (T 3, IX) Segmente (T 1, IX) (T 2, IS) a 1 (T a 2 4, IX) (T 3, X) (T 5, IS) Seiten (T 1, X) (T 2, S) p 1 p 2 (T p 3 4, IX) (T 5, IS) Sätze s 1 s 2 s 3 s 4 s 5 s 6 (T 4, X) (T 5, S) 447 / 520

multi-granularity locking Beispiel(3) TAs T 4 und T 5 sind blockiert Hier noch kein Deadlock, aber im einfachen MGL-Protokoll sind auch Deadlocks möglich 448 / 520

Zeitstempelbasierte Verfahren Zeitstempelbasierte Verfahren Neben den sperrbasierten Protokollen gibt es noch eine weitere große Klasse an Protokollen, die zeitstempelbasierte Synchronisation Transaktionsmanager weist jeder TA einen eindeutigen Zeitstempel zu Jede Operation der TA bekommt diesen Zeitstempel 449 / 520

Zeitstempelbasierte Verfahren Zeitstempel Ein Scheduler benutzt die Zeitstempel um in Konflikt stehende Operationen zu ordnen: Angenommen p i [x] und q j [x] stehen in Konflikt miteinander pi [x] wird vor q j [x] ausgeführt, gdw. der Zeitstempel von T i älter als der Zeitstempel von T j ist 450 / 520

Zeitstempelbasierte Verfahren Zeitstempel(2) Scheduler speichert zu jedem Datenobjekt x den Zeitstempel der letzten auf x ausgeführten Operation Das wird für jeden Operationstypen q gemacht: max-q-scheduled(x) Wenn Scheduler eine Operation p bekommt, wird ihr Zeitstempel mit allen max-q-scheduled(x) verglichen, mit denen p in Konflikt steht Wenn der Zeitstempel von p älter als ein max-q-scheduled(x) ist, wird p zurückgewiesen (und TA abgebrochen) Ansonsten wird p ausgeführt und max-p-scheduled(x) aktualisiert 451 / 520

Zeitstempelbasierte Verfahren Weitere Eigenschaften Einfaches Zeitstempelverfahren erzeugt u.u. nicht rücksetzbare Schedules Rücksetzbarkeit kann dadurch garantiert werden, daß TAs in Zeitstempelreihenfolge committen Solange noch TAs laufen, von denen eine TA T i gelesen hat, wird ein commit von T i verzögert 452 / 520

Zeitstempelbasierte Verfahren Probleme von Zeitstempeln Zeitstempelbasierte Synchronisation wird in der Praxis kaum eingesetzt Phantom-Problem wird nicht gelöst Jede Operation wird praktisch zur Schreiboperation, da immer die max-q-scheduled(x)-felder aktualisiert werden müssen 453 / 520

Zusammenfassung Zusammenfassung Mehrbenutzersynchronisation gehört mit zu den wichtigsten Funktionen eines DBMS Normalerweise bleibt dies den Benutzern verborgen, aber über die Einstellung der Isolation-Levels kann in die Qualität dieser Synchronisation eingegriffen werden Die zwei bekanntesten Verfahren: Sperrbasierte Synchronisation Zeitstempelbasierte Synchronisation 454 / 520