Access-Modell. A4. Im Operandenteil von Anweisungen vorkommende Objekte seien unstrukturiert und stehen in keinerlei Beziehung zueinander.

Ähnliche Dokumente
Konflikte. Konflikt-Äquivalenz von Read/Write-Plänen, Konflikt-Serialisierbarkeit

2.3 View Serialisierbarkeit

Kapitel 5 Mehrversionen-CC. MVCC: Annahmen & Eigenschaften

Datenbanken: Ablaufpläne und Serialisierbarkeit

Konfliktgraph. Satz und Definition

Aufgabe 10.1: Lösung:

Prioritäten/Zeitstempel-Verfahren

Prioritäten/Zeitstempel-Verfahren. WAIT-DIE und WOUND-WAIT-Strategien

Datenbanksysteme 2009

Tutoraufgabe 1 (Suchen in Graphen):

Die Prädikatenlogik erster Stufe: Syntax und Semantik

Übungen zur Vorlesung. Datenbanken I. WS 2002/2003 Blatt 4 MUSTERLÖSUNG

Vorlesung Datenstrukturen

Kapitel 3 Synchronisation

Übungen zur Vorlesung. Mobile und Verteilte Datenbanken. WS 2008/2009 Blatt 4. Lösung

5. Bäume und Minimalgerüste

Transaktionen. Michael Löwe 04/15/16. FHDW Hannover, Freundallee 15, Hannover address:

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

Anordnungstechniken für konvektionsdominante Probleme im Ê 3. Dimensionsunabhängige Verfahren. Algorithmen für planare Graphen. Numerische Beispiele

Grundlagen der Theoretischen Informatik

Vorlesung Datenstrukturen

6. Serialisierbarkeit

1.3 Funktionen einer reellen Veränderlichen und ihre Darstellung im x, y - Koordinatensystem

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Datenbanken und Informationssysteme

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

Zentralübung zur Vorlesung Diskrete Strukturen

= 2 2.4, x 13 = = ( 2 2) 3.8

Funktionen. x : Variable von f oder Argument f x : Funktionswert, Wert der Funktion f an der Stelle x D f. : Definitionsmenge(Urbildmenge)

Das Heiratsproblem. Definition Matching

Kapitel 11. Dimension und Isomorphie

Holger Schwarz Universität Stuttgart, IPVS

3. Relationen Erläuterungen und Schreibweisen

Klausur zur Vorlesung Mathematische Logik

Abschnitt 3: Mathematische Grundlagen

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Dezimaldarstellung ganzer Zahlen (Division mit Rest) 1 Division mit Rest in der Hochschule

Umkehrfunktionen 1-E. Ma 1 Lubov Vassilevskaya

( ) ( ) < b k, 1 k n} (2) < x k

Algorithmen. Von Labyrinthen zu. Gerald Futschek

Algorithmen und Datenstrukturen SS09. Foliensatz 17. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Turing-Maschinen: Ein abstrakes Maschinenmodell

Die mathematische Seite

Vorlesung Datenstrukturen

Übungsblatt 2 - Lösung

3.5 Synchronisation ohne Sperren

1 Lokale Sprachen. 2 Verallgemeinerung

6. Serialisierbarkeit 1

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

8 Der Kompaktheitssatz und der Satz von Löwenheim und Skolem

Theoretische Grundlagen der Informatik

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Abschnitt 1.3. Funktionen

Mathematische Grundlagen der Ökonomie Übungsblatt 8

1 Funktionen einer Variablen

Mengen und Abbildungen

Vorlesung Datenstrukturen

6. Serialisierbarkeit 1

Kapitel 1 Parallele Modelle Wie rechnet man parallel?

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Grundbegriffe der Mengenlehre

11: Die Euler sche Polyederformel für planare Graphen

1 Referentielle Aktionen

Verteilen von Bällen auf Urnen

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

Grundbegriffe aus Logik und Mengenlehre. Prädikatenlogik

Übung zur Vorlesung Diskrete Mathematik (MAT.107) Blatt Beispiellösungen Abgabefrist:

Höhere Mathematik für die Fachrichtung Physik

Algorithmische Graphentheorie

Graphen und Bäume. A.1 Graphen

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Lineare Algebra I. - 1.Vorlesung - Prof. Dr. Daniel Roggenkamp & Falko Gauß. Monday 12 September 16

Gruppen. Kapitel Operationen Definiton Gruppe, symmetrische Gruppen. Gruppen und Untergruppen, Lernziele 1. Erzeugendensysteme,

Binary Decision Diagrams (Einführung)

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

3.2 Unabhängigkeitsstrukturen

ADS-EI 5.2 Struktur einer Turing-Maschine 120/451 ľernst W. Mayr

