Transaktionen Dr. Heidrun Bethge Datenbanken II.

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 15 Verteilte Datenbanken
Advertisements

Object Relational Mapping
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Granularity of Locks and Degrees of Consistency in a Shared Data Base
C Tutorium – Semaphoren –
Transaktionsverwaltung
Transaktionsverwaltung
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
KarczewskiDatenbanken II1 Objekt-Relationale (OR) Datenbanken Übersicht Einführung: Objekt-relationale Erweiterungen von SQL (ORSQL) Objekte und Tabellen.
Objektorientierte Datenbanken
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Transaktionen in verteilten Datenbanken
Datenbanksysteme für FÜ WS 2004/2005 Transaktionen 1 Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz.
Datenintegrität Referentielle Integrität create table
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
Kapitel 13: Mehrbenutzersynchronisation
Kapitel 14: Recovery Oliver Vornberger
1 Kapitel 12: Transaktionsverwaltung Oliver Vornberger Fachbereich Mathematik/Informatik Universität Osnabrück Osnabrück
1 Kapitel 12: Transaktionsverwaltung. 2 Transaktion Bündelung mehrerer Datenbankoperationen Mehrbenutzersynchronisation Recovery.
15.1 Synchronisation nebenläufiger Prozesse
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern© Erhard Künzel.
Datenbanken 10: Einfügen, Ändern, Löschen
Synchronisation paralleler Transaktionen AIFB SS Synchronisationsverfahren 4.4 Synchronisationsverfahren (1/18) Sperrmodi und Sperrobjekte Sperrprotokoll.
Einige Begriffe zum Anfang.... Transaktionsprozedur: Folge primitiver Operationen als Einheit der Konsistenz und der Robustheit. Transaktion (TA): Ausführung.
4.4.2 Sperrverfahren (9/18) Regeln für das Setzen von Sperren
Recovery AIFB SS (1/8) Sicherungspunkte (Checkpoints) (1/8) (1) Transaktions-Orientierte Sicherungspunkte Transaction-Oriented Checkpoint.
Ausführungsmodell Zustandsübergang einer Transaktion aus Nutzersicht:
Modellierung von Transaktionen Zur Formalisierung der ACID-Garantien muss Verhalten von Transaktionen modelliert werden. Folge aus der Forderung nach lokaler.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
Betriebliche Informationssysteme Prof. Dr. Michael Löwe
Parallelität, Synchronisation
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Prof. Dr. F. Mücklich, Dipl.-Ing. C. Gachot Organisatorisches: 15 min
Mehrbenutzersynchronisation
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #6 Fehlerbehandlung.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #10 Transaktionsverwaltung.
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #12 Mehrbenutzersynchronisation.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #7 Mehrbenutzersynchronisation (Teil 1)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #12 Mehrbenutzersynchronisation.
Transaktion Huang Zhenhao FU Shuai.
Vorlesung #12 Mehrbenutzersynchronisation
Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung Prof. Dr. Manfred Gruber FH München.
ADAT©2004,2006 Dipl. - Ing. Walter SabinSeite: 48 Version 1.0a Recovery Wiederherstellung eines konsistenten Datenbankzustandes nach Fehlersituationen.
Lokales 2-Phasen-Festschreibe- Protokoll Segment-Verwalter führt commit(T i ) in zwei Phasen aus: Phase 1: Sicherstellung der Wiederholbarkeit. –Für jedes.
Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung
Mehrbenutzerzugriff auf GIS-Daten
Mehrbenutzersynchronisation
Transaktionsverwaltung
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen.
Semantische Integritätsbedingungen  AIFB SS Überwachung von Integritätsbedingungen (1/3) Dem DBMS muß mitgeteilt werden, wann eine Integritätsbedingung.
Recovery    AIFB SS (1/6) Durchführung der Recovery-Maßnahmen(1/6) Transaktions-Fehler (TF) T1 T2 T3 Zeitt Transaktion T2 wird vom.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Abhängigkeiten zwischen Transaktionen (Fehlerklassen) u Lost-Update-Problem u Dirty Read.
Vs Verteilte Transaktionen Situation:Fragmentierung: Ein Datenbestand ist über mehrere Stationen verteilt (z.B. verteilte Datenbank, verteiltes Dateisystem,...)
6.3 Verteilte Transaktionen
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #12 Mehrbenutzersynchronisation.
Prof. Dr. T. Kudraß1 Transaktionsmanagement - Einführung.
Datenbanken abfragen mit SQL
Effektives Delta Laden DOAG SID Data Warehouse. Ziele Welche CDC Methoden gibt es? Typische Fallen Verschiedene Lösungsansätze praktische Beispiele.
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
SQL Basics Schulung –
6.3 Verteilte Transaktionen
Übung Datenbanksysteme I Besprechung
Transaktionsabbruch, System Crash, Media Failure
 Präsentation transkript:

