Vorlesung 10

Werbung
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Vorlesung #10
Transaktionsverwaltung
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
„Fahrplan“
 Anforderungen an die Transaktionsverwaltung
 Behebung von Fehlersituationen (Recovery)
 Synchronisation
 Operationen auf der Transaktionsebe
 BOT (begin of transaction)
 COMMIT
 ABORT (auch ROLLBACK)
 Eigenschaften von Transaktionen (ACID Paradigma)
 Atomicity, Consistency, Isolation, Durability
 Transaktionsverwaltung in SQL
 Zustandsübergänge einer Transaktion
 Ausblick Vorlesung #12
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
2
Einführung
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
 Konzept der Transaktion – einer der größten
Beiträge der Datenbankforschung für andere
Informatikbereiche
 Transaktion - Bündelung von mehreren
Operationen, die in einem
Mehrbenutzersystem ohne unerwünschte
Einflüsse auf oder durch andere
Transaktionen als eine Einheit fehlerfrei
ausgeführt werden
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
3
Transaktionsbegriff
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
 Transaktion ist eine „Arbeitseinheit“
 Alle Teiloperationen einer Transaktion werden als
eine Einheit, voneinander ungetrennt und
ununterbrechbar ausgeführt
 Deshalb spricht man von der atomaren Ausführung
 Transaktion ist eine Folge von
Datenverarbeitungsbefehlen (Lesen, Verändern,
Einfügen und Löschen), die atomar ausgeführt wird
 Eine Transaktion überführt die Datenbank von einem
transaktionskonsistenten Zustand in den anderen
(nicht notwendigerweise unterschiedlichen)
transaktionskonsistenten Zustand
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
4
Beispiel: Bankanwendung
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Es werden 50 € von Konto A nach Konto B transferiert
1. Lese Kontostand A in die Variable a: read(A,a);
2. Reduziere den Kontostand um 50 €: a:=a-50;
3. Schreibe den neuen Zustand 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 €: b:=b+50;
6. Schreibe den neuen Kontostand in die Datenbasis:
write(B,b);
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
5
Beispiel:
Bankanwendung (2)

WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Wenn die Operationsfolge abgebrochen wäre,
könnten inkonsistente Zustände entstehen.
Beispiele:
 wenn das System nach dem Schritt 3 abstürzt, ist
der Kontostand A um 50 € vermindert, ohne dass
Konto B um 50 € jemals erhöht wurde
 wenn Konto B einem anderen Inhaber gehört
und das Abheben von 50 € zur Überschreitung
des Dispositionskredit beim Konto A führt,
müsste der gesamte Transfer rückgängig
gemacht werden
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
6
Beispiel:
Bankanwendung (3)

WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
In einer SQL-Datenbank sieht es eigentlich
so aus:
-- Transferiere 50 € von Konto A nach B
UPDATE Konto
SET Stand = Stand - 50
WHERE ID = 'A';
muss
--> Unterbrechung auf
atomar
ausgeführt
--> Kosten des Inhabers
werden
UPDATE Konto
SET Stand = Stand + 50
WHERE ID = 'B';
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
7
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Anforderungen

Synchronisation



sehr viele gleichzeitig nebenläufig ablaufende
Transaktionen müssen abgearbeitet werden
Konsistenzverletzungen durch unkontrollierte
Nebenläufigkeiten müssen ausgeschlossen
bleiben
Recovery


Abgeschlossene Transaktionen müssen auch
nach jedem denkbaren Fehler in ihrer Wirkung
erhalten bleiben und
nicht erfolgreich abgeschlossene Transaktionen
müssen vollständig zurückgesetzt werden
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
8
Operationen auf der
Transaktionsebene
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Aus der DBMS-Sicht gibt es nur zwei Operationen
 read() und write()
Zusätzlich Transaktionsoperationen:
 Begin of Transaction (BOT) – oft implizit, durch
die erste Operation angegeben
 Commit – Beendigung der Transaktionen. Alle
Änderungen an der Datenbasis werden dauerhaft in
die Datenbasis festgeschrieben.
 Abort bzw. Rollback – Selbstabbruch der
Transaktion. DBMS muss sicherstellen, dass die
Datenbank wieder in den Zustand vor
Transaktionsbeginn zurückgesetzt wird.
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
9
Operationen auf der
Transaktionsebene (2)
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
... zusätzlich gibt es bei weiterentwickelten
DBMS-Systemen für lange Transaktionen
zwei weitere Befehle
 define savepoint – Definition eines
Sicherungspunktes, auf den sich eine noch
aktive Transaktion zurücksetzen lassen
kann. DBMS „merkt“ sich alle Änderungen
bis zum Savepoint, darf sie aber nicht
commiten wegen möglichen Abort
 backup transaction – Rücksetzen der
Transaktion auf den letzten Savepoint
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
10
Abschluss einer Transaktion


WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
erfolgreich - COMMIT
erfolglos - ABORT (explizit) oder irgendein
Fehler (impliziter ABORT)
BOT
BOT
BOT
op1
op1
op1
...
...
...
opn
opn
opn
COMMIT;
ABORT;
~~ Fehler ~~
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
11
Wichtig!



WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Eine Transaktion führt die Datenbank aus einem
konsistenten Zustand in das andere konsistente
Zustand
Es wird entweder alles erfolgreich festgeschrieben
oder alles zurückgesetzt. In DBMS-Jargon: „alles
wird commited oder alles wird zurückgerollt komme was wolle“)
Während der Abarbeitung einer Transaktion darf es
vorübergehend einzelne Teiloperationen geben, die
die Konsistenz verletzen. Die Transaktion darf als
eine Einheit nicht die Konsistenz verletzen. Was
zählt ist die Transaktion als Ganzes, nicht einzelne
Teiloperationen.
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
12
ACID Paradigma




WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Atomicity – die Transaktion gilt als eine Einheit,
entweder werden alle Änderungen festgeschrieben
oder gar keine.
Consistency – eine Transaktion hinterlässt nach
Ihrer Beendigung immer einen konsistenten
Datenbankzustand. Sonst wird sie zurückgesetzt.
Isolation – nebenlaufende Transaktionen
beeinflussen sich nicht gegenseitig. Jede
Transaktion wird so ausgeführt, als wäre sie die
einzige in DBMS.
Durability – die Wirkung einer erfolgreich
abgeschlossener Transaktion bleibt dauerhaft in der
Datenbank erhalten, trotz aller möglichen Fehler.
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
13
Transaktionsverwaltung
in SQL
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
 In SQL-92 Standard gibt es kein BOT, Transaktionen
werden implizit mit der Ausführung der ersten
Anweisung begonnen
 COMMIT [WORK] – Commit
 ROLLBACK [WORK] – Abort
UPDATE Konto
SET Stand = Stand - 50
WHERE ID = 'A';
UPDATE Konto
SET Stand = Stand + 50
WHERE ID = 'B';
COMMIT;
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
14
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
15
Fazit und
Ausblick
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
 Transaktionsbegriff wurde eingeführt und
erläutert
 Transaktionsverwaltung besteht aus zwei
großen Komponenten
 Recovery bzw. Fehlerbehandlung (wird kurz
erwähnt, nächstes Semester vertieft)
 Mehrbenutzersynchronisation (Vorlesung #12)
© Bojan Milijaš, 02.12.2011
Vorlesung #10 - Transaktionsverwaltung
16
WS 2011/12
Datenbanksysteme
Mi 15:15 – 16:45
R 0.006
Vorlesung #10
Ende
Herunterladen