• Nie Znaleziono Wyników

Systemy zarządzania bazami danych

N/A
N/A
Protected

Academic year: 2021

Share "Systemy zarządzania bazami danych"

Copied!
105
0
0

Pełen tekst

(1)

Systemy zarządzania bazami

danych

(2)

Współbieżność, wielodostęp

T1 T2 … Tn

BD (więzy

integralności)

(3)

Przykładowe transakcje

T1: Read(A) T2: Read(A) A  A+100 A  A2

Write(A) Write(A) Read(B)Read(B)

B  B+100 B  B2 Write(B) Write(B)

(4)

Plan 1

T1 T2

Read(A); A  A+100 Write(A);

Read(B); B  B+100;

Write(B);

Read(A);A  A2;

Write(A);

Read(B);B  B2;

Write(B);

A B

25 25

125

125 250

250 250 250

(5)

Plan 2

T1 T2

Read(A);A  A2;

Write(A);

Read(B);B  B2;

Write(B);

Read(A); A  A+100 Write(A);

Read(B); B  B+100;

A B

25 25

50

50 150

(6)

Plan 3

T1 T2

Read(A); A  A+100 Write(A);

Read(A);A  A2;

Write(A);

Read(B); B  B+100;

Write(B);

Read(B);B  B2;

Write(B);

A B

25 25

125 250

125 250 250 250

(7)

Plan 4

T1 T2

Read(A); A  A+100 Write(A);

Read(A);A  A2;

Write(A);

Read(B);B  B2;

Write(B);

Read(B); B  B+100;

Write(B);

A B

25 25

125 250

50

(8)

Plan 5

T1 T2’

Read(A); A  A+100 Write(A);

Read(A);A  A1;

Write(A);

Read(B);B  B1;

Write(B);

Read(B); B  B+100;

Write(B);

A B

25 25

125 125

25 125 125 125

Taki sam jak plan 5, ale z inną T2’

(9)

• Chcemy planów dobrych niezależnie od

– początkowego stanu bazy danych – tego co robią transakcje

• Patrzymy tylko na kolejność zapisów i odczytów

Przykład:

Założenia

(10)

P1=r1(A)w1(A) r1(B)w1(B)r2(A)w2(A)r2(B)w2(B) T1 T2

P3=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)

Akcje zamienne

(11)

P4=r1(A)w1(A)r2(A)w2(A) r2(B)w2(B)r1(B)w1(B)

• W istocie:

T2 musi poprzedzać T1

w każdym planie równoważnym,

Akcje niezamienne

(12)

T1 T2 P4 nie można poprzestawiać tak by był szeregowy

P4 nie jest „równoważny”

żadnemu planowi szeregowemu P4 jest „zły”

• T2  T1

• Ale także: T1  T2

(13)

Powróćmy do P3

P3=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B) T1  T2 T1  T2

 brak cykli  P3 jest „równoważny”

planowi szeregowemu

(14)

Podstawowe pojęcia

Transakcja: ciąg akcji ri(x), wi(x)

Akcje konfliktowe: r1(A) w2(A) w1(A)

w2(A) r1(A) w2(A)

Plan: porządek chronologiczny wykonanych akcji

Plan szeregowy: plan bez przeplotu akcji różnych transakcji

(15)

A co z akcjami równoległymi?

Ti zleca System Input(X) t x read(x,t) zleca kończy

input(x) się

czas

T2 zleca

write(B,S) input(B)

kończy się System zleca

(16)

Więc ostatecznie efekt jest jednym z:

• P1=…r1(x)…w2(b)…

• P2=…w2(B)…r1(x)…

(17)

• Zakładamy, że wykonało się r1(A) w2(A) lub w2(A) r1(A)

• Niskopoziomowy mechanizm synchronizacji A co z konfliktowymi równoległymi

akcjami na tym samym obiekcie?

początek r1(A) koniec r1(A)