Transaktionen Dr. Heidrun Bethge Datenbanken II

Bsp. für Notwendigkeit von Transaktionen INSERT INTO auftrag (aufnr, kundennr) VALUES (111,333); INSERT INTO auftragdetails (aufnr, artikelnr, anzahl) VALUES (111,3456,4); UPDATE artikel SET anzahl_auf_lager=234 WHERE artikelnr=3456; Dr. Heidrun Bethge Datenbanken II

Was ist eine Transaktion? Eine Transaktion ist eine ununterbrechbare Folge von DML-Befehlen, welche die Datenbank von einem logisch konsistenten Zustand in einen neuen logisch konsistenten Zustand überführt. Die Datenbank braucht nur vor und nach einer Transaktion in einem zulässigen Zustand zu sein. Dr. Heidrun Bethge Datenbanken II

ACID-Prinzip Atomicity: Atomarität. Eine Transaktion wird entweder ganz oder gar nicht ausgeführt. Consistency: Konsistenz. Transaktionen sind die Einheiten der Integritätsüberwachung. Nach einer Transaktion müssen alle Integritätsbedingungen erfüllt sein. Isolation: Parallel laufende Transaktionen sind isoliert und können sich nicht gegenseitig be-einflussen. Ein Nutzer sollte immer den Eindruck haben, dass er allein mit der DB arbeitet. Durability: Dauerhaftigkeit. Sobald eine Transaktion ihre Änderungen freigegeben hat, muss das System das Überleben dieser Änderungen trotz beliebiger (erwarteter) Fehler garantieren (Persistenz). Dr. Heidrun Bethge Datenbanken II

Transaktionsbefehle BEGIN / BOT (Begin of Transaction): Beginn einer Transaktion. Wird von einigen DBMS implizit gesetzt. COMMIT / EOT (End of Transaction): Die Transaktion soll erfolgreich beendet werden. ROLLBACK / ABORT: Die Transaktion wird abgebrochen. Alle bereits in ihr durchgeführten Aktionen werden rückgängig gemacht. Dr. Heidrun Bethge Datenbanken II

Ende der Transaktion Für das Ende einer Transaktion gibt es nur zwei Möglichkeiten: COMMIT; Erfolgreich beendet. ROLLBACK; Nicht erfolgreich beendet. Dr. Heidrun Bethge Datenbanken II

Abschluss von Transaktionen Der User setzt ein COMMIT oder ROLLBACK selbst ab. Vor und nach jedem DDL-Befehl wie z.B. CREATE, ALTER, DROP, RENAME wird vom DBMS ein implizites COMMIT abgesetzt. Hardware- oder Laufzeitfehler können zu einem Rollback führen. Das DBMS kann Transaktionen zurückrollen, wenn sie z.B. bei Beendigung Konsistenzbedingungen verletzen oder in ein Deadlock laufen. wird eine neue Transaktion eingeleitet, während eine andere noch offen ist, so wird die offene Transaktion automatisch durch COMMIT abgeschlossen. Dr. Heidrun Bethge Datenbanken II

Automatische Sperren bei Transaktionen Ist eine Transaktion aktiv, kann eine andere Transaktion keine Operationen durchführen, die Datensätze der aktiven Transaktion betreffen. Dies gilt, sofern auf diesen Datensätzen von der offenen Transaktion bereits geschrieben wurde. Diese Kommandos werden blockiert. Jedoch: Standard-Sperrlevel von DBMS erfüllen NICHT vollständig das ACID-Prinzip! → Sperren von Hand setzen. Dr. Heidrun Bethge Datenbanken II

Beispiel Transaktion Transaktion 1 Transaktion 2 select * from testdaten; update testdaten set wert=11 where id=1; select * from testdaten; select * from testdaten; update testdaten set wert = 22 where id=1; commit; select * from testdaten; select * from testdaten; rollback; Dr. Heidrun Bethge Datenbanken II

Transaktionen im Mehrbenutzerbetrieb Fehler durch gleichzeitigen Zugriff mehrerer Benutzer auf dieselben Daten mehrere Transaktionen laufen parallel und behindern sich ggf. gegenseitig → nebenläufige konkurrierende Prozesse Dr. Heidrun Bethge Datenbanken II

Inkonsistentes Lesen: Nonrepeatable Read X = A + B +C am Ende der Transaktion T1 Integritätsbedingung A + B + C = 0 Dr. Heidrun Bethge Datenbanken II

Lesen inkonsistenter Zustände Integritätsbedingung X + Y = 0 T1 T2 read(X,x); read(Y,y); x=x+1; write(X,x); y=y-1; read(X); read(Y); write(Y,y); commit; Dr. Heidrun Bethge Datenbanken II