Von der Programmiersprache WHILE zum ersten Einstieg in Java

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Theoretische Grundlagen der Informatik. Vorlesung am 02. November INSTITUT FÜR THEORETISCHE INFORMATIK

Abschnitt 3: Mathematische Grundlagen

T1: A := A * 2 B := B * 2 T2: A := A B := B + 100

mehrwertige Abhängigkeiten

6. Serialisierbarkeit 1

Musterlösung 11.Übung Mathematische Logik

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

11 Logarithmus und allgemeine Potenzen

Lösungen der Trainingsaufgaben aus. Toolbox Mathematik für MINT-Studiengänge

Lineare Algebra und analytische Geometrie II

Lineare Algebra und analytische Geometrie I

1 Pfade in azyklischen Graphen

Algorithmische Graphentheorie

2 Funktionen einer Variablen

Von Skalarprodukten induzierte Normen

Abbildungen. Kapitel Definition: (Abbildung) 5.2 Beispiel: 5.3 Wichtige Begriffe

Datenstrukturen und Algorithmen (SS 2013)

Transkript:

Access-Modell Das Access-Modell beruht auf folgenden vereinfachenden Annahmen: A1. Im Operationsteil einer Anweisung sei nur der Operator Access erlaubt. Die beabsichtigte Semantik ist, daß die Daten aus dem im Operandenteil bezeichneten Objekt in den lokalen Speicher des die Transaktion ausführenden Prozesses gelesen, dann dort verarbeitet und dabei möglicherweise geändert und anschließend in das Objekt zurückgeschrieben werden. A2. Weitere Einzelheiten der Semantik, insbesondere über die Art der Verarbeitung seien nicht bekannt. A3. Nachdem eine Access-Anweisung vollständig ausgeführt ist, werde der lokale Speicher jeweils als gelöscht gedacht, d.h. die Transaktion arbeitet zwischen den Anweisungen ohne lokales Gedächtnis. Ferner bearbeite eine Transaktion jedes Objekt höchstens einmal. A4. Im Operandenteil von Anweisungen vorkommende Objekte seien unstrukturiert und stehen in keinerlei Beziehung zueinander. A5. Alle Transaktionen werden vollständig wirksam. A6. Alle Transaktionen liegen als unverzweigte Anweisungsfolgen textuell als Ganzes vor. 18.1 18.2

Access-PlŠne Anweisungen und Transaktionen: A Menge von Operatoren (Aktionen) O Menge von Objekten S := A O Menge der Anweisungen T := { t t : {1,...,n} S, t ist injektiv } Menge der Transaktionen Pläne: Ist T = {t 1,...,t k } eine Menge von Transaktionen mit t i = (t i.1,..., t i.ni ), so heißt 1-1 P: { 1,...,n1+...+nk } { i.j 1 i k, 1 j ni} auf derart, daß für alle i, für alle j1, j2 gilt : j1 < j2 P -1 (i.j1) < P -1 (i.j2) Plan (schedule) zu T. Menge der Operatoren nur A:={Access}. Die Semantik von Access-Plänen behandelt den Operator Access derart, daß jedes Vorkommen eine verschiedene Funktion bezeichnet, diese Funktionen einstellig sind, keine weiteren Kenntnisse über diese Funktionen vorliegen, diese Funktionen damit mit ihren unterschiedlichen Funktionszeichen identifiziert werden können. Semantik von Access-PlŠnen F ist eine Menge von (gemäß Annahme A2 uninterpretierten, Skolem-) Funktionszeichen. Skolem : N N 1-1 F ist eine injektive Zuordnung von Anweisungen in Transaktionen, genauer von den entsprechenden Komponentennummern i.j, zu Funktionszeichen (der Stelligkeit 1 gemäß Annahme A3). f i.j := Skolem (i,j). Für einen Plan P = ( p 1,..., p m ) zur Menge von Transaktionen T = { t 1,..., t k } sei O(T) die Menge der in Anweisungen aus T vorkommenden Objekte. Für o O(T) sei Access (P, o ) die Teilfolge derjenigen p x = i x.j x aus P, für die t i x. j die Form Access o hat. x Die Semantik von P ordnet jedem Objekt o O(T) einen Term über O(T) F zu vermöge eval (P, o ) := o f i.... f 1 j 1 i e. j e mit Access (P, o ) = ( i 1.j 1,..., i e.j e ). 18.3 18.4