początek w2(A) koniec w2(A) czas

(18)

Równoważność konfliktowa

P1, P2 są równoważne konfliktowo, wtedy i tylko wtedy, gdy

P1 można przekształcić w P2 za pomocą ciągu zamian niekonfliktowych akcji.

(19)

Szeregowalność konfliktowa

P jest szeregowalny konfliktowo, wtedy i tylko wtedy, gdy

P jest równoważny konfliktowo pewnemu planowi szeregowemu

(20)

• Oznaczamy GK(P), P jest planem

• Węzły: transakcje planu P

• Krawędzie: Ti  Tj jest w GK(P), wtw.

– pi(A), qj(A) są akcjami w P – pi(A) <S qj(A)

– co najmnniej jedna z pi, qj jest zapisem

Graf kolejności

(21)

Ćwiczonko

• Jaki jest GK(P), gdy

P = w3(A) w2(C) r1(A) w1(B) r1(C) w2(A) r4(A) w4(D)

(22)

Następne ćwiczonko

• Jaki jest GK(P), gdy

P = w1(A) r2(A) r3(A) w4(A) ?

(23)

Lemat

P1, P2 są konfliktowo równoważne  GK(P1)=GK(P2)

Dowód:

Załóżmy, że GK(P1)  GK(P2)

  Ti: Ti  Tj w P1 ale nie w P2

 P1 = …pi(A)... qj(A)… pi, qj

P2 = …qj(A)…pi(A)... konfliktowe

(24)

Uwaga: GK(P1)=GK(P2)  P1, P2

konfliktowo równoważne Kontrprzykład:

P1=w1(A) r2(A) w2(B) r1(B) P2=r2(A) w1(A) r1(B) w2(B)

(25)

Twierdzenie

GK(P1) acykliczny  P1 szeregowalny konfliktowo

() Załóż, że P1 jest szeregowalny konfliktowo

  Ps: Ps, P1 równoważne konfliktowo

 GK(Ps) = GK(P1)

 GK(P1) acykliczny, bo GK(Ps) acykliczny

(26)

() Załóż, że GK(P1) acykliczny Przekształć P1 następująco:

(1) Weź T1 transakcję bez wchodzących krawędzi (2) Przesuń wszystkie akcje T1 na początek

P1 = ……. qj(A)…….p1(A)…..

(3) Mamy teraz P1 = < akcje T1 ><... reszta ...>

(4) Powtarzaj dopóki nie osiągniesz planu szeregowego (indukcja)

T1

T2 T3 T4

GK(P1) acykliczny  P1 szeregowalny konfliktowo

Dowód c.d.

(27)

Jak wykluczyć plany nieszeregowalne?

Opcja 1: niech SZBD działa i rejestruje GK(P). Na koniec przetwarzania (np. dnia) sprawdź GK(P) i ogłoś, czy wykonanie było poprawne

(28)

Opcja 2: spraw w GK(P) nie mogły powstać by cykle

T1 T2 ….. Tn Planista

BD

Jak wykluczyć plany nieszeregowalne?

(29)

Protokół zakładania zamków

Dwie nowe akcje:

załóż zamek (wyłączne): li (A) zdejmij zamek: ui (A)

Planista T1 T2

Tablica zamków

(30)

Reguła 1: Legalne transakcje

Ti: … li(A) … pi(A) … ui(A) ...

(31)

Reguła 2: Poprawny planista

P = …….. li(A) ………... ui(A) ……...

brak lj(A)

(32)

• Które plany przepuści poprawny planista?

Które transakcje są legalne?

P1 = l1(A)l1(B)r1(A)w1(B)l2(B)u1(A)u1(B) r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)

P2 = l1(A)r1(A)w1(B)u1(A)u1(B) l2(B)r2(B)w2(B)l3(B)r3(B)u3(B)

P3 = l1(A)r1(A)u1(A)l1(B)w1(B)u1(B) l2(B)r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)

