WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #5 Transaktionsverwaltung WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 „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 #6 © Bojan Milijaš, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 2 Einführung WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 3 Transaktionsbegriff WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 4 Beispiel: Bankanwendung WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 5 Beispiel: Bankanwendung (2) WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 6 Beispiel: Bankanwendung (3) WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 7 Anforderungen Synchronisation WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 8 Operationen auf der Transaktionsebene WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 9 Operationen auf der Transaktionsebene (2) WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 ... 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 10 Abschluss einer Transaktion WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 erfolgreich - COMMIT erfolglos - ABORT (explizit) oder irgendein Fehler (impliziter ABORT) BOT BOT BOT op1 op1 op1 ... ... ... opn opn opn COMMIT; ABORT; ~~ Fehler ~~ © Bojan Milijaš, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 11 Wichtig! WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 12 ACID Paradigma WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 13 Transaktionsverwaltung in SQL WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 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š, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 14 WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 © Bojan Milijaš, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 15 Fazit und Ausblick Vorlesung #6 WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Transaktionsbegriff wurde eingeführt und erläutert Transaktionsverwaltung besteht aus zwei großen Komponenten Recovery bzw. Fehlerbehandlung (Vorlesung #7) Mehrbenutzersynchronisation (Vorlesung #8, #9) © Bojan Milijaš, 10.11.2004 Vorlesung #5 - Transaktionsverwaltung 16 WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #5 Ende