Endzustand- quivalenz von Access-PlŠnen, Endzustand-Serialisierbarkeit Definition 1. Seien P und P Access-Pläne zu einer Menge von Transaktionen T. P ist Endzustand-äquivalent zu P :gdw eval (P, o ) = eval (P, o ) für alle o O(T). 2. Ein Access-Plan P zu einer Menge von Transaktionen T heißt Endzustand-serialisierbar, wenn es einen Access-Plan P gibt, so daß gilt: (K1) (K2) P ist serieller Access-Plan, P und P sind Endzustand-äquivalent. Transaktionen: t 1 := ( 1.1 : Access A, t 2 := ( 2.1 : Access B, 1.2 : Access B ) 2.2 : Access C, 2.3 : Access A ) t 3 := ( 3.1 : Access C, 3.2 : Access A ) Plan zu T := { t 1, t 2, t 3 }: P := ( 2.1 : Access B, 1.1 : Access A, 2.2 : Access C, 2.3 : Access A, 1.2 : Access B, 3.1 : Access C, 3.2 : Access A ) O(T) = { A, B, C }; Semantik von Plan P: Access (P,A) = ( 1.1, 2.3, 3.2 ), Access (P,B) = ( 2.1, 1.2 ), Access (P,C) = ( 2.2, 3.1 ); eval (P,A) = A f 1.1 f 2.3 f 3.2, eval (P,B) = B f 2.1 f 1.2, eval (P,C) = C f 2.2 f 3.1. 18.5 18.6

Transaktionen: t 1 := ( 1.1 : Access A, t 2 := ( 2.1 : Access B, 1.2 : Access B ) 2.2 : Access C, 2.3 : Access A ) t 3 := ( 3.1 : Access C, 3.2 : Access A ) Plan zu T := { t 1, t 2, t 3 }: P := ( 2.1 : Access B, 2.2 : Access C, 2.3 : Access A, 1.1 : Access A, 1.2 : Access B, 3.1 : Access C, 3.2 : Access A ) O(T) = { A, B, C }; Semantik von Plan P : Access (P,A) = ( 2.3, 1.1, 3.2 ), Access (P,B) = ( 2.1, 1.2 ), Access (P,C) = ( 2.2, 3.1 ); eval (P,A) = A f 2.3 f 1.1 f 3.2, eval (P,B) = B f 2.1 f 1.2, eval (P,C) = C f 2.2 f 3.1. Transaktionen: t 1 := ( 1.1 : Access A, t 2 := ( 2.1 : Access B, 1.2 : Access B ) 2.2 : Access C, 2.3 : Access A ) t 3 := ( 3.1 : Access C, 3.2 : Access A ) Pläne zu T := { t 1, t 2, t 3 }: P := ( 2.1 : Access B, P := ( 2.1 : Access B, 1.1 : Access A, 2.2 : Access C, 2.2 : Access C, 2.3 : Access A, 2.3 : Access A, 1.1 : Access A, 1.2 : Access B, 1.2 : Access B, 3.1 : Access C, 3.1 : Access C, 3.2 : Access A ) 3.2 : Access A ) Semantik von Plan P und von Plan P : Access (P,A) = (1.1, 2.3, 3.2), Access (P',A) = (2.3, 1.1, 3.2), Access (P,B) = ( 2.1, 1.2 ), Access (P',B) = ( 2.1, 1.2 ), Access (P,C) = ( 2.2, 3.1 ); Access (P',C) = ( 2.2, 3.1 ); eval (P,A) = A f 1.1 f 2.3 f 3.2, eval (P',A) = A f 2.3 f 1.1 f 3.2, eval (P,B) = B f 2.1 f 1.2, eval (P',B) = B f 2.1 f 1.2, eval (P,C) = C f 2.2 f 3.1. eval (P',C) = C f 2.2 f 3.1. 18.7 18.8