Ćwiczonko

(33)

Plan 6

T1 T2 l1(A);Read(A)

A A+100;Write(A);u1(A) l2(A);Read(A)

A Ax2;Write(A);u2(A) l2(B);Read(B)

B Bx2;Write(B);u2(B) l1(B);Read(B)

(34)

Plan 6

T1 T2 25 25 l1(A);Read(A)

A A+100;Write(A);u1(A) 125 l2(A);Read(A)

A Ax2;Write(A);u2(A) 250 l2(B);Read(B)

B Bx2;Write(B);u2(B) 50 l1(B);Read(B)

B B+100;Write(B);u1(B) 150 250 150

A B

(35)

Reguła 3 Zamykanie dwufazowe

Ti = ……. li(A) ………... ui(A) ……...

Bez zdejmowania Bez zakładania

zamków zamków

(36)

# zamki trzymane przez Ti

czas

Faza Faza

wzrostu spadku

(37)

Plan 7

T1 T2

l1(A);Read(A)

A A+100;Write(A)

l1(B); u1(A) l2(A);Read(A)

A Ax2;Write(A);ll22(B)(B)

uśpienie procesu

(38)

Plan 7

T1 T2

l1(A);Read(A)

A A+100;Write(A)

l1(B); u1(A) l2(A);Read(A)

A Ax2;Write(A);ll22(B)(B) Read(B);B B+100

Write(B); u1(B)

uśpiony

(39)

T1 T2 l1(A);Read(A)

A A+100;Write(A)

l1(B); u1(A) l2(A);Read(A)

A Ax2;Write(A);ll22(B)(B) Read(B);B B+100

Write(B); u1(B)

uśpiony

Plan 7

(40)

Plan 8 (T

2

działa najpierw na B)

T1 T2

l1(A); Read(A) l2(B);Read(B) A A+100;Write(A) B Bx2;Write(B) l

l11(B)(B) l l22(A)(A)

uśpiony uśpiony

(41)

• Zakładamy, że zakleszczone transakcje są wycofywane

– Nie mają żadnego skutku – Nie pojawiają się w planie

Np., Plan 8 =

To miejsce jest celowo puste!

(42)

Konfliktowość akcji l

i

(A), u

i

(A)

• li(A), lj(A) nie są w konflikcie

• li(A), uj(A) są w konflikcie

• Uwaga: brak konfliktu również tu:

– < ui(A), uj(A)>, – < li(A), rj(A)>,...

(43)

Twierdzenie Przestrzeganie reguł 1,2,3 (2PL) daje plany szeregowalne konfliktowo

W dowodzie pomoże nam funkcja SH Definicja SH(T ) = pierwsza akcja u

Poprawność 2PL

(44)

Lemat

Ti  Tj w planie P  SH(Ti) <S SH(Tj) Dowód lematu:

Ti  Tj oznacza, że

S = … pi(A) … qj(A) …; p,q konfliktowe Zgodnie z regułami 1,2:

S = … pi(A) … ui(A) … lj(A) ... qj(A) … Reguła 3: SH(Ti) SH(Tj)

Więc: SH(Ti) <S SH(Tj)

(45)

Dowód:

(1) Załóżmy, że GK(P) ma cykl T1 T2 …. Tn T1

(2) Na mocy lematu:

SH(T1) < SH(T2) < ... < SH(T1) Twierdzenie Przestrzeganie reguł 1,2,3 (2PL) daje plany szeregowalne konfliktowo

(46)

Efektywność i współbieżność

• Dalej należy rozwazyć wiele rzeczy,

które poprawią efektywnośc i zwiększą współbieżność bazowego 2PL

– Zamki dzielone

– Wieloraka ziarnistość

– Wstawienie, usunięcia i fantomy

– Inne rodzaje mechanizmów ochrony przetwarzania współbieżnego

(47)

