Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Transaktionsverwaltung

Ähnliche Präsentationen


Präsentation zum Thema: "Transaktionsverwaltung"—  Präsentation transkript:

1 Transaktionsverwaltung
Beispiel einer typischen Transaktion in einer Bankanwendung: Lese den Kontostand von A in die Variable a: read(A,a); Reduziere den Kontostand um 50.- Euro: a:= a – 50; Schreibe den neuen Kontostand in die Datenbasis: write(A,a); Lese den Kontostand von B in die Variable b: read(B,b); Erhöhe den Kontostand um 50,- Euro: b := b + 50; Schreibe den neuen Kontostand in die Datenbasis: write(B, b); Transaktionen - Intro

2 Operationen auf Transaktions-Ebene
In den klassischen Transaktionssystemen: 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. Transaktionen - Intro

3 Abschluss einer Transaktion
Für den Abschluss einer Transaktion gibt es zwei Möglichkeiten: Den erfolgreichen Abschluss durch ein commit. Den erfolglosen Abschluss durch ein abort / rollback. Transaktionen - Intro

4 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 Transaktionen - Intro

5 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. Transaktionen - Intro

6 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. Transaktionen - Intro

7 Eigenschaften von Transaktionen
Absturz T1 T2 t3 t1 t2 Zeitachse Abb.: Transaktionsbeginn und –ende relativ zu einem Systemabsturz Transaktionen - Intro

8 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 Transaktionen - Intro

9 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 Transaktionen - Intro

10 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 Transaktionen - Intro

11 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; Transaktionen - Intro

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


Herunterladen ppt "Transaktionsverwaltung"

Ähnliche Präsentationen


Google-Anzeigen