X - Michael Gamer

Werbung
Datenbanken
Mehrbenutzerbetrieb
Michael Gamer / 2015
Mehrbenutzerbetrieb
Michael Gamer
2
getrennte Dateien
Datenbank
Kunden
oft unkritisch
Lieferanten
Michael Gamer
3
gleiche Dateien
Datenbank
Kunden
kann kritisch sein
Lieferanten
Michael Gamer
4
gleicher Datensatz
Datenbank
Kunden
Müller
sollte unkritisch sein
Maier
Schulze
Michael Gamer
kritisch!
5
Mehrbenutzerbetrieb
Heutige Datenbanken werden meist von mehreren
Anwendern (gleichzeitig) genutzt. Dies erzeugt
unterschiedliche Probleme
‣ gleichzeitiger Zugriff mehrerer Nutzer auf eine Datei
‣ gleichzeitiger Zugriff auf einen Datensatz in der Datei
Auswirkungen können sein
‣ Inkonsistenzen im Datenbestand
‣ Widersprüchliche Anforderungen an das DBMS
Zur Behandlung derartiger Probleme wird der Begriff der
Transaktion eingeführt
Michael Gamer
6
Transaktionen
Zur Beschreibung und Lösung derartiger Probleme
verwendet man den Transaktionsbegriff. Nach
Kemper versteht man unter einer Transaktion:
DieBündelungmehrererDatenbankopera5onen
dieineinemMehrbenutzersystemohne
unerwünschteEinflüßedurchandere
Transak5onenalsEinheitfehlerfrei
durchgeführtwerdensollen
Michael Gamer
7
Beispiel: Transaktion
Überweisung eines Geldbetrags (100€) von Konto A
auf Konto B. Hierzu sind folgende Schritte notwendig:
‣ Lese Kontostand von Konto A: lese(KA,A)
‣ Vermindere den Betrag um 100€: betrag:=KA-100
‣ Schreibe den neuen Kontostand auf Konto A:
schreibe(betrag,A)
‣ Lese Kontostand Konto B: lese(KB,B)
‣ Erhöhe den Betrag um 100: betrag = KB+100
‣ Schreibe neuen Kontostand auf Konto B:
schreibe(betrag,B)
Michael Gamer
8
Zeitliche Abfolge
Atomarer Vorgang
Betrag
erhöhen
Betrag
schreiben
Konto B lesen
Konto A lesen
Betrag
vermindern
Betrag
schreiben
Zeit
Im Fehlerfall müssen Transaktionen revidierbar sein!
Michael Gamer
9
Operationen auf Transaktionsebene
Eine Transaktion besteht aus einer Folge elementarer Operationen
(Lese- und Schreiboperationen). Zur Transaktionssteuerung dienen:
‣ BOT (Begin of Transaction)
• Stellt den Anfang einer neuen Transaktion dar
‣ commit
• Beendet eine Transaktion
• Änderungen an der Datenbasis werden festgeschrieben
‣ abort
• Führt zum Transaktionsabbruch
• Das DBMS stellt sicher, daß der Zustand vor BOT hergestellt
wird
Michael Gamer
10
Weitere Möglichkeiten der Transaktionssteuerung
In neueren DBMS auch Befehle die für umfangreichere
Transaktionen wichtig sind
‣ define savepoint Sicherungspunkt, auf den sich die aktuelle
Transaktion zurücksetzen läßt
• Das DBMS muß alle Aktivitäten bis zu diesem Punkt
protokollieren
• Änderungen werden nicht in die Datenbasis geschrieben
• Nach einem abort werden die Änderungen verworfen
‣ backup transaction setzt die aktuelle Transaktion auf den
jüngsten (aktiven) Sicherungspunkt zurück
‣ Diese Befehle stellen hohe Anforderungen an die
Speicherkapazität des Datenbanksystems
Michael Gamer
11
Eigenschaften von Transaktionen
Transaktionseigenschaften werden im ACID-Paradigma zusammengefaßt:
‣ Atomicity
• Transaktionen sind die kleinste nicht mehr zerlegbare Einheit
‣ Consistency
• Eine Transaktion hinterläßt einen konsistenten Datenbestand
• Zwischenzustände beim Abarbeiten einer Transaktion können
inkonsistent sein
‣ Isolation
• nebenläufige Transaktionen beeinflussen sich nicht
‣ Durability
• Änderungen einer abgeschlossenen Transaktion sind dauerhaft
• Abgeschlossene Transaktionen können nur mit einer
kompensierenden Transaktion aufgehoben werden
Michael Gamer
12
Transaktionsprotokolle
Datenbankänderungen durch Transaktionen werden
mit Hilfe von Transaktionsprotokollen aufgezeichnet
‣ Für jeden Transaktionsschritt erfolgt ein separater
Eintrag in das Protokoll
‣ Bei Fehlern während des Datenbankbetriebs
kann die Datenbank so vollständig
wiederhergestellt werden.
‣ Transaktionsprotokolle werden oft (automatisiert)
„an einem sicheren Ort“ aufbewahrt
Michael Gamer
13
Beispiel
Absturz
Transaktion 2 wird
rückgängig gemacht,
Transaktion 1 normal
abgeschlossen
Transaktion 1
Transaktion 2
Zeit
Michael Gamer
14
Zustandsübergänge
Mögliche Zustände einer Transaktion
‣ potentiell
• Eine codierte Transaktion kann in den Zustand aktiv
wechseln
‣ aktiv
• Transaktion ist aktiv
• in Konkurrenz mit anderen aktiven Transaktionen.
Konkurrenz um z.B.
Michael Gamer
๏
Speicher
๏
Rechnerkerne
๏
Drucker
15
Zustandsübergänge
wartend
‣ Die Transaktionsverwaltung kann Transaktionen in einen
Wartezustand versetzen (Grund z.B. Überlast, fehlende
Betriebsmittel...)
‣ wartende Transaktionen werden (nach und nach) wieder
aktiviert
abgeschlossen
‣ Transaktion wurde durch den commit Befehl
abgeschlossen
‣ Die Wirkung der Transaktion wird nicht sofort in der
Datenbank festgeschrieben, zuvor Prüfung auf verletzte
Konsistenzbedingungen
Michael Gamer
16
Zustandsübergänge
persistent
‣ Wirkung der Transaktion wurde in den Datenbestand
geschrieben
gescheitert
‣ Transaktion konnte nicht abgeschlossen werden
wiederholbar
‣ Bei wiederholbaren Transaktionen werden vor Start der
Wiederholung die Wirkungen auf die Datenbasis
zurückgesetzt
aufgegeben
‣ Zurücksetzung der Wirkungen der Transaktion und versetzen
der Transaktion in den Endzustand aufgegeben
Michael Gamer
17
Zustandsübergangsdiagramm
potentiell
Inkarnation
aktivieren
beenden
aktiv
wartend
verdrängen
abgeschlossen
neustarten
abbrechen
festschreiben
wiederholbar
erfolglos
zurücksetzen
persistent
abbrechen
aufgegeben
in Anlehnung an Kemper
Michael Gamer
18
Serialisierbarkeit
Aus der Forderung des ACID-Prinzips der Isoliertheit
einer Transaktion leitet sich die Anforderung der
Serialisierbarkeit von Transaktionen ab:
‣ Das Ergebnis zweier Transaktionen T1 und T2 auf
einen Datenbestand soll identisch sein,
unabhängig davon, ob die Transaktionen
gleichzeitig under hintereinander ausgeführt
werden
Michael Gamer
19
Serialisierbarkeit
Die Synchronisation von Transaktionen wird mit dem
Begriff serialisierbar beschrieben.
Dazu wird eine Menge von Transaktionen betrachtet die
(gleichzeitig) und zum Teil parallel laufen
Ein System parallel ablaufender Transaktionen heißt
serialisierbar, wenn das Ergebnis der Transaktionen äquivalent
zu einer seriellen Ausführung der Transaktionen ist
Michael Gamer
20
Beispiel
T1 : Transaktion 1
T2 : Transaktion 2
x, y, z… Datenobjekte
Operationen
r1(x):
lese x
mod1(x) ändere(x)
w2(x): schreibe x
Operationen
r2(x):
lese x
mod2(x) ändere(x)
w2(x): schreibe x
T1 : r1(x),mod1(x),w1(x)
T2 : r2(x),mod2(x),w2(x),r2(y),mod2(y),w2(y)
Michael Gamer
21
Schedules (Abläufe)
Festgelegte, geordnete Abläufe von
Datenbankoperationen (Transaktionen) werden als
Schedules bezeichnet
‣ Schedules heißen seriell, wenn die Transaktionen
hintereinander ausgeführt werden
‣ Schedules heißen serialisierbar, wenn das
Gesamtergebnis äquivalent zu einem seriellen
Ergebnis ist
Michael Gamer
22
Beispiel seriell, serialisierbar
S2
S1
T1
T1
1
r1(x)
1
2
w1(x)
2
3
r2(x)
3
4
w2(x)
4
seriell
Michael Gamer
T2
T2
r1(x)
r2(y)
w1(x)
w2(y)
serialisierbar
23
Konflikte
Datenbankoperationen stehen in Konflikt, genau
dann, wenn:
‣ sie gehören zu unterschiedlichen Transaktionen
‣ sie greifen auf das selbe Datenobjekt zu
‣ mindestens ein Zugriff erfolgt schreibend
Michael Gamer
T1
T2
1
r1(x)
r2(y)
O.K.
2
r1(x)
w2(x)
Konflikt
3
w2(x)
w2(y)
O.K.
24
Konfliktäquivalenz
Zwei Abläufe S1 und S2 heißen konfliktäquivalent,
genau dann wenn,
‣ die Reihenfolge aller in Konflikt stehenden
Aktionen ist in beiden Abläufen gleich
Michael Gamer
25
Beispiel 1
Transaktionen:
Schedules:
T1: r(x), w(x), r(y), w(y)
S1: r1(x), w1(x), r1(y), w1(y), r2(x), w2(x)
T2: r(x), w(x)
S2: r1(x), r2(x), w1(x), r1(y), w2(x), w1(y)
S3: r1(x), w1(x), r2(x), w2(x), r1(y), w1(y)
Die TransaktionenS1 und S2 sind nicht
konfliktäquivalent, da die Reihenfolge der in
Konflikt stehenden Schreiboperationen nicht
identisch ist.
Michael Gamer
26
Beispiel 2
S1
S2
1
r1(x)
r1(x)
2
w1(x)
r2(x)
3
r1(y)
w1(x)
4
w1(y)
r1(y)
5
r2(x)
w2(x)
6
w2(x)
w1(y)
Michael Gamer
Konflikte
Die TransaktionenS1
und S2 sind nicht
konfliktäquivalent, da
die Reihenfolge der in
Konflikt stehenden
Schreiboperationen
nicht identisch ist.
27
Konfliktgraphen
Sei S eine Menge von Schedules. Dann ist durch C(S),
eine Reaktion auf SxS definiert:
‣ C(S):= {(p,q) |
• (p und q stehen in Konflikt) &
• (p steht in S vor q) &
• p,q gehören nicht zu einer abgebrochenen
Transaktion}
‣ Das Paar (p,q)∈C(S) kann als Kante in einem
Graphen mit der Knotenmenge S interpretiert werden
‣ Der so entstandene Graph heißt Konfliktgraph von S
Michael Gamer
28
Aussagen über Konfliktgraphen
Für eine gegeben Menge von Transaktionen S sei
G(S) der Konfliktgraph von C(S). Dann gilt
Ein Ablauf in S ist genau dann serialisierbar, wenn der
zugehörige Konfliktgraph keinen Zyklen enthält.
Michael Gamer
29
Probleme im Mehrbenutzerbetrieb
Lost Update Problem
‣ Ursache: zwei Transaktionen greifen gleichzeitig
auf denselben Datensatz zu und aktualisieren zu
unterschiedlichen Zeitpunkten.
‣ Das Problem tritt in der Regel im
Mehrbenutzerbetrieb auf
‣ ggf. Kollision mit Benutzerrechten möglich
Michael Gamer
30
Lost Update Problem
commit
Wohnort=“Bonn“
Wohnort auslesen
Transaktion 2
commit
Wohnort=“Berlin“
Wohnort auslesen
Michael Gamer
Transaktion 1
31
Das „Dirty Read“ Problem
Sollte eine Transaktion Daten lesen, die von einer
anderen Transaktion geändert, aber nicht korrekt
abgeschlossen wurde, so kommt es zum sogenannten
„Dirty Read“
Die Transaktion nimmt dabei Änderungen an Daten vor,
die inkonsistent oder sogar nicht mehr vorhanden sind.
Lösung:
‣ Die Datenbank (bzw. das DBMS) darf nur konsistente
Daten zurückgeben
‣ Solange Daten bearbeitet werden, darf keine andere
Transaktion auf diese zugreifen
Michael Gamer
32
Dirty Read
Transaktion 1
Transaktion 2
Lese Summe
(Summe = 10000)
Summe = Summe -5000
Update Data
Lese Summe
(Summe = 5000)
⚡Crash⚡
Rollback
Lese Summe
(Summe = 0)
Michael Gamer
Summe = Summe -5000
Update Data
33
Das Phantomproblem
Das sogenannte Phantomproblem tritt auf, wenn
während der Abarbeitung einer Transaktion eine
andere Transaktion einen neuen Datensatz in die
Datenbank einfügt
Transaktion 1
Transaktion 2
Berechne Summe aller Konten
Einfügen neues Konto
Kontostand = 1000
Berechne Summe aller Konten
Michael Gamer
34
Nonrepeatable Read
Liest eine Transaktion mehrmals den gleichen
Datensatz aus und werden dabei zwischenzeitlich
Daten an diesem Datensatz geändert führen die
Lesevorgänge zu inkonsistenten Daten.
‣ Solche Probleme können im Mehrbenutzerbetrieb
immer auftreten
‣ Die Ursache liegt nicht allein in der Struktur von
Transaktionen oder der Datenbankstruktur
Michael Gamer
35
Sperrmechanismen
Zur Vermeidung der erwähnten Probleme kommen
verschiedene Sperrmechanismen für Datenbanken zur
Anwendung
‣ Sperrung auf Datenbankebene
• Wirkung: die gesamte Datenbank ist für alle anderen
Nutzer gesperrt
• Vorteil: Einfach zu realisieren
• Nachteil: Mehrbenutzerbetrieb unter Umständen kaum
noch möglich.
• Sinnvoll, falls extrem kritische Operationen
durchgeführt werden müssen (z.B. strukturelle
Anpassungen an der Datenbank)
Michael Gamer
36
Sperrmechanismen
Sperren auf Tabellenebene
‣ Sperren einer einzelnen Tabelle der Datenbank
‣ Transaktionen können nur dann gleichzeitig
ablaufen, wenn Sie nicht auf die gleiche
(gesperrte) Tabelle zugreifen müssen
‣ Nachteil: unter Umständen sind große Teile der
Datenbasis nicht zugänglich, falls „zentrale“
Tabellen gesperrt werden
‣ Vorteil: Einfach zu realisieren
Michael Gamer
37
Sperrmechanismen
Sperren auf Seitenebene (Views)
‣ Wirkung: Sperrt eine „Seite“ des durch das DBMS
verwalteten Datenbanksystems (in der Regel ein
Block von 2n kBytes)
‣ Vorteil: einfach zu realisieren
‣ Sperre wirkt „feiner“ als das Sperren einer ganzen
Tabelle
Michael Gamer
38
Sperrmechanismen
Sperren auf Datensatzebene
‣ Wirkung: sperrte genau den Datensatz, auf den eine
Transaktion zugreift
‣ Transaktionen können ablaufen, sofern diese nicht gleichzeitig
auf ein und denselben Datensatz zugreifen
‣ Nachteil: höherer Verwaltungsaufwand für das DBMS
Sperren auf Feldebene
‣ Sperrt lediglich das Datensatzfeld, welches von der
Transaktion geändert wird.
‣ Vorteil: sehr flexibel
‣ Nachteil: hoher Verwaltungsaufwand (wird in der Praxis
faktisch nicht eingesetzt)
Michael Gamer
39
Sperrtypen
Für das Sperren von Datenbeständen gibt es
unterschiedliche Strategien
‣ binäre Sperren
• besitzen zwei Zustände (offen und gesperrt)
• Nachteil: Bei gesperrten Daten ist selbst das
Lesen nicht mehr möglich, solange die Daten
von einer Transaktion gesperrt werden
Michael Gamer
40
Sperrtypen
‣ exklusive/nichtexklusive Sperren
• Derartige Sperren sind mit unterschiedlichen
Rechten versehen
• exklusive Sperre (lockX: lock exclusive)
๏
Wirkung wie eine binäre Sperre im Status gesperrt
• nicht exklusive Sperre (lockS: lock shared)
๏
lediglich Schreibzugriffe sind gesperrt
๏
das Objekt kann jedoch gelesen werden
• Problem derartiger Sperrtypen: Es können
Deadlocks auftreten
Michael Gamer
41
Deadlockproblem
Transak'on1
Transak'on2
Bemerkung
BOT
lockX(A)
BOT
lockS(B)
read(A)
read(B)
write(A)
⚡T1 wartet auf T2⚡
lockX(B)
lockS(A)
Michael Gamer
⚡T2 wartet auf T1⚡
42
Verträglichkeit von Sperren
Die Verträglichkeit der unterschiedlichen Sperrmodi
wird durch die Verträglichkeitsmatrix (auch
Kompatibilitätsmatrix) geregelt
NL
S
X
S
✓
✓
✖
X
✓
✖
✖
S: Shared, X: Exklusive, NL: offen (no lock)
Michael Gamer
43
Zwei Phasen Sperrprotokoll
Die Serialisierbarkeit von Transaktionen ist durch das Zwei-PhasenSperrprotokoll (2PL) gewährleistet:
‣ Jedes Objekt, das von einer Transaktion verwendet werden soll
muß zuvor gesperrt werden.
‣ Eine Transaktion fordert Sperren, die sie bereits besitzt nicht
nochmals an.
‣ Transaktionen beachten Sperren anderer Transaktionen gemäß
der Verträglichkeitstabelle
‣ Jede Transaktion durchläuft zwei Phasen
• Wachstumsphase: Anfordern von Sperren
• Schrumpfungsphase: Sperren werden freigegeben und keine
weiteren angefordert
‣ Am Ende einer Transaktion gibt diese alle ihre Sperren wieder frei
Michael Gamer
44
Herunterladen