Zamki dzielone

Dotychczas:

P = ...l1(A) r1(A) u1(A) … l2(A) r2(A) u2(A) …

Niekonfliktowe

Zamiast tego:

(48)

Akcje zamkowe

l-ti(A): załóż zamek na A in trybie t (S lub X) u-ti(A): zdejmij zamek trybu t (S lub X)

Skrót:

ui(A): zdejmij zamek niezależne trybu jego założenia

(49)

Reguła 1: Legalne transakcje

Ti =... l-S1(A) … r1(A) … u1 (A) … Ti =... l-X1(A) … w1(A) … u1 (A) …

(50)

Opcja 1: Zażądaj zamka wyłącznego

Ti = ...l-X1(A) … r1(A) ... w1(A) ... u(A) …

A gdy transakcja czyta i pisze ten

sam obiekt?

(51)

Opcja 2: Promocja

(np., potrzebny odczyt, ale nie wiemy, czy będzie zapis)

Ti=... l-S1(A) … r1(A) ... l-X1(A) …w1(A) ...u(A)…

A gdy transakcja czyta i pisze ten

sam obiekt?

(52)

Reguła 2: Poprawny planista

P = ....l-Si(A) … … ui(A) … brak l-Xj(A)

P = ... l-Xi(A) … … ui(A) … brak l-Xj(A)

brak l-Sj(A)

(53)

Macierz zgodności zamków

zgodne S X

S T N X N N

(54)

Reguła3: Zamykanie dwufazowe

Brak zmian oprócz promocji:

(I) Jeśli promocja bierze więcej zamków (np., S  {S, X}) tak samo!

(II) Jeśli promocja zwalnia zamek (np., S  X)

- może być wykonana w fazie wzrostu

(55)

Dowód: podobnie jak w przypadku X

Szczegół:

l-ti(A), l-rj(A) nie są w konflikcie jeśli zgodne(t,r) l-ti(A), u-rj(A) nie są w konflikcie jeśli zgodne (t,r) Twierdzenie Przestrzeganie reguł 1, 2, 3 dla

zamków S/X powoduje, że wszystkie plany będą szeregowalne konfliktowo

(56)

Rodzaje zamków oprócz S i X

Przykłady:

(1) zamek increment

(2) zamek modyfikacyjny

(57)

Zamek increment

• Atomowa akcja zwiększania: INi(A)

{Read(A); A  A+k; Write(A)}

• INi(A), INj(A) nie są w konflikcie!

A=7

A=5 A=17

A=15

INi(A) +2

INj(A) +10

+10 +2

(58)

zgodne S X I

S T N N

X N N N

I N N T

Macierz zgodności zamków increment

(59)

Zamki modyfikacyjne

Częste zakleszczenia przy promocjach:

T1 T2 l-S1(A)

l-S2(A) l-Xl-X11(A)(A)

l-Xl-X22(A)(A)

(60)

Rozwiązanie

• Jeśli Ti chce przeczytać A i wie, że może poźniej chcieć zmodyfikować A, żąda

zamka modyfikacyjnego (U), a nie dzielonego.

(61)

zgodne S X U

S T N T

X N N N

U T/N N N

• Tablica nie musi być symetryczna?

Nowe żądanie

Zamek już trzymany

(62)

Uwaga: obiekt A może być zamknięty w tym samym czasie na różne sposoby

P1=...l-S1(A)…l-S2(A)…l-U3(A)… l-S4(A)…?

l-U4(A)…?

• Przydzielenie zamka t na obiekcie jest

możliwe wtw. wszystkie zamki trzymane na tym obiekcie są zgodne z t

(63)

Zamki w praktyce

• Każdy SZBD jest inny

– np., może nawet nie udostępniąć możliwości zapewniania, że plany są szeregowalne konfliktowo)

• Jest jedno uproszczenie...

(64)

(1) Nie ufaj transakcjom, że będą same zakładać i zdejmować zamki