P ist ein serieller Plan. P und P sind nicht Endzustand-äquivalent, weil eval ( P, A ) eval ( P', A ). Wir werden zeigen, daß P sogar nicht Endzustand-serialisierbar ist. Dazu konstruieren wir wie folgt einen gerichteten Serialisierbarkeitsgraphen G(P) = ( E, K ). Serialisierbarkeitsgraph G(P) = ( E, K ) zum Plan P Eckenmenge E := T, Kantenmenge K := { (t i1, t i2 ) es gibt o O(T), j1, j2 : t i1.j1 = Access o, t i2.j2 = Access o, P -1 (i1.j1) < P -1 (i2.j2), für alle z mit P -1 (i1.j1) < z < P -1 (i2.j2) ist P(z) nicht von der Form Access o } = { (t i1, t i2 ) es gibt o O(T), j1, j2 : in Access (P, o) folgt i2.j2 direkt auf i1.j1 }. Es geht also eine Kante von Transaktion t i1 nach Transaktion t i2, wenn auf die Bearbeitung eines Objekts o durch t i1 direkt die Bearbeitung durch t i2 in dem Sinne folgt, daß o zwischendurch nicht von einer anderen Transaktion bearbeitet wird. 18.9 18.10

Serialisierbarkeits-Test Satz Sei P ein Access-Plan zu einer Menge von Transaktionen T = {t 1,..., t k } und G(P) der zugehörige Serialisierbarkeitsgraph. 1. P ist Endzustand-serialisierbar genau dann, wenn G (P) azyklisch ist. 2. Ist G(P) azyklisch und ist P ein serieller Plan, der durch topologisches Sortieren aus G(P) gewonnen wird, so sind P und P Endzustand-äquivalent. 1. und 2.: Sei G(P) azyklisch und P durch topologisches Sortieren entstanden. Für o O(T) beschreibt Access (P, o) gerade einen Pfad in G(P). Da die topologische Sortierung die Anordnung der Transaktionen entlang dieses Pfades erhält, gilt Access (P, o) = Access (P, o) und damit auch eval (P, o) = eval (P,o). 18.11 18.12

1. : Sei andererseits G(P) zyklisch, d.h. G(P) enthält einen Zykel (t i1,..., t ie,t i1 ). Sei P ein beliebiger serieller Plan zu T und t ia diejenige Zykeltransaktion, die in P vor allen anderen Zykeltransaktionen angeordnet ist. Sei t iv der Vorgänger von t ia im Zykel. Dann gibt es ein Objekt o und jv, ja mit t iv.jv = Access o und t ia.ja = Access o. Dann hat eval (P, o) die Form o... f iv.jv f ia.ja..., aber eval (P, o) die Form o... f ia.ja... f iv.jv..., d.h. eval (P, o) eval (P, o). Also sind P und P nicht Endzustand-äquivalent. Damit ist P nicht Endzustand-serialisierbar. Ein Serialisierbarkeitsgraph Plan: P := ( 2.1 : Access B, 1.1 : Access A, 2.2 : Access C, 2.3 : Access A, 1.2 : Access B, 3.1 : Access C, 3.2 : Access A ) Serialisierbarkeitsgraph: 1.1 : Access A / 2.3 : Access A t 1 t 2 2.1 : Access B / 1.2 : Access B t3 Der Serialisierbarkeitsgraph ist zyklisch. 2.3 : Access A / 3.2 : Access A 2.2 : Access C / 3.1 : Access C Damit ist P nicht Endzustand-serialisierbar. 18.13 18.14

Read/Write-Modell A1*. Im Operationsteil einer Anweisung seien nur die Operatoren Read und Write erlaubt. Die beabsichtigte Semantik von Read ist, daß die Daten aus dem im Operandenteil bezeichneten Objekt in den lokalen Speicher des die Transaktion ausführenden Prozesses gelesen werden. Die beabsichtigte Semantik von Write ist, daß die Daten des im Operandenteil bezeichneten Objekts überschrieben werden mit (möglicherweise) neuen Werten, die sich aus der Verarbeitung aller vorher gelesenen Daten ergeben können. A2. Weitere Einzelheiten der Semantik, insbesondere über die Art der Verarbeitung seien nicht bekannt. A3*. Nachdem eine Read-Anweisung ausgeführt ist, bleiben die gelesenen Daten zeitlich unbegrenzt und unverändert im lokalen Speicher verfügbar. Entsprechend liest eine Transaktion aus jedem Objekt höchstens einmal. Ferner schreibe eine Transaktion in jedes Objekt höchstens einmal (nach Abschluß aller Verarbeitungen). Wenn eine Transaktion ein Objekt sowohl liest als auch schreibt, so gehe das Lesen dem Schreiben voran. A4. Im Operandenteil von Anweisungen vorkommende Objekte seien unstrukturiert und stehen in keinerlei Beziehung zueinander. A5. Alle Transaktionen werden vollständig wirksam. A6. Alle Transaktionen liegen als unverzweigte Anweisungsfolgen textuell als Ganzes vor. 18.15 18.16

Semantik von Read/Write-PlŠnen Der Operator Write wird derart behandelt, daß jedes Vorkommen eine verschiedene Funktion bezeichnet, diese Funktionen von geeigneter (d.h. von den vorangehenden Leseanweisungen bestimmter) Stelligkeit sind, diese Funktionen (seiteneffektfrei) ausschließlich im als Argument angegebenen Objekt eine Änderung bewirken, keine weiteren Kenntnisse über diese Funktionen vorliegen, Semantik von Read/Write-PlŠnen F ist eine Menge von Funktionszeichen. Skolem : N N 1-1 F injektive Zuordnung von (Schreib-) Anweisungen in Transaktionen, genauer von den entsprechenden Komponentennummern i.j zu Funktionszeichen. f i.j := Skolem (i,j). O(T) die Menge der in Anweisungen aus T = {t 1,...,t k } T vorkommenden Objekte. Die (Wertverlaufs-) Semantik von Plan P = ( p 1,...,p m ) ordnet jedem Objekt o O(T) und jedem Zeitpunkt z mit 0 z m einen Term über O(T) F zu vermöge folgender induktiver Vorschrift: diese Funktionen damit mit ihren unterschiedlichen Funktionszeichen identifiziert werden können. z = 0 [Initialisierung durch (Namen der) Objekte]: eval (P, o, 0) := o; Der Operator Read wird derart behandelt, daß er keine den Zustand der Objekte ändernden Seiteneffekte bewirkt. 1 z m [Seiteneffektfreie Ausführung von Anweisungen]: eval (P, o, z-1) falls p z i.j : Read x eval (P, o, z) := eval (P, o, z-1) falls p z i.j : Write x mit x o f i.j (r 1,..., r h ) falls p z i.j : Write o [bewirkte Änderung] 18.17 18.18

Dabei seien für den dritten Fall die Argumente r 1,...,r h wie folgt bestimmt: Die Menge z L i.j := { (o *, z * ) z * < z, und es gibt j * < j: p z * i.j * : Read o * } sei (gemäß einer linearen Ordnung auf O(T)) aufgezählt als Folge < (o 1, z 1 ),..., ( o h, z h ) >; dann sei r e := eval (P,o e, z e ) für e=1,...,h. 1 z m [Seiteneffektfreie Ausführung von Anweisungen]: eval (P, o, z-1) falls p z i.j : Read x eval (P, o, z) := eval (P, o, z-1) falls p z i.j : Write x mit x 0 f i.j (r 1,..., r h ) falls p z i.j : Write o [bewirkte Änderung] Dabei seien für den dritten Fall die Argumente r 1,...,r h wie folgt bestimmt: Die Menge z L i.j := { (o *, z * ) z * < z, und es gibt j * < j : p z * i.j * : Read o * } sei (gemäß einer linearen Ordnung auf O(T)) aufgezählt als Folge < (o 1, z 1 ),..., ( o h, z h ) >; dann sei r e := eval (P, o e, z e ) für e=1,...,h. Eine zum Zeitpunkt z ausgeführte Schreibanweisung i.j: Write o aus Transaktion i verändert den Wert des Objekts o gemäß der Verarbeitung f i.j, angewendet auf die vorher von Transaktion i zu den Zeitpunkten z 1,...,z h gelesenen Werte der Objekte o 1,...,o h. 18.19 18.20

Transaktionen: t 1 := ( 1.1: Read A, t 3 := ( 3.1: Read C, 1.2: Write C, 3.2: Write A ) 1.3: Write B ) t 2 := ( 2.1: Read A, t 4 := ( 4.1: Read B, 2.2: Read B, 4.2: Read C, 2.3: Write D ) 4.3: Write B, 4.4: Write A ) Wertverlaufs-Semantik fÿr den Plan P P z z L i.j o A B C D 0 A B C D 2.1: Read A 1.... 1.1: Read A 2.... 1.2: Write C 3 <(A,2)>.. f 1.2 (A). 3.1: Read C 4.... 1.3: Write B 5 <(A,2)>. f 1.3 (A).. 4.1: Read B 6.... 4.2: Read C 7.... 2.2: Read B 8.... 3.2: Write A 9 <(C,4)> f 3.2 (f 1.2 (A))... 4.3: Write B 10 <(B,6), (C,7)>. f 4.3 (f 1.3 (A), f 1.2 (A)).. 2.3: Write D 11 <(A,1), (B,8)>... f 2.3 (A, f 1.3 (A)) 4.4: Write A 12 <(B,6), f 4.4 (f 1.3 (A), (C,7)> f 1.2 (A))... Endzustand: f 4.4 (f 1.3 (A), f 1.2 (A)) f 4.3 (f 1.3 (A), f 1.2 (A)) f 1.2 (A) f 2.3 (A, f 1.3 (A)) 18.21 18.22

Wertverlaufs-Semantik fÿr den Plan PÕ P' z z L i.j o A B C D 0 A B C D 1.1: Read A 1.... 1.2: Write C 2 <(A,1)>.. f 1.2 (A). 1.3: Write B 3 <(A,1)>. f 1.3 (A).. 2.1: Read A 4.... 2.2: Read B 5.... 2.3: Write D 6 <(A,4), f 2.3 (A, (B,5)>... f 1.3 (A)) 3.1: Read C 7.... 3.2: Write A 8 <(C,7)> f 3.2 (f 1.2 (A))... 4.1: Read B 9.... 4.2: Read C 10.... 4.3: Write B 11 <(B,9), (C,10)>. f 4.3 (f 1.3 (A), f 1.2 (A)).. 4.4: Write A 12 <(B,9), f 4.4 (f 1.3 (A), (C,10)> f 1.2 (A))... Endzustand: f 4.4 (f 1.3 (A), f 1.2 (A)) f 4.3 (f 1.3 (A), f 1.2 (A)) f 1.2 (A) f 2.3 (A, f 1.3 (A)) Sicht- quivalenz von Read/Write-PlŠnen, Sicht-Serialisierbarkeit Definition 1. Seien P und P Read/Write-Pläne zu einer Menge von Transaktionen T. P ist Sicht-äquivalent zu P :gdw a. [Endzustand-äquivalent] Für den größten Zeitpunkt m von P bzw. P gilt: eval (P, o, m) = eval (P, o, m) für alle o O(T). b. [gleiche Lesesichten] Für alle Leseanweisungen i.j : Read o aus T gilt: sind z, z die Zeitpunkte mit P(z) = P (z ) = i.j : Read o, so folgt eval (P, o, z) = eval (P, o, z'). 2. Ein Read/Write-Plan P zu einer Menge von Transaktionen T heißt Sicht-serialisierbar, wenn es einen Read/Write-Plan P gibt, so daß gilt: (K1) (K2) P ist serieller Read/Write-Plan, P und P sind Sicht-äquivalent. 18.23 18.24

