Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung Prof. Dr. Manfred Gruber FH München.

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 15 Verteilte Datenbanken
Advertisements

Mehrbenutzersynchronisation
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.
C. Mohan, Bruce Lindsay and R. Obermarck
Transaktionsverwaltung
Transaktionsverwaltung
© A. Kemper / A. Eickler1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt.
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.
1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt werden R1-Recovery.
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 22: Grundlagen der Crash Recovery.
Transaktionen in verteilten Datenbanken
Prof. Dr. T. Kudraß1 Recovery. Prof. Dr. T. Kudraß2 Fehlerarten: Transaktionsfehler Transaktionsfehler –Freiwilliger Transaktionsfehler durch eine ROLLBACK-Anweisung.
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
Kapitel 13: Mehrbenutzersynchronisation
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
Recovery AIFB SS Recovery 5.1 Fehler im Datenbankbetrieb(1/10) (1)Transaktionsfehler (TF) (2)Systemfehler (SF) (3)Speicherfehler (SpF) Fehlerfallen.
Einige Begriffe zum Anfang.... Transaktionsprozedur: Folge primitiver Operationen als Einheit der Konsistenz und der Robustheit. Transaktion (TA): Ausführung.
Transaktion 1Transaktion 2... Transaktion n Synchronisation durch Scheduler Datenbasis-Verwalter lokaler Schedule 1lokaler Schedule n konfliktserialisierbarer.
Verklemmungen Bei sperrenbasierter Synchronisation können sogenannte Verklemmungen (engl. deadlocks) auftreten, in denen Transaktionen sich gegenseitig.
Recovery AIFB SS (1/8) Sicherungspunkte (Checkpoints) (1/8) (1) Transaktions-Orientierte Sicherungspunkte Transaction-Oriented Checkpoint.
Ausführungsmodell Zustandsübergang einer Transaktion aus Nutzersicht:
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.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
Betriebliche Informationssysteme Prof. Dr. Michael Löwe
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 21: Concurrency Control.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Mehrbenutzersynchronisation
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #6 Fehlerbehandlung.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #10 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.
Vorlesung #9 Fehlerbehandlung
Festschreibe-Protokoll (1) Globales Zwei-Phasen-Festschreibe-Protokoll (2- Phasen-Commit, 2PC): Phase 1: –Koordinator benachrichtigt Ressourcen, dass Commit.
Transaktion Huang Zhenhao FU Shuai.
Vorlesung #12 Mehrbenutzersynchronisation
Vorlesung Datenbanksysteme WS 2.0 Christoph Koch (Subject: DBVO:...
ADAT©2004,2006 Dipl. - Ing. Walter SabinSeite: 48 Version 1.0a Recovery Wiederherstellung eines konsistenten Datenbankzustandes nach Fehlersituationen.
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
Fehlerbehandlung (Recovery)
Transaktionsverwaltung
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
Recovery    AIFB SS (1/6) Durchführung der Recovery-Maßnahmen(1/6) Transaktions-Fehler (TF) T1 T2 T3 Zeitt Transaktion T2 wird vom.
Vs Verteilte Transaktionen Situation:Fragmentierung: Ein Datenbestand ist über mehrere Stationen verteilt (z.B. verteilte Datenbank, verteiltes Dateisystem,...)
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.
Datenbanktechnik 1 Datenbanktechnik II Kapitel 3.0 bis 4.0.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Übung – Recovery Manager Undo Redo Algorithmus
6.3 Verteilte Transaktionen
Vorlesung #7 Fehlerbehandlung
WS 2001/2002 Mehrbenutzerzugriff auf GIS-Daten
Transaktionsabbruch, System Crash, Media Failure
Vorlesung #7 Fehlerbehandlung
Vorlesung #7 Fehlerbehandlung
Vorlesung #10 Fehlerbehandlung
Redo/Undo Ersetzungsstrategie: LRU
 Präsentation transkript:

Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung Prof. Dr. Manfred Gruber FH München

Transaktions-Konzept (1) Beispiel: op1 BOT op2 read(K1) aus KONTO1 op3 write(K1 := K1 - 8000) in KONTO1 op4 read(K2) aus KONTO2 op5 write(K2 := K2 + 8000) in KONTO2 op6 commit Konsistenz: T ganz oder gar nicht ausführen! T

Transaktions-Konzept (2) Transaktion (TA): Folge von DB-Operationen atomar konsistenzerhaltend DB-Operationen allgemein: read, write speziell: BOT, commit, abort

„gleichzeitige" Ausführung von TAs  bessere Ressourcen-Nutzung (Optimierung) einige TAs lesen oder schreiben Daten andere lasten die CPU aus  höherer Durchsatz  kürzere Antwortzeiten Gleichzeitigkeit (Nebenläufigkeit) birgt Gefahren!

typische Synchronisations-Probleme (1) Beispiel. [w/r-Konflikt (dirty read)] Zeit T1 T2 t1 read(K1) t2 write(K1 := K1 - 8000) t3 read(K1) t4 write(K1 := K1*1,04) t5 read(K2) t6 write(K2 := K2*1,04) t7 read(K2) t8 write(K2 := K2 + 8000)

typische Synchronisations-Probleme (2) Beispiel. [r/w-Konflikt (unrepeatable read)] Zeit T1 T2 t1 S := read(K1) t2 read(K1) t3 write(K1 := K1 - 8000) t4 read(K2) t5 write(K2 := K2 + 8000) t6 S := S+ read(K2) („Phantomproblem“)

typische Synchronisations-Probleme (3) Beispiel. [w/w-Konflikt (lost update)] Zeit T1 T2 t1 read(K1) t2 read(K1) t3 write(K1 := K1 - 8000) t4 write(K1 := K1+8000)

ACID-Paradigma Atomicity TAs werden ganz oder gar nicht durchgeführt Consistency TAs sind konsistent TAs hinterlassen konsistente DB-Zustände Isolation TAs „sehen“ einander nicht Durability erfolgreiche (commit) TAs werden durchgesetzt

Aufgabenverteilung Konsistenz und Isolation: Concurrency Control (Mehrbenutzer-Synchronisation) Atomarität und Dauerhaftigkeit: Logging & Recovery (Protokoll- und Wiederanlauf-Komponente)

Schedules Schedule: Zeitliche „Verzahnung“ der Operationen mehrerer TAs, interne Operationen-Reihenfolge jeder TA wird beibehalten. Beispiel: T1 : (r1(A), r1(C), w1(C)), T2 : (r2(A), r2(B), w2(B)), S : (r1(A), r2(A), r2(B), w2(B), r1(C), w1(C)) DB-Anfangszustand DB-Endzustand Schedule

„vernünftige“ Schedules ? seriell: eine TA nach der anderen idealtypisch („isoliert“,“konsistent“), aber langsam serialisierbar: Wirkung wie serieller Schedule nicht praktikabel (exponentieller Nachprüfungs-Aufwand) konfliktserialisierbar: azyklischer Konflikt-Graph praktikabel (polynomialer Nachprüfungs-Aufwand)

Konflikt-Serialisierbarkeit (1) Konfliktgraph G(S) von S Knoten: alle TAs Ti von S (gerichtete) Kanten: Pfeile von Ti nach Tj, falls A, op1(A)  Ti, op2(A)  Tj existieren wobei op1(A) zeitlich vor op2(A) liegt und (op1 = w oder op2 = w) ist G(S) azyklisch  S (konflikt)serialisierbar

Konflikt-Serialisierbarkeit (2) Beispiel. T1 : (r1(A), w1(B)), T2 : (w2(A)), T3 : (r3(A), r3(B)), S : (r1(A), w2(A), r3(A), r3(B), w1(B)) T1 T2 G(S): (zyklisch, S nicht konfliktserialisierbar) T3

Konflikt-Serialisierbarkeit (3) Beispiel. T1 : (r1(A), w1(B)), T2 : (w2(A)), T3 : (r3(A), r3(B)), S´: (r1(A), w2(A), r3(A), w1(B), r3(B)) T1 T2 G(S´): (azyklisch, S´ serialisierbar) T3

Sperrbasierte Synchronisation (1) Scheduler setzt temporäre DB-Obj-Sperren 2 Sperrmodi: S (shared), X (exclusive) TA darf lesen nach Erhalt einer S-Sperre schreiben nach Erhalt einer X-Sperre - S X Verträglichkeits-Matrix: S ja ja nein X ja nein nein

Sperrbasierte Synchronisation (2) Strenges 2-Phasen-Sperrprotokoll (Strict 2PL) TA darf nur lesen nach Erhalt einer S-Sperre TA darf nur schreiben nach Erhalt einer X-Sperre „streng“: TA behält alle Sperren bis commit/abort TAs, die keine Sperre erhalten  Warteschlange Strict 2PL  Serialisierbarkeit + weitere Vorzüge (u.a. Rücksetzbarkeit)

Sperrbasierte Synchronisation (3) Beispiel. [Deadlock (Verklemmung)] T1 : (X1(A), w1(A), S1(B), r1(B)), T2 : (X2(B), w2(B), S2(A), r2(A)), S : (X1(A), w1(A), X2(B), w2(B), S1(B), S2(A), ...) warten ! warten! 2 Strategien möglich 1. pessimistisch: Deadlock-Vermeidung 2. optimistisch: Deadlock-Erkennung und -Beseitigung

Deadlock-Erkennung und -Beseitigung Wartegraph W(S) von S Knoten: alle TAs Ti von S (gerichtete) Kanten: Pfeile von Ti nach Tj, falls Tj das DB-Obj A sperrt und Ti auf Gewährung einer Sperre auf A wartet periodische Untersuchung von W(S) auf Zyklen Zyklus entdeckt  eine TA „abschießen“

Fehlerklassifikation lokale „Fehler“ (relativ häufig) Anwendungsprogramm-Fehler, expliziter Abbruch (abort), systemgesteuerter Abbruch (z.B. Deadlock-Beseitigung) Fehler mit Hauptspeicherverlust (selten) z.B. Betriebssystem-Fehler, Hardwareausfall, Stromausfall Fehler mit Hintergrundspeicherverlust (sehr selten) z.B. bei „head crash“, Feuer/Erdbeben, Systemprogramm-Fehler (fehlerhafter Plattentreiber)

Seiten-Ersetzungs-Strategien „force“: am Ende einer TA (nach commit) geänderte Seiten sofort zurückschreiben garantiert Dauerhaftigkeit aber lange Antwortzeiten „no steal“: Seite nicht zurückschreiben, solange eine der schreibenden TAs aktiv (vor commit) ist gut für Atomarität aber schlechter Durchsatz

steal & no force ! steal: Seite P zurückschreiben, obwohl T noch ein DB-Obj auf P sperrt! . . . und wenn dann T abgebrochen wird (abort)? undo-Information (alter Wert von P) in die Log-Datei! no force: Von T geänderte Seite P (noch) nicht zurückschreiben, trotz T´s commit! . . . und wenn nun das System „abstürzt“? redo-Information für T beim commit in die Log-Datei!

Logging für jede DB- Änderung ein Eintrag in die Log-Datei sequentiell minimale Info (nur 's), viele Log-Sätze auf eine Log-Seite separater, sicherer Speicherort (Log-Puffer, Log-Archiv) Log-Datei: Liste von redo- und undo-Information <TAID,pageID,offset,length,beforeImage,afterImage> und weitere Kontroll-Information

Write-Ahead-Logging WAL-Protokoll alle Log-Sätze zu einer DB-Seite permanent speichern, bevor die DB-Seite zurückgeschrieben wird! ermöglicht undo nichtabgeschlossener TAs Atomarität alle Log-Sätze zu einer TA vor deren commit schreiben! ermöglicht redo abgeschlossener TAs Dauerhaftigkeit

Recovery Manager Einsatz local undo, global undo/redo: bei laufendem Betrieb: local undo bei lokalen Fehlern bei Wiederanlauf: global undo/redo nach Hauptspeicherverlust Rekonstruktion des jüngsten konsistenten DB-Zustands nach Hintergrundspeicherverlust local undo, global undo/redo: TAs ohne commit: zurücksetzen  Atomarität TAs mit commit: durchsetzen  Dauerhaftigkeit

Literatur [1] A. Hald, W. Nevermann: Datenbank-Engineering für Wirtschaftsinformatiker. Vieweg-Verlag [2] A. Kemper, A. Eickler: Datenbanksysteme. Oldenbourg [3] R. Ramakrishnan, J. Gehrke: Database Management Systems. McGraw-Hill http://www.cs.wisc.edu/~dbbook/ [4] G. Vossen: Datenmodelle, Datenbanksprachen und Datenbank-Management-Systeme. Oldenbourg