Synchronisation, Skripte von Semantik

Zwei-Phasen-Sperrprotokoll: Definition. 1. Jedes Objekt, das von einer Transaktion benutzt werden soll, muss vorher entsprechend gesperrt werden.

Art: Skripte

2021/2022

Hochgeladen am 09.08.2022

bella.d.
bella.d. 🇩🇪

4.3

(9)

1 / 66

Toggle sidebar

Diese Seite wird in der Vorschau nicht angezeigt

Lass dir nichts Wichtiges entgehen!

bg1
1
Mehrbenutzer
Synchronisation
Konflikt-Kategorien
Serialisierung
Historien
Sperrungen
Verklemmungen
Optimistische Synchronisation
Synchronisation in SQL
Kapitel 11
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42

Unvollständige Textvorschau

Nur auf Docsity: Lade Synchronisation und mehr Skripte als PDF für Semantik herunter!

Mehrbenutzer Synchronisation

Konflikt-Kategorien Serialisierung Historien Sperrungen Verklemmungen Optimistische Synchronisation Synchronisation in SQL

Kapitel 11

Mehrbenutzersynchronisation Ausführung der drei Transaktionen T 1 , T 2 und T 3 : (a) im Einzelbetrieb und(b) im (verzahnten) Mehrbenutzerbetrieb (gestrichelte Linienrepräsentieren Wartezeiten)

Zeitachse

T 1 T 2 T 3 T 1 T 2 T 3

Fehler bei unkontrolliertem Mehrbenutzerbetrieb II Abhängigkeit von nicht freigegebenen Änderungen

read(A,a

1

write(A,a

2

a

2

:= a

2

read(A,a

2

T 2

abort

read(B,b

1

write(A,a

1

a

1

:= a

1

  • 300 T 1

Schritt

Fehler bei unkontrolliertem Mehrbenutzerbetrieb III Phantomproblem

from

Konten

select

sum(Kontostand)

values

C,1000,...)

insert into

Konten

from

Konten

select

sum(KontoStand)

T 2 T 1

S erielle Ausführung von T 1 vor T 2 , also T 1 | T 2^ commit

write( A)

read( A)

write( C)

read( C)

BOT

commit

write( B)

read( B)

write( A)

read( A)

BOT

T 2 T 1 Schritt

Nicht serialisierbare Historie commit

write( B)

read( B)

commit

write( B)

read( B)

write( A)

read( A)

BOT

write( A)

read( A)

BOT

T 3 T 1 Schritt

Eine Überweisung ( T 1 ) und eine Zinsgutschrift ( T 3 )

commit

write(

B,b 1

b 1

b 1

read(

B,b 1

commit

write(

B,b 2

b 2

b 2

read

(B,b 2 )

write

(A,a 2 )

a 2

a 2

read(

A,a 2

BOT

write(

A,a 1

a 1

a 1

  • 50

read(

A,a 1

BOT

T

3

T

1

Schritt

Dieselbe r/w-Konstellation, diesmalzum Konflikt führend. Die DB greiftzur Kontrolle nur auf die r/w-Struktur zu, nicht auf die Semantikder Anwendung!

Motivation: Zusammenhang ACID – Scheduler Um die Isolation (I in ACID) einer Transaktion zugewährleisten, darf die Datenbank nur serialisierbareHistorien zulassen. Der Scheduler stellt dies sicher, nicht indem er (imNachhinein) schaut, ob die Historie serialisierbar war,sondern indem er nichtserialisierbare Historien gar nichterst zulässt.

Theorie der Serialisierbarkeit Konsistenzanforderung einer Transaktion T i entweder abort oder commit aber nicht beides! Falls T i^ ein abort durchführt, müssen alle anderen Operationen p (A) vori ai ausgeführt werden, also p (A) <i i^ a .i Analoges gilt für das commit , d.h. p (A) <i i^ c i^ falls T i „ committed “. Wenn T i^ ein Datum A liest und auch schreibt, muss die Reihenfolge festgelegt werden, also entweder ri (A) < i^ w (A)i^ oder w (A) <i^ i^ r (A).i

Theorie der Serialisierbarkeit II

Historie

r (A) undi^ r (A): In diesem Fall ist die Reihenfolge der Ausführungenj irrelevant, da beide TAs in jedem Fall denselben Zustand lesen. Diese beidenOperationen stehen also nicht in Konflikt zueinander, so dass in der Historieihre Reihenfolge zueinander irrelevant ist.r (A) undi^ w (A): Hierbei handelt es sich um einen Konflikt, daj T i^

entweder

den alten oder den neuen Wert von

A liest. Es muss also entweder r (A) vori^ w (A) oderj w (A) vor rj (A) spezifiziert werden.i^ w (A) undi r (A): analogj w (A) undi w (A): Auch in diesem Fall ist die Reihenfolge der Ausführungj

entscheidend für den Zustand der Datenbasis; also handelt es sich umKonfliktoperationen, für die die Reihenfolge festzulegen ist.

Beispiel-Historie mit vollständig geordneter Zeit r

(B) w

(A) w

(B) c

w

(C) r

(A) w

(A) c

r

(A) w

(B) c

w

(C) H = t

Historie für drei Transaktionen Beispiel-Historie für 3 TAs r

(B) w

(A) w

(B) c

w

(C) r

(A) w

(A) c

r

(A) w

(B) c

w

(C) H =

r 1

(A)

r 2

(C)

w 1

(A)

w 2

(C)

r 1

(B)

w 1

(B)

c 1

r 2

(A)

w 2

(A)

c 2 r 1

(A)

w 1

(A)

r 2

(C)

w 2

(C)

r 1

(B)

w 1

(B)

c 1

r 2

(A)

w 2

(A)

c 2 r 1

(A)

w 1

(A)

r 1

(B)

r 2

(C)

w 2

(C)

w 1

(B)

c 1

r 2

(A)

w 2

(A)

c 2 r 1

(A)

w 1

(A)

r 1

(B)

w 1

(B)

c 1

r 2

(C)

w 2

(C)

r 2

(A)

w 2

(A)

c 2 commit

write( A)

read( A)

commit

write( B)

read( B)

write( C)

write( A)

read( C)

BOT

read( A)

BOT

T 2 T 1 Schritt (s. Folie 6) (s. Folie 7) commit

write( A)

read( A)

write( C)

read( C)

BOT

commit

write( B)

read( B)

write( A)

read( A)

BOT

T 2 T 1 Schritt

Serialisierbare Historie Eine Historie ist serialisierbar, wenn sie äquivalent zu einer seriellen Historie Hs ist. Historie ... r (A) w

(A) w

(B) r (A) w

(A) c

r (A) w

(B) c

H = c