Dirty Read Lesen nicht freigegebener, ungültiger Daten Dr. Heidrun Bethge Datenbanken II

Verlorengegangenes Ändern: Lost Update Dr. Heidrun Bethge Datenbanken II

Mehrbenutzer-Anomalie Integritätsbedingung A = B Dr. Heidrun Bethge Datenbanken II

Das Phantom-Problem Dr. Heidrun Bethge Datenbanken II

Probleme bei Cursor-Referenzen Dr. Heidrun Bethge Datenbanken II

Transaktions-Sperrlevel in SQL Sperrlevel der nächsten Transaktion: set transaction [read only, |read write,] [isolation level read uncommitted, | read committed, | repeatable read, | serializable] Sperrlevel innerhalb dieser Session: alter session set isolation_level serializable;

Sperrlevel read uncommitted Erlaubt Lesen nicht committeter Daten. Read only. read committed Erlaubt nur Lesen von committeten Daten. Non Repeatable Read-Problem besteht. repeatable read Non Repeatable Read-Problem behoben, jedoch Phantom-Problem nicht. serializable Stärkste Stufe, garantiert Serialisierbarkeit. ACID-Prinzip wird erfüllt. Dr. Heidrun Bethge Datenbanken II

Auswirkungen der Isolationsstufen Level dirty read non repeatable read / lost update Phantomproblem read uncommitted ist möglich read committed nein repeatable read serializable

Sperren shared lock: read lock (S) exclusive lock: write lock (X) Kompatibilitätsmatrix von T1 gehaltene Sperre X S - N J von T2 geplante Sperre Dr. Heidrun Bethge Datenbanken II

Regeln für Sperren Eine Transaktion, welche einen Datensatz lesen will, muss diesen zunächst mit einem S- oder X-Lock versehen. Eine Transaktion, welche einen Datensatz ändern will, muss diesen zunächst mit einem X-Lock versehen. Ein S-Lock kann durch die gleiche Transaktion durch ein X-Lock erweitert werden. Liegt auf einem Objekt ein X-Lock, kann durch die gleiche Transaktion kein S-Lock auf dieses Objekt gesetzt werden. Wird einer Transaktion A eine Sperre verweigert, da bereits anderweitig eine Sperre besteht, so geht A in Wartestellung (Wartezeit ist begrenzt). Sperren werden in der Regel bis zum Ende der Transaktion gehalten. COMMIT löst alle bestehenden Sperren. Dr. Heidrun Bethge Datenbanken II

Sperren in DBMS X-Lock wird vom DBMS automatisch beim Schreiben auf die zu ändernden Datensätze gesetzt. SELECT setzt keine Sperren. SELECT ... FOR UPDATE versieht die Ergebnisdatensätze mit einem X-Lock und den Rest der Tabelle mit einem S-Lock. Lesezugriffe sind auch dann möglich wenn auf den Daten ein S- oder X-Lock liegt. LOCK TABLE tabelle IN SHARE MODE LOCK TABLE tabelle IN EXCLUSIVE MODE Datenbanksysteme unterscheiden in der Praxis noch weitere Sperrtypen. Dr. Heidrun Bethge Datenbanken II

Beispiel Sperren I T1 T2 T1 T2 write(A) read(A) rollback X-Lock A Anfrage: S-Lock A (read(A)) wait rollback (löst X-Lock(A)) resume: S-Lock(A) read(A) Dirty Read Dr. Heidrun Bethge Datenbanken II

Beispiel Sperren II T1 T2 T1 T2 read(A) read(B) write(B) write(A) S-Lock(A) read(A) S-Lock(B) read(B) X-Lock(B) (write(B)) wait X-Lock(A) (write(A)) vorher: lost update nachher: deadlock -> eine der beiden Transaktionen bekommt rollback „deadlock victim“ Dr. Heidrun Bethge Datenbanken II

DEADLOCKS Deadlocks sind Fälle, in denen sich zwei oder mehr Prozesse gegenseitig blockieren und jeder auf das Ende der Transaktion eines anderen Prozesses wartet. Das DBMS erkennt automatisch Deadlock-Situationen und führt bei dem Prozess, der den Deadlock ausgelöst hat, ein ROLLBACK aus. (Oracle: nur der letzte Transaktionsschritt wird rückgängig gemacht) Dr. Heidrun Bethge Datenbanken II

Beispiel DEADLOCK Transaktion 1 Transaktion2 sperrt A sperrt B versucht B zu sperren versucht A zu sperren begin; begin; select * from testdaten select * from testdaten where id=1 where id=2 for update of wert; for update of wert; update testdaten update testdaten set wert=100 set wert=50 where id=2; where id=1; Dr. Heidrun Bethge Datenbanken II