Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Transaktionen - Intro1 Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable.

Ähnliche Präsentationen


Präsentation zum Thema: "Transaktionen - Intro1 Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable."—  Präsentation transkript:

1 Transaktionen - Intro1 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.- Euro: 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,- Euro: b := b + 50; 6.Schreibe den neuen Kontostand in die Datenbasis: write(B, b);

2 Transaktionen - Intro2 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 / rollback: 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:

3 Transaktionen - Intro3 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 / rollback.

4 Transaktionen - Intro4 Eigenschaften von Transaktionen: ACID  Atomicity (Atomarität)  Alles oder nichts  Consistency  Konsistenter Zustand der DB  konsistenter Zustand  Isolation  Jede Transaktion hat die DB „für sich allein“  Durability (Dauerhaftigkeit)  Änderungen erfolgreicher Transaktionen dürfen nie verloren gehen

5 Transaktionen - Intro5 Transaktionsverwaltung in SQL  commit: Die in der Transaktion vollzogenen Änderungen werden – falls keine Konsistenzverletzung oder andere Probleme aufgedeckt werden – festgeschrieben.  rollback: 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.

6 Transaktionen - Intro6 Verschiedene Arten von Fehlern  Computer-Fehler Hardware- oder Softwarefehler während der Transaktionsausführung. Plattenausfall  Transaktions-Fehler Fehler durch Transaktions-Operation z.B. Division durch Null  Lokale Fehler Zustände, die ein Beenden der Transaktion bewirken z.B. Von der Transaktion benötigte Daten werden nicht gefunden.  Concurrency Fehler Abort der Transaktion aufgrund von Concurrency-Konflikten.  Physikalische Probleme & Katastrophen Stromausfall, Feuer, Wasser,...  trotz all dieser Fehler soll das DBMS dafür sorgen, dass Daten konsistent bleiben und dauerhaft gespeichert bleiben.

7 Transaktionen - Intro7 Eigenschaften von Transaktionen Abb.: Transaktionsbeginn und –ende relativ zu einem Systemabsturz Zeitachse T2T2 T1T1 t1t1 t2t2 t3t3 Absturz

8 Transaktionen - Intro8 Sofortiges Transaktionsende  Folgende SQL-Befehle bewirken ein sofortiges Transaktionsende (auch dann, wenn die Transaktion vorher aus vielen Anweisungen bestand)  Es wird ein Commit-Befehl automatisch generiert mit:  CREATE TABLE, CREATE INDEX, CREATE VIEW, CREATE TRIGGER  ALTER TABLE, ALTER INDEX, ALTER VIEW  DROP TABLE, DROP INDEX, DROP VIEW, DROP TRIGGER  GRANT, REVOKE

9 Transaktionen - Intro9 Transaktionsverwaltung in SQL Beispiel: (set autocommit off) begin insert into Vorlesungen(VorlNr, Titel, SWS, gelesenvon) values (5275, `Physik`, 3, 2141); insert into Professoren(PersNr, Name, Rang, Raum) values (2141, `Curie`, `C4`, 205); commit/ rollback

10 Transaktionen - Intro10 Check erst am Transaktions-Ende  DEFERRED-Clause verschiebt die Prüfung des Constraints ans Ende der Transaktion CREATE TABLE bsp ( zahl NUMBER, CONSTRAINT unq_num UNIQUE (zahl) INITIALLY DEFERRED DEFERRABLE);  Standardwert: INITIALLY IMMEDIATE Check des Constraints direkt nach Absetzen des SQL-Befehls  NOT DEFERRABLE -> Check lässt sich nicht ans Ende der Transakton verschieben, auch nicht mit Session/Transaktions-Einstellungen  SET CONSTRAINT ALL DEFERRED / IMMEDIATE in aktueller Transaktion alle Constraint-Prüfungen ans Ende schieben / sofort ausführen  ALTER SESSION SET CONSTRAINTS=DEFERRED Einstellung für gesamte Session

11 Transaktionen - Intro11 Savepoints savepoint: definiert Sicherungspunkt, auf den sich die (noch aktive) Transaktion zurücksetzen lässt. Das DBMS muss sich dazu alle bis zu diesem Zeitpunkt ausgeführten Änderungen an der Datenbasis "merken". Diese Änderungen dürfen aber noch nicht in der Datenbasis festgeschrieben werden, da die Transaktion durch ein abort immer noch gänzlich aufgegeben werden kann. insert into R values (5, 6); savepoint my_sp_1; insert into R values (7, 8); savepoint my_sp_2; insert into R values (9, 10); rollback to my_sp_1; insert into R values (11, 12); commit;

12 Transaktionen - Intro12 Zustandsübergangs-Diagramm für Transaktionen potentiellaktivwartend gescheitert aufgegeben wiederholbar abgeschlossen persistent einbringen verdrängen beenden inkarnieren abbrechen festschreiben neustarten abbrechen zurücksetzten


Herunterladen ppt "Transaktionen - Intro1 Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable."

Ähnliche Präsentationen


Google-Anzeigen