25
Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Embed Size (px)

Citation preview

Page 1: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Dr. Brigitte Mathiak

Kapitel 10

Transaktionsverwaltung

Page 2: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 2

Lernziele

• Begriff und Eigenschaften von Transaktionen

• Mehrbenutzer-Synchronisation Theorie der Serialisierbarkeit Zwei-Phasen-Sperrprotokolle Deadlocks und deren Vermeidung

Page 3: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 3

Transaktionsverwaltung

Beispiel einer typischen Transaktion in einer Bankanwendung:

1. Lese den Kontostand von A in die Variable a : read(A,a);

2. Reduziere den Kontostand um 50 EUR: a:= a – 50;

3. Schreibe den neuen Kontostand in die Datenbasis: write(A,a);

4. Lese den Kontostand von B in die Variable b: read(B,b);

5. Erhöhe den Kontostand um 50 EUR: b := b + 50;

6. Schreibe den neuen Kontostand in die Datenbasis: write(B, b);

Page 4: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 4

Fehler bei unkontrolliertem Mehrbenutzerbetrieb

Verlorengegangene Änderungen (lost update)

write(A,a2)

a2 := a2 * 1.03

read(A,a2)

T2

write(B,b1)

b1 := b1 + 300

read(B,b1)

write(A,a1)

a1 := a1 – 300

read(A,a1)

T1

9.

8.

7.

6.

5.

4.

3.

2.

1.

Schritt A B

200 300

206

-100 300

600

Überweisung Zinsen

Page 5: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 5

Operationen auf Transaktions-Ebene

begin of transaction (BOT): Mit diesem Befehl wird der Beginn einer eine Transaktion darstellende Befehlsfolge gekennzeichnet.

commit: Hierdurch wird die Beendigung der Transaktion eingeleitet. Alle Änderungen der Datenbasis werden durch diesen Befehl festgeschrieben, d.h. sie werden dauerhaft in die Datenbank eingebaut.

abort: Dieser Befehl führt zu einem Selbstabbruch der Transaktion. Das Datenbanksystem muss sicherstellen, dass die Datenbasis wieder in den Zustand zurückgesetzt wird, der vor Beginn der Transaktionsausführung existierte.

In den klassischen Transaktionssystemen:

Page 6: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 6

Abschluss einer Transaktion

Für den Abschluss einer Transaktion gibt es zwei Möglichkeiten:

1. Den erfolgreichen Abschluss durch ein commit.

2. Den erfolglosen Abschluss durch ein abort.

Page 7: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 7

Eigenschaften von Transaktionen: ACID

Atomicity (Atomarität)Alles oder nichts !

Consistency Konsistenter DB-Zustand muss in konsistenten Zustand übergehen !

Isolation Jede Transaktion hat die DB „für sich allein“

Durability (Dauerhaftigkeit) Änderungen erfolgreicher Transaktionen dürfen nie verloren gehen

Page 8: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 8

Transaktionsverwaltung in SQL

commit work

Die in der Transaktion vollzogenen Änderungen werden – falls keine

Konsistenzverletzung oder andere Probleme aufgedeckt werden –

festgeschrieben.

Schlüsselwort work ist optional

rollback work

Alle Änderungen sollen zurückgesetzt werden.

Anders als der commit-Befehl muss das DBMS die „erfolgreiche“

Ausführung eines rollback-Befehls immer garantieren können.

Page 9: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 9

Transaktionsverwaltung in SQL

Beispielsequenz auf Basis des Universitätsschemas:

INSERT INTO Vorlesungen

values (5275, 'Kernphysik', 3, 2141);

INSERT INTO Professoren

values (2141, 'Meitner', 'C4', 205);

COMMIT

Page 10: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 10

Fehler bei unkontrolliertem Mehrbenutzerbetrieb

Verlorengegangene Änderungen (lost update)

write(A,a2)

a2 := a2 * 1.03

read(A,a2)

T2

write(B,b1)

b1 := b1 + 300

read(B,b1)

write(A,a1)

a1 := a1 – 300

read(A,a1)

T1

9.

8.

7.

6.

5.

4.

3.

2.

1.

Schritt A B

200 300

206

-100 300

600

Überweisung Zinsen

Page 11: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 11

Fehler bei unkontrolliertem Mehrbenutzerbetrieb II

Abhängigkeit von nicht freigegebenen Änderungen

read(A,a1)

write(A,a2)

a2 := a2 * 1.03

read(A,a2)

T2

abort

. . .

read(B,b1)

write(A,a1)

a1 := a1 – 300

T1

9.

8.

7.

6.

5.

4.

3.

2.

1.

Schritt

Page 12: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 12

Fehler bei unkontrolliertem Mehrbenutzerbetrieb III

Phantomproblem

T1 T2

select sum(KontoStand)

from Konten

insert into Konten

values (C,1000,...)

select sum(Kontostand)

from Konten

Page 13: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 13

Der Datenbank-Scheduler

Transaktions-Manager TM

Scheduler

Recovery-Manager

Puffer-Manager

Daten-Manager

T2 T3T1 Tn......

Datenbank

Page 14: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 14

Aufgabe des Schedulers

Reihung der Operationen verschiedener Transaktionen, so dass die einzelnen Transaktionen

- Bis zuletzt ohne kaskadierendes Rollback rücksetzbar sind (Atomicity)

- Keine ungültigen Datenzustände erzeugen können (Consistency)

- Die Parallelität zu anderen Transaktionen nicht bemerken (Isolation)

- Committete Änderungen dauerhaft vorliegen (Durability)