initialisierend schreibende Transaktion t 0, abschlie end lesende Transaktion t f T = {t 1,...,t k } Menge von Transaktionen O(T) = {o 1,...,o e }: initialisierend schreibende Transaktion: t 0 := ( 0.1 : Write o 1,. 0.e : Write o e ), wobei die zugeordneten (nullstelligen) Funktionszeichen durch Skolem (0.j) := o j definiert seien abschließend lesende Transaktion: t f := ( f.1 : Read o 1,. f.e : Read o e ), Der erweiterte Read/Write-Plan e_p entstehe aus dem Plan P zu T durch Voranstellen von t 0 und Anhängen von t f. Polygraph G (P) = (E, K liest K vor, W) zum Read/Write-Plan P Eckenmenge E := T {t 0, t f } Kantenmenge K liest := { (t i1, t i2 ) es gibt o O(T), j1, j2: t i1.j1 = Write o, t i2.j2 = Read o, e_p -1 (i1.j1) < e_p -1 (i2.j2), und für alle z mit e_p -1 (i1.j1) < z < e_p -1 (i2.j2) ist P(z) nicht von der Form Write o } Kantenmenge K vor := { (t i2, t i3 ) t i2 liest Objekt o von t 0, t i3 T \ {t i2 }, es gibt j3: t i3.j3 = Write o } { (t i3, t i1 ) t f liest Objekt o von t i1, t i3 T \ {t i1 }, es gibt j3: t i3.j3 = Write o } Wahl-Kantenpaarmenge W := { (t i2, t i3, t i1 ) t i2 liest Objekt o von t i1, t i2 t f, t i1 t 0, t i3 T \ {t i1, t i2 }, es gibt j3 : t i3.j3 = Write o } 18.25 18.26