(2) Trzymaj wszystkie zamki do chwili zatwierdzenia

(3) Skąd my to znamy?

liczba zamków

czas

Proste podejście

SQ L

(65)

Ti

Read(A),Write(B)

l(A),Read(A),l(B),Write(B)…

Read(A),Write(B) Planista, część I

Planista, część II

BD Tablica

zamków

(66)

Tablica zamków

A CB

...

Informacje o zamkach na B Informacje o zamkach na C Jeśli null, obiekt nie ma zamka

Każdy mliwy obiekt

(67)

Lepiej użyć tablicy haszującej

A

• Jeśli obiektu nie ma w tablicy haszujacej, A

...

H Informacje o zamkach na A

(68)

Przykład informacji o zamkach

tran tryb czeka? Nst T_link

Obiekt:A

Tryb zamka:U Czekają?:tak Lista:

T1 S nie

T2 U nie

T3 XX tak

Do innych zapisów T3

(69)

Na które obiekty zakładamy zamki?

?

Relacja A Relacja B

...

Krotka A Krotka B Krotka C

...

Blok dyskowy

A Blok dyskowy

B

...

(70)

• Zamki działają zawsze, ale czy powinny być na małych czy dużych obiektach?

• Gdy są na dużych obiektach (np. relacjach)

– Potrzeba mniej zamków

– Mniejsze możliwości współbieżności

• Gdy są na małych obiektach (np. krotkach)

– Potrzeba więcej zamków – Większa współbieżność

(71)

Możemy mieć jedno i drugie!

Spytaj babci klozetowej o poradę...

Korytarz

Kabina 1 Kabina 2 Kabina 3 Kabina 4

Toaleta

(72)

Przykład

R1 t1

t2 t3 t4

T1(IS)

T1(S)

, T2(S)

(73)

Przykład

R1 t1

t2 t3 t4

T1(IS)

T1(S)

, T2(IX)

T2(X)

(74)

Wieloraka ziarnistość

zgodne Żądanie

IS IX S SIX X IS

Trzymany IX S SIX X

T T T T N N N N N N

N N

N

N N

N T

N T

N T

N N

T T

(75)

Parent Child can be locked in locked in

ISIX SSIX X

P C

(76)

Zamek Zamki, które można na rodzicu założyć na dziecku

ISIX SSIX X

R D

IS, S

IS, S, IX, X, SIX

[S, IS] niekoniecznie X, IX, [SIX]

żaden

(77)

Reguły

(1) Działaj zgodnie z macierzą zgodności zamków (2) Załóż najpierw zamek na korzeń drzewa

(3) Ti może założyć zamek S lub IS na węzeł Q

tylko wtedy, gdy rodzic(Q) ma zamek IX lub IS założony przez transakcję Ti

(4) Ti może założyć zamek X,SIX,IX na węzeł Q tylko wtedy, gdy rodzic(Q) ma zamek IX lub SIX założony przez transakcję Ti

(5) Ti zakłada zamki dwufazowo

(78)

Ćwiczonko

• Czy T2 może użyć f2.2 w trybie X? Jakie zamki uzyska T2 w tym celu?

R1 t1

t2 t3 t4

T1(IX)

f2.1 f2.2 f3.1 f3.2

T1(IX)

T1(X)

(79)

• Czy T2 może użyć f2.2 w trybie X? Jakie zamki uzyska T2 w tym celu?

R1 t1

t2 t3 t4

T1(X)

T1(IX)

Ćwiczonko

(80)

• Czy T2 może użyć f3.1 w trybie X? Jakie zamki uzyska T2 w tym celu?

R1 t1

t2 t3 t4

T1(S)

f2.1 f2.2 f3.1 f3.2

T1(IS)

Ćwiczonko

(81)

• Czy T2 może użyć f2.2 w trybie S? Jakie zamki uzyska T2 w tym celu?

