Vorlesung 11

Werbung
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
Vorlesung #11
Transaktionsverwaltung
„Fahrplan“
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
 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š,
07/14.12.2012
Einführung
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
 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š,
07/14.12.2012
Transaktionsbegriff
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
 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š,
07/14.12.2012
Beispiel: Bankanwendung
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
Beispiel:
Bankanwendung (2)

WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
Beispiel:
Bankanwendung (3)

WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
Anforderungen

Synchronisation



WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
Operationen auf der
Transaktionsebene
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
Operationen auf der
Transaktionsebene (2)
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
... 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š,
07/14.12.2012
Abschluss einer Transaktion


WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
erfolgreich - COMMIT
erfolglos - ABORT (explizit) oder irgendein
Fehler (impliziter ABORT)
BOT
BOT
BOT
op1
op1
op1
...
...
...
opn
opn
opn
COMMIT;
ABORT;
~~ Fehler ~~
© Bojan Milijaš,
07/14.12.2012
Wichtig!



WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
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š,
07/14.12.2012
WS 2012/13
Datenbanksysteme
Mi 15:15 – 16:45
R 2.007
Vorlesung #11
Ende
Herunterladen