Von Transaktion t i1 geht also eine Kante nach Transaktion t i2, wenn auf das Schreiben in ein Objekt o durch t i1 direkt das Lesen aus diesem Objekt durch t i2 in dem Sinne erfolgt, daß in Objekt o zwischenzeitlich nicht durch eine andere Transaktion geschrieben wird. Eine (wegen Objekt o eingeführte) Kante (t i1, t i2 ) bedeutet also kurz: t i2 liest (Objekt o) von t i1, und entsprechend muß in dem gesuchten Sicht-äquivalenten seriellen Read/Write-Plan t i1 vor t i2 ausgeführt werden. Tatsächliche Sicht-Äquivalenz wird aber nur erreicht, wenn im gesuchten seriellen Plan nicht eine weitere in Objekt o schreibende Transaktion t i3 T sich zwischen t i1 und t i2 schiebt. Diese Überlegungen führen für die besonderen Fälle zur Kantenmenge K vor := { (t i2, t i3 ) t i2 liest Objekt o von t 0, t i3 T \ {t i2 }, es gibt j3: t i3.j3 = Write o } { (t i3, t i1 ) t f liest Objekt o von t i1, t i3 T \ {t i1 }, es gibt j3: t i3.j3 = Write o } Man beachte, daß in obiger Definition t i2 t f bzw. t i1 t 0 gelten muß. Falls in obiger Überlegung aber t i1 t 0 und t i2 t f, so drücken wir die Alternative entweder t i2 vor t i3 oder t i3 vor t i1 durch ein Wahl-Kantenpaar aus. Eine solche Transaktion muß also entweder nach t i2 oder vor t i1 ausgeführt werden. Für zwei besondere Fälle entfällt jeweils eine der Möglichkeiten: Falls t i1 die gedachte initialisierend schreibende Transaktion t 0 ist, muß t i3 also nach t i2 kommen. Falls t i2 die gedachte abschließend lesende Transaktion t f ist, muß t i3 also vor t i1 kommen. 18.27 18.28

