Upload
eburhard-zaunbrecher
View
107
Download
1
Embed Size (px)
Citation preview
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 1
WorzykFH Anhalt
Transaktionen und Parallelverarbeitung
• Eigenschaften von Transaktionen• Konsistenz• Isolation• Parallelverarbeitung• Sperrkonzepte• Deadlock• Beispiele
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 2
WorzykFH Anhalt
ZugriffsteuerungKonto
500
500
+ 400 - 200
500
300900
300
900BaFöG
Sachbearbeiter 1
Miete
Sachbearbeiter 2
+ 400 - 200
900
300
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 3
WorzykFH Anhalt
ZugriffsteuerungKonto
500
500
+ 400 - 200
900
700900
700
900BaFöG
Sachbearbeiter 1
Miete
Sachbearbeiter 2
+ 400 - 200
900
700
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 4
WorzykFH Anhalt
Konsistenzsicherung
Konto 1 Konto 2
700 300
Überweise500von Konto 1nach Konto 2
Konto 1 -500
Konto 2 +500
-500
200
+500
800
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 5
WorzykFH Anhalt
Konsistenzsicherung
Konto 1 Konto 2
700 300
Überweise500von Konto 1nach Konto 2
Konto 1 -500-500
200
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 6
WorzykFH Anhalt
Konsistenzsicherung
Konto 1 Konto 2
700 300
Überweise500von Konto 1nach Konto 2
Konto 1 -500
Konto 2 +500
-500
200
+500
800700 300
altalt
Transaktion
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 7
WorzykFH Anhalt
Eigenschaften von Transaktionen
• Konsistenz
• Dauerhaftigkeit
• Unteilbarkeit
• Isolation
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 8
WorzykFH Anhalt
Konsistenz
Jede Transaktion erhält die Konsistenz der Datenbasis aufrecht. Sämtliche Zustandsbedingungen gelten vor und nach Beendigung der Transaktion. Transaktionen stellen die Klammer dar, um Folgen von Datenbankoperationen zu konsistenzerhaltenden Zustandsübergängen zusammenzufassen.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 9
WorzykFH Anhalt
Dauerhaftigkeit
Korrekt beendete Transaktionen wirken sich dauerhaft auf die Daten aus. Ihre Wirkung kann nicht durch Systemfehler nachträglich zerstört werden.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 10
WorzykFH Anhalt
Unteilbarkeit
Eine Transaktion ist eine unteilbare Operation. Sie wird entweder vollständig durch geführt oder bleibt ohne Wirkung.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 11
WorzykFH Anhalt
Isolation
Parallel ablaufende Transaktionen sind voneinander isoliert, so daß jede Transaktion unabhängig von den anderen zurückgesetzt werden kann.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 12
WorzykFH Anhalt
Konsistenz im DBMS
• alle Gesetzmäßigkeiten, die dem DBMS bekannt gemacht sind, werden auf dem jeweils aktuellen Datenbestand eingehalten
• Eine Datenbank ist vollständig konsistent, wenn sie ein isomorphes Abbild der Umwelt ist.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 13
WorzykFH Anhalt
Lang andauernde Transaktionen
• Normale Transaktionen in einem DBMS dauern einige Sekunden
• Transaktionen in Entwurfsdatenbanken können mehrere Tage dauern– CAD– CASE Tools
• Im Workflow Management wird Rollback häufig durch inverse Transaktionen ersetzt.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 14
WorzykFH Anhalt
Teilaufgaben zur Konsistenzsicherung
• Konsistenzbeschreibung
• Konsistenzüberwachung
• Konsistenzerhaltung
• Konsistenzerzeugung
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 15
WorzykFH Anhalt
Anfang und Ende einer Transaktion
• Eine Transaktion beginnt mit der ersten ausführbaren SQL-Anweisung
• Eine Transaktion endet mit– COMMT oder ROLLBACK– einer DDL-Anweisung z.B.:
• CREATE TABLE• DROP TABLE
– Der Benutzer meldet sich ab– Der Prozess bricht ab
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 16
WorzykFH Anhalt
Beispiel
commit;
insert into ta_kunde values(88,'Anna');
update ta_angebot set kunden#=88
where kunden#=13;
update ta_auftrag set kunden#=88
where kunden#=13;
delete from ta_kunde where kunden#=13;
commit;
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 17
WorzykFH Anhalt
Savepoints
• Savepoints können gesetzt werden, um Teilergebnisse einer Transaktion zu kennzeichnen. Es kann dann ein Rollback bis zu einem Savepoint vorgenommen werden.
Anfang Savepoint Rollback (Savepoint)
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 18
WorzykFH Anhalt
Unteilbarkeit Dauerhaftigkeit
Umbuchung eines Betrages von einem Konto auf ein anderes.
UPDATE ta_kontoSET Kontostand = Kontostand - BetragWHERE Konto# = VonKonto
UPDTE ta_kontoSET Kontostand = Kontostand + BetragWHERE Konto# = NachKonto
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 19
WorzykFH Anhalt
Ablauf - Ändern• Die alten Daten (vor der Veränderung)
werden gespeichert. Die Transaktion bekommt eine System Change Number SCN zugeordnet.
• Die Veränderungsbefehle werden protokolliert.
• Die Veränderungen werden durchgeführt in die Datenbank übernommen.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 20
WorzykFH Anhalt
Ablauf - Commit
• Die interne Transaktionstabelle zeichnet auf, daß die Transaktion festgeschrieben ist und zeichnet die SCN auf.
• Dier Änderungsvorschrift wird archiviert• Die Sperren auf Zeilen und Tabellen
werden freigegben.• Die Transaktion wird als beendet
gekennzeichnet.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 21
WorzykFH Anhalt
Ablauf - Rollback
• Alle Änderungen, die von der SQL-Anweisung vorgenommen wurden, werden mit Hilfe gespeicherten Daten rückgängig gemacht.
• Die Sperren auf Zeilen und Tabellen werden frei gegben.
• Die Transaktion wird als beendet gekennzeichnet.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 22
WorzykFH Anhalt
Isolationgegenseitige Beeinflusung
• Lost Update (verlorengegeangene Aktualisierung)
• Dirty Read (Lesen von nicht festgeschriebenen Daten)
• Non Repeatable Read (Nichtwiederholbares Lesen)
• Phantoms (Inkonsistentes Lesen)• DDL-Operationen
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 23
WorzykFH Anhalt
Lost Update
Transaktion T1
Transaktion T2 Zeit
SELECT x FROM ta_tab WHERE x = 2 xneu = x + 7
UPDATE ta_tab SET x = xneu WHERE x = 2
COMMIT WORK
SELECT x FROM ta_tab WHERE x = 2
xneu = 2 * x
UPDATE ta_tab SET x = xneu WHERE x = 2
COMMIT WORK
t1
t2
t3
t4
t5
t6
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 24
WorzykFH Anhalt
Dirty ReadTranaktion T1 Transaktion T2Zeit
SELECT xFROM ta_tabWHERE x = 2
xneu = x + 7
UPDATE ta_tabSET x = xneuWHERE x = 2
ROLLBACK WORK
SELECT xFROM ta_tabWHERE x = 9
xneu = 2 * x
UPDATE ta_tabSET x = xneuWHERE x = 9
COMMTI WORK
t1
t2
t3
t4
t5
t6
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 25
WorzykFH Anhalt
Non Repeatable ReadTranaktion T1 Transaktion T2Zeit
SELECT xFROM ta_tabWHERE x = 2
xneu = x + 7
UPDATE ta_tabSET x = xneuWHERE x = 2
COMMIT WORK
SELECT xFROM ta_tabWHERE x = 2
UPDATE ta_tabSET x = x * 2
t1
t2
t3
t4
t5
t6
IF bedingung ...
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 26
WorzykFH Anhalt
Phantoms
Tranaktion T1 Transaktion T2Zeit
SELECT SUM(x)FROM ta_tabWHERE x > 0
UPDATE ta_tabSET x = -x
t1
t2
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 27
WorzykFH Anhalt
DDL - Operationen
Tranaktion T1Transaktion T2
Zeit
SELECT xFROM ta_tabWHERE x = 2
xneu = x + 7
UPDATE ta_tabSET x = xneuWHERE x = 2
COMMTI WORK
DROP TABLE ta_tab
t1
t2
t3
t4
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 28
WorzykFH Anhalt
Konsistenzerhaltung von ORACLE
automatisch Lesekonsistenz auf Anweisungsebene (Phantoms)
ORACLE beobachtet die SCN (System Change Number) und zur Zeit der Ausführung der Abfrage werden nur die Daten, die mit der gleichen SCN gekennzeichnet sind, berücksichtigt
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 29
WorzykFH Anhalt
SCN
SCN 10023
SCN 10023
SCN 10024
SCN 10023
SCN 10023
SELECT
Datenblöcke derRollback Segmente
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 30
WorzykFH Anhalt
Sperrkonzepte von ORACLE
• Automatische Sperren– Tabellensperre mit Zeilensperre im
Exclusiv-Modus – Tabellensperre mit Zeilensperre im
Share-Modus
• Programmierbare Sperren – Tabellensperre im Share-Modus – Tabellensperre im Exclusiv-Modus
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 31
WorzykFH Anhalt
TabellensperrenSQL Anweisung Modus Sperren erlaubt?
RS RX S SRX XSELECT keiner J J J J JSELECT ... FOR UPDATE RS J * J * J * J * NINSERT RX J J N N NUPDATE RX J * J * N N NDELETE RX J * J * N N NLOCK TABLE ... IN ROW SHAREMODE
RS J J J J N
LOCK TABLE ... IN ROW EXCLUSIVEMODE
RX J J N N N
LOCK TABLE ... IN SHARE MODE S J N J N NLOCK TABLE ... IN SHARE ROWEXCLUSIVE MODE
SRX J N N N N
LOCK TABLE ... IN EXCLUSIVE MODE X N N N N N
* Wenn die Spalten nicht betroffen sind
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 32
WorzykFH Anhalt
Deadlock (Systemverklemmung)
Ein Deadlock tritt auf, wenn mehrere Transaktionen gegenseitig auf die Freigabe von Ressourcen warten, sie die Ressourcen aber nicht freigeben können, da sie diese für den Abschluß ihrer Arbeit benötigen.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 33
WorzykFH Anhalt
Deadlock
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 34
WorzykFH Anhalt
DeadlockBeispiel
Tranaktion T1 Transaktion T2Zeit
UPDATE ta_tabSET x = x +1WHERE x = 2
UPDATE ta_tabSET x = x + 3WHERE x = 4
deadlock detected
UPDATE ta_tabSET x = x + 5WHERE x = 4
UPDATE ta_tabSET x = x + 7WHERE x = 2
t1
t2
t3
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 35
WorzykFH Anhalt
Reduzieren von (Dead)lock-Situationen
• Transaktionen so kurz wie möglich. • Keine Bildschirmaktionen innerhalb
einer Transaktion.• Bei Mehrtabellen-Update (z.B.:
Master-Detail-Tabellen) muß eine für alle Anwendungen und alle Programmierer verbindliche Reihenfolge der Zugriffe und der Sperrungen festgelegt werden.
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 36
WorzykFH Anhalt
Zusammenfassung 1
Eine Transaktion T überführt die Datenbank von einem konsisten Zustand K1 in einen konsisten Zustand K2. Ist das nicht möglich, wird der Zustand K1 wieder hergestellt (Rollback).
K1 K2
T
Rollback
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 37
WorzykFH Anhalt
Zusammenfassung 2• Eigenschaften von Transaktionen
– Konsistenz– Dauerhaftigkeit– Atomizität– Isolation
• Gegenseitige Beeinflussung– Lost Update– Dirty Read– Non Repeatable Read– Phantoms
Datenbanksysteme für FÜ WS 2004/2005Transaktionen 38
WorzykFH Anhalt
Zusammenfassung 3
• Deadlocks können reduziert werden durch– Kurze Transaktionen– Keine Bildschirmeingabe innerhalb– Mehrtabellen Update immer in der
gleichen Reihenfolge
• Das Ende einer Transaktion wird vom Programmierer bestimmt