R1 t1

t2 t3 t4

T1(IX)

T1(SIX)

Ćwiczonko

(82)

• Czy T2 może użyć f2.2 w trybie X? Jakie zamki uzyska T2 w tym celu?

R1 t1

t2 t3 t4

T1(IX)

f2.1 f2.2 f3.1 f3.2

T1(SIX)

T1(X)

Ćwiczonko

(83)

Operacje wstawienia i usuwania

Wstawienie A

Z

...

(84)

Zmiany w regułach zakładania zamków

(1) Zdobądź zamek wyłączny na A, gdy usuwasz A

(2) Po wstawieniu A wykonująca ją transakcja Ti otrzymuje zamek wyłączny na A

(85)

Ale nadal jest źle: Fantomy Fantomy

Przykład: relacja R (E#,Name,…) więzy: E# jest kluczem

zamki zakładane na krotki R E#Name ….

o1 55 Smith

(86)

T

1

: Wstaw <99,Gore,…> do R T

2

: Wstaw <99,Bush,…> do R

T1

T

2

S1(o1) S2(o1) S1(o2) S2(o2)

Sprawdź więzy Sprawdź więzy Wstaw o3[99,Gore,..]

Wstaw o4[99,Bush,..]

... ...

(87)

Rozwiązanie

• Użyj wielorakiej ziarnistości

• Przed wstawieniem Q, założ zamek na rodzic(Q) w trybie X

R1 t1

t2 t3

(88)

Powrót do przykładu

T1: Wstaw<99,Gore> T2: Wstaw<99,Bush>

T1 T2

X1(R)

Sprawdź więzy

Wstaw<99,Gore>

U(R)

X2(R)

Sprawdź więzy

Ups! E# = 99 już jest w R!

X

X22(R)(R) Uśpienie

transakcji

(89)

Zamiast zamka na R, załóż zamek na indeks

Przykład: R

Indeks 0<E#<100

Indeks

100<E#<200

E#=2 E#=5 ... E#=107 E#=109

...

...

(90)

Przykład

A

B C

D

E F

wszystkie obiekty pobierane przez korzeń za

pośrednictwem wskaźników

zamek T1

zamek T1

zamek T1

czy możemy zwolnić zamek na A, gdy już go nie potrzebujemy??

(91)

Pomysł: drabinka

A

B C

D

zamek T1

zamek T1

zamek T1

zamek T1

(92)

Dlaczego to działa?

• Załóżmy, że Ti zaczyna od korzenia; zamek X

• Ti Tj Ti zakłada zamek na korzeń przed Tj

• Działa też gdy nie zawsze zaczynamy od korzenia

Korzeń

Q Ti  Tj

(93)

Reguły protokołu zamków X na drzewach

(1) Pierwszy zamek Ti może być na czymkolwiek

(2) Potem, Ti może zalozyc zamek na węzeł Q tylko jeśli ma zamek na rodzicu Q

(3) Zamki można zdjąć w dowolnej chwili (4) Gdy T zdejmie zamek z Q, nie może

(94)

• Protokoły zamków na drzewach mogą być stosowane do indeksów na B+drzewach

Np. w czasie wstawienia, nie zdejmuj zamka na rodzicu, dopóki nie masz pewności, że nie musisz podzielic jakichś jego dzieci

Korzeń

(95)

Optymistyczne zamki

Transakcje mają trzy fazy:

(1) Odczyt

– Wszystkie dane są odczytywane

– Zapisy wykonywane w przestrzeni tymczasowej – Nie zakłada się zamków

(2) Walidacja

– Sprawdź, czy plan do tej pory szeregowalny

(96)

Główna idea

• Walidacja jest atomowa

• Jeśli T1, T2, T3, … jest kolejnością walidowania, to otrzymany plan jest równoważny

konfliktowo planowi Ps = T1 T2 T3...

(97)

Implementacja walidacji

• SZBD pamięta dwa zbiory:

FIN = tranksakcje, które skończyły fazę 3 (i wszystko już skończyły)

VAL = tranksakcje, które udanie

skończyły fazę 2 (walidację)

(98)

Przykład tego, co walidacja wyklucza

RS(T2)={B} RS(T3)={A,B}

WS(T2)={B,D} WS(T3)={C}

czas

Początek

T2 T2

zwalidowana

T3

zwalidowana

 = 

Początek

T3

(99)

T2

kończy

Przykład tego, co walidacja wyklucza

RS(T2)={B} RS(T3)={A,B}

WS(T2)={B,D} WS(T3)={C}

czas

Początek

T2 T2

zwalidowana T3

zwalidowana

 = 

dopuszcza

Początek

Początek

T3

(100)

Inna sytuacja wykluczona przez walidację RS(T2)={A} RS(T3)={A,B}

WS(T2)={D,E} WS(T3)={C,D}

czas T2

zwalidowana

T3

zwalidowana

koniec

T2

ŹLE: w3(D) w2(D)

(101)

koniec

T2

Inna sytuacja wykluczona przez walidację RS(T2)={A} RS(T3)={A,B}

WS(T2)={D,E} WS(T3)={C,D}

czas T2

zwalidowana T3

zwalidowana

dopuszczona

koniec

T2

(102)

Reguły walidacji dla T j

(1) Gdy Tj zaczyna fazę 1:

ignoruj(Tj)  FIN (2) Przy walidacji Tj

jeśli poprawna(Tj), to

[ VAL  VAL U {Tj};

wykonaj fazę 3 (zapis);

FIN FIN U {Tj} ]

(103)

poprawna (T

j

)

Dla każdej Ti

VAL - ignoruj(Tj) rób jeśli [ WS(Ti)

RS(Tj)   lub

(

Ti

FIN i WS(Ti)

WS(Tj)  )],

zwróć fałsz;

zwróć prawdę;

(104)

Ćwiczonko

T: RS(T)={A,B}

WS(T)={A,C}

V: RS(V)={B}

WS(V)={D,E}

U: RS(U)={B}

WS(U)={D} W: RS(W)={A,D}

WS(W)={A,C}

początek walidacja koniec

(105)

Optymistyczne zamki

• Przydatne, gdy

– Rzadkie konflikty

– Jest nadmiar zasobów systemowych – Wymagania/więzy czasu rzeczywistego

Cytaty

Powiązane dokumenty

(2) Zanim zmieniony x znajdzie się na dysku, wszystkie wpisy dotyczące transakcji, która zmodyfikowała x muszą trafić na dysk. (3) Przy commit , zrzuć dziennik na dysk ( flush

• Otwarcie połączenia z bazą danych jest drogie, ale wielokrotne użycie tanie. – Używaj

– Brak promocji zamków w Oracle; Parametry DB2 ustawione, żeby nie było promocji zamków; brak takiej kontroli w SQL Server. – Dual Xeon (550MHz,512Kb), 1Gb

– Zapis do pamięci podręcznej: transfer kończy się, gdy dane znajdą się w pamięci podręcznej sterownika. • Baterie gwarantują zapis przy

• Punkt kontrolny (częściowy zrzut brudnych strona na dysk) odbywa się w stałych odstępach lub po zapełnieniu dziennika:. – Wpływa na wydajność bazy + Pozwala

– Jeśli często odczytuje się adres dostawcy na podstawie numeru zamówionej części, to schemat 1 jest dobry.. – Jeśli jest wiele dodawanych wiele zamówień, schemat 1

• Indeks niepogrupowany jest dobry, gdy używające go zapytania zwracają znacznie mniej rekordów niż jest stron w tabeli. •

• DISTINCT jest zbędny, ponieważ ssnum jest kluczem w employee, więc też i kluczem w podzbiorze relacji employee...