Kanten und Wahl-Kantenpaare Ein erweiterter Read / Write - Plan e_p (t, t ) K : i1 i2 liest (t 0, t i2 ) K liest, (t i2, t i3 ) K vor : (t i3, t i1) K vor, (t, t ) i1 f K liest : W o R ti1 ti2 W o R R t0 ti2 W o W W ti3 ti1 o o W R t i3 t f e_p = ( 0.1: Write A, 0.2: Write B, 0.3: Write C, 0.4: Write D, 2.1: Read A, 1.1: Read A, 1.2: Write C, 3.1: Read C, 1.3: Write B, 4.1: Read B, 4.2: Read C, 2.2: Read B, 3.2: Write A, 4.3: Write B, 2.3: Write D, 4.4: Write A, f.1: Read A, f.2: Read B, f.3: Read C, f.4: Read D ) A B C D (t,t ) K, (t, t, t ) W: i1 i2 liest i2 i3 i1 t i1 W W o W o R W o t i2 R t i3 18.29 18.30

Kantenmenge K liest Kanten aus K vor und die Wahl-Kantenpaare aus W bestimmen C B,C C Für jede Kante t o i1 t i2 aus K liest jeweils alle weiteren auf o schreibenden Transaktionen betrachten: K liest K vor bzw. W A B A,B t 0 t 1 t 2 t 3 t 4 t f A D t 0 A t 2 t 2 t 2 A A t 3 t 4 t 0 A t 1 t 1 A A t 1 t 3 t 4 t 4 A t f t 3 A t 4 t 1 t 1 t 4 B B B t 4 t 2 t f t 1 B t 4 B B t2 t4 t1 t 1 t 1 t 1 C C C t 3 t 4 t f t 2 D t f 18.31 18.32

Serialisierbarkeitsgraph fÿr den erweiterten Read / Write - Plan e_p Serialisierbarkeits-Test Sei P ein Read/Write-Plan zu einer Menge von Transaktionen T = {t 1,...,t k } und G(P) = (E, K liest K vor, W) der zugehörige Serialisierbarkeitsgraph. t 0 t 1 t 2 t 3 t 4 t f 1. P ist Sicht-serialisierbar genau dann, wenn es eine Auswahl W * von je einer Kante aus jedem Wahl-Kantenpaar aus W gibt, so daß der entstehende Graph G * = (E, K liest K vor W * ) azyklisch ist. 2. Ist G * azyklisch und ist P ein serieller Read/Write-Plan, der durch topologisches Sortieren aus G * gewonnen wird, so sind P und P Sicht-äquivalent. 18.33 18.34

Die Eigenschaft eines Polygraphen, eine azyklische Auswahl zu besitzen, wurde als NP-vollständig nachgewiesen. Damit ist der Begriff der Sicht-Serialisierbarkeit algorithmisch nur schwer nutzbar. Konflikt-Serialisierbarkeit liefert aber eine wieder gut handhabbare Annäherung. Test auf Azyklizität eines gerichteten Graphen kann durch ein einfaches Graphdurchlauf-Verfahren durchgeführt werden Konflikt-Serialisierbarkeit impliziert Sicht- Serialisierbarkeit Satz Sei P ein Read/Write-Plan zu einer Menge von Transaktionen T = {t 1,...,t k }. Wenn P Konflikt-serialisierbar ist, so ist P auch Sicht-serialisierbar. Beweis: Sei G konflikt (P) = (T, K konflikt ) der Konfliktgraph und G (P) = (T {t 0, t f }, K liest K vor, W) der Serialisierbarkeitsgraph zu P. Für jedes Wahl-Kantenpaar (t i2, t i3, t i1 ) ist (t i2, t i3 ) K konflikt oder (t i3, t i1 ) K konflikt. Ist dann W * eine zutreffende Auswahl, so gilt offensichtlich K liest K vor W * K konflikt. Ist nun P Konflikt-serialisierbar, so enthält K konflikt keinen Zykel, und damit enthält auch K liest K vor W * keinen Zykel. Also ist P auch Sicht-serialisierbar. 18.35 18.36