Verschiedene Ansätze möglich:

- sperrbasierte Synchronisation (am meisten benutzt)

- Zeitstempel-basierte Synchronisation

- optimistische Synchronisation (bei vorwiegend lesenden Zugriffen)

Pessimistische Synchronisation

Page 15: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 15

Sperrbasierte Synchronisation

Sichert Serialisierbarkeit zu

Zwei Sperrmodi

S (shared, read lock, Lesesperre):

X (exclusive, write lock, Schreibsperre):

Verträglichkeitsmatrix (auch Kompatibilitätsmatrix genannt)

NL S X

S -

X - -

Page 16: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 16

Zwei-Phasen-Sperrprotokoll (2PL): Definition

Jedes Objekt, das von einer Transaktion benutzt werden soll, muss vorher entsprechend gesperrt werden.

Eine Transaktion fordert eine Sperre, die sie schon besitzt, nicht erneut an.

Eine Transaktion muss die Sperren anderer Transaktionen auf dem von ihr benötigten Objekt gemäß der Verträglichkeitstabelle beachten. Wenn die Sperre nicht gewährt werden kann, wird die Transaktion in eine entsprechende Warteschlange eingereiht – bis die Sperre gewährt werden kann.

Jede Transaktion durchläuft zwei Phasen:

Eine Wachstumsphase, in der sie Sperren anfordern, aber keine freigeben darf und

eine Schrumpfphase, in der sie ihre bisher erworbenen Sperren freigibt, aber keine weiteren anfordern darf.

Bei EOT (Transaktionsende) muss eine Transaktion alle ihre Sperren zurückgeben.

Page 17: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 17

Zwei-Phasen Sperrprotokoll: Grafik

#Sperren

ZeitWachstum Schrumpfung

Page 18: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 18

Verzahnung zweier TAs gemäß 2PL

T1 modifiziert nacheinander die Datenobjekte A und B

(z.B. eine Überweisung)

T2 liest nacheinander dieselben Datenobjekte A und B

(z.B. zur Aufsummierung der beiden Kontostände).

Page 19: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 19

Verzahnung zweier TAs gemäß 2PL

Schritt T1 T2 Bemerkung

1. BOT

2. lockX(A)

3. read(A)

4. write(A)

5. BOT

6. lockS(A) T2 muss warten

7. lockX(B)

8. read(B)

9. unlockX(A) T2 wecken

10. read(A)

11. lockS(B) T2 muss warten

12. write(B)

13. unlockX(B) T2 wecken

14. read(B)

15. commit

16. unlockS(A)

17. unlockS(B)

18. commit

Page 20: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 20

Strenges Zwei-Phasen Sperrprotokoll

2PL schließt kaskadierendes Rücksetzen nicht ausErweiterung zum strengen 2PL:

- alle Sperren werden bis EOT gehalten- damit ist kaskadierendes Rücksetzen ausgeschlossen- Verhindert allerdings keine Deadlocks

#Sperren

Zeit

Wachstumsphase

EOT

Page 21: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 21

Verklemmungen (Deadlocks)

Ein verklemmter Schedule

Schritt T1 T2 Bemerkung

1. BOT

2. lockX(A)

3. BOT

4. lockS(B)

5. read(B)

6. read(A)

7. write(A)

8. lockX(B) T1 muss warten auf T2

9. lockS(A) T2 muss warten auf T1

10. ... ... Deadlock

Page 22: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 22

Verklemmungen

a: können entdeckt und dann aufgelöst

b: oder gleich vermieden werden.

Beides ist u.U. teuer. Mögliche Techniken:

Ad a:

1. Time-Out (Transaktionen, die zu lange warten, werden

abortet)

2. Zyklenerkennung (Es wird parallel analysiert wer auf wen

wartet

und dann intelligent und gezielt abortet)

Ad b:

3. Preclaiming (Transaktion setzen alle Locks gleich Anfang)

4. Zeitstempel (Man wartet nicht auf jüngere Transaktionen)

Page 23: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Deadlocks sind fatal für die Performance

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 23

Ressourcen

#Transaktionen pro Zeit

Umso mehr Transaktionen pro Zeit stattfinden umso höher ist die

Wahrscheinlichkeit, dass zwei sich gegenseitig locken

Umso aufwändiger ist die Deadlockbehandlung

Umso langsamer wird das System

-> bis zum Stillstand (ungraceful failure)

Page 24: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Transaktionspuffer

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 24

Ressourcen

#Transaktionen pro Zeit

Es werden nicht mehr Transaktionen gleichzeitig ausgeführt als das

System verkraften kann.

Der Preis sind verschiedene Limitierungen:

• Bei Überlast werden zunächst Transaktionen später begonnen,

• dann werden Transaktionen direkt abgewiesen

• Transaktionen, die zu lange dauern, werden abgebrochen

Page 25: Dr. Brigitte Mathiak Kapitel 10 Transaktionsverwaltung

Fazit

Bei Mehrbenutzerbetrieb kann es zu Fehlern kommen

Um das zu vermeiden gibt es Transaktionen

Transaktionen gehorchen dem ACID Prinzip

Diese werden von der Datenbank mit Hilfe von Locks realisiert

Locks können zu Deadlocks führen

Diese müssen erst aufgelöst werden (z.B. mit Zeitstempeln)

Trotzdem ist das schlecht für die Performanz -> die meisten Datenbanken sind daher sehr konservativ

Datenbanken, WS/SS 12 Kapitel 10: Transaktionsverwaltung 25