Konflikt-Serialisierbarkeit echt strenger als Sicht-Serialisierbarkeit t 1 := ( 1.1: Read A, t 2 := ( 2.1: Write A ) 1.2: Write A ) t 3 := ( 3.1: Write A ) Projektion von PlŠnen Durch Annahme A6 vorausgesetzt, daß alle Transaktionen textuell als Ganzes vorliegen. Ein dynamisch arbeitender Scheduler verfügt aber im allgemeinen nicht über diese Kenntnis. e_p z L z o A i.j 0.1: Write A 0 A 1.1: Read A 1. 2.1: Write A 2 < > f 2.1 1.2: Write A 3 <(A,1)> f 1.2 (A) 3.1: Write A 4 < > f 3.1 f.1: Read A 5. Der Serialisierbarkeitsgraph zeigt, daß P Sicht-serialisierbar ist: t 0 t 1 t 2 t 3 Aber der Konfliktgraph zeigt, daß P nicht Konflikt-serialisierbar ist: t f Definition Sei P ein Plan zu einer Menge von Transaktionen T. Für T T sei die Projektion π(p, T ) derjenige Plan, der aus P durch Streichen der Anweisungen aus T \ T entsteht. In diesem Fall bestehe der Definitionsbereich von π(p, T ) aus denjenigen Zeitpunkten, deren Anweisungen nicht gestrichen werden. Definition Eine Klasse κ von Plänen heißt monoton, wenn für jeden Plan P κ auch alle Projektionen π(p, T ) mit T T aus κ sind. t 1 t 2 t 3 18.37 18.38

Monotonie der Konflikt-Serialisierbarkeit Satz Die Klasse der Konflikt-serialisierbaren Pläne ist monoton. Beweis: Wenn P Konflikt-serialisierbar ist, dann ist sein Konfliktgraph G konflikt azyklisch. Da für jedes T T der Konfliktgraph G konflikt der Projektion π(p, T ) ein Untergraph von G konflikt und damit ebenfalls azyklisch ist, sind alle Projektionen wiederum Konflikt-serialisierbar. Konflikt-Serialisierbarkeit ist grš te monotone Teilklasse von Sicht-Serialisierbarkeit Satz Ein Plan P ist Konflikt-serialisierbar genau dann, wenn alle Projektionen π(p, T ) mit T T Sicht-serialisierbar sind. : Ist P Konflikt-serialisierbar, so sind wegen der Monotonie von Konflikt-Serialisierbarkeit alle Projektionen ebenfalls Konflikt-serialisierbar und damit auch Sicht-serialisierbar. : Offensichtlich gilt die folgende Hilfsbehauptung: Liegen in einem Plan eine Anweisung aus t i1 und eine Anweisung aus t i2 wegen eines Objekts o im Konflikt derart, daß keine andere Transaktion in das Objekt o schreibt, dann werden in allen seriellen, Sicht-äquivalenten Plänen t i1 und t i2 in der gleichen Reihenfolge wie die im Konflikt liegenden Anweisungen ausgeführt. 18.39 18.40

Sei dann P nicht Konflikt-serialisierbar. Dann enthält der Konfliktgraph einen Zykel, und es sei (t 1,..., t e, t 1 ) ein Zykel kürzester Länge und T = {t 1,..., t e }. Wir werden zeigen, daß je zwei im Zykel aufeinanderfolgende Transaktionen in jedem seriellen, zu π(p, T ) Sicht-äquivalenten Plan in der Reihenfolge des Zykels ausgeführt werden müßten, d.h. einen solchen Plan kann es nicht geben. Seien also t i und t i+1 zwei im Zykel aufeinanderfolgende Transaktionen, die etwa wegen Objekt o im Konflikt liegende Anweisungen enthalten. Dann enthält der Zykel keine weitere Transaktion t j, die in o schreibt, und obige Hilfsbehauptung liefert das Gewünschte. Denn andernfalls wäre t j im Konfliktgraph mit t i und t i+1 jeweils direkt verbunden, und es läge folgende Situation vor: o t i t i+1 o... t... j Falls (t i, t j ) K konflikt oder (t j, t i+1 ) K konflikt, so wäre (t i, t j,..., t i ) bzw. (t j, t i+1,..., t j ) ein kürzerer Zykel, Widerspruch. Falls (t j, t i ) K konflikt und (t i+1, t j ) K konflikt, so ist (t i, t i+1, t j, t i ) wieder ein Zykel. Falls e > 3, so wäre dies ein kürzerer Zykel, Widerspruch. Falls e = 3, so liegt die im Konflikt liegende Anweisung aus t j entweder vor der beteiligten Anweisung aus t i oder zwischen den beteiligten Anweisungen aus t i und t i+1 oder hinter der beteiligten Anweisung aus t i+1. o In den ersten beiden Fällen wäre auch (t j, t i+1 ) K konflikt und im letzten Fall auch (t i, t j ) K konflikt, und wir hätten jeweils einen Zykel der Länge 2, Widerspruch. 18.41 18.42