Systemy zarzdzania bazami danych 9 Transakcje Orygina Hector
Systemy zarządzania bazami danych 9. Transakcje Oryginał: Hector Garcia-Molina 9. Transakcje
Współbieżność, wielodostęp T 1 T 2 … Tn BD (więzy integralności) Oryginał: Hector Garcia-Molina 9. Transakcje 2
Przykładowe transakcje T 1: Read(A) A A+100 Write(A) Read(B) B B+100 Write(B) Więzy: A=B Oryginał: Hector Garcia-Molina T 2: Read(A) A A 2 Write(A) Read(B) B B 2 Write(B) 9. Transakcje 3
Plan 1 T 1 Read(A); A A+100 Write(A); Read(B); B B+100; Write(B); T 2 B 25 125 Read(A); A A 2; Write(A); Read(B); B B 2; Write(B); Oryginał: Hector Garcia-Molina A 25 9. Transakcje 250 250 4
Plan 2 T 1 T 2 A 25 Read(A); A A 2; Write(A); 50 Read(B); B B 2; Write(B); Read(A); A A+100 Write(A); Read(B); B B+100; Write(B); Oryginał: Hector Garcia-Molina B 25 50 150 9. Transakcje 150 5
Plan 3 T 1 Read(A); A A+100 Write(A); T 2 A 25 125 Read(A); A A 2; Write(A); 250 Read(B); B B+100; Write(B); 125 Read(B); B B 2; Write(B); Oryginał: Hector Garcia-Molina B 25 9. Transakcje 250 250 6
Plan 4 T 1 Read(A); A A+100 Write(A); T 2 A 25 125 Read(A); A A 2; Write(A); 250 Read(B); B B 2; Write(B); Read(B); B B+100; Write(B); Oryginał: Hector Garcia-Molina B 25 50 250 9. Transakcje 150 7
Taki sam jak plan 5, ale z inną T 2’ T 1 Read(A); A A+100 Write(A); Plan 5 T 2’ A 25 125 Read(A); A A 1; Write(A); 125 Read(B); B B 1; Write(B); Read(B); B B+100; Write(B); Oryginał: Hector Garcia-Molina B 25 25 125 9. Transakcje 125 8
Założenia • 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: P 3=r 1(A)w 1(A)r 2(A)w 2(A)r 1(B)w 1(B)r 2(B)w 2(B) Oryginał: Hector Garcia-Molina 9. Transakcje 9
Akcje zamienne P 3=r 1(A)w 1(A)r 2(A)w 2(A)r 1(B)w 1(B)r 2(B)w 2(B) P 1=r 1(A)w 1(A) r 1(B)w 1(B)r 2(A)w 2(A)r 2(B)w 2(B) T 1 Oryginał: Hector Garcia-Molina T 2 9. Transakcje 10
Akcje niezamienne P 4=r 1(A)w 1(A)r 2(A)w 2(A) r 2(B)w 2(B)r 1(B)w 1(B) • W istocie: T 2 musi poprzedzać T 1 w każdym planie równoważnym, tzn. T 2 T 1 Oryginał: Hector Garcia-Molina 9. Transakcje 11
• T 2 T 1 • Ale także: T 1 T 2 T 1 T 2 P 4 nie można poprzestawiać tak by był szeregowy P 4 nie jest „równoważny” żadnemu planowi szeregowemu P 4 jest „zły” Oryginał: Hector Garcia-Molina 9. Transakcje 12
Powróćmy do P 3=r 1(A)w 1(A)r 2(A)w 2(A)r 1(B)w 1(B)r 2(B)w 2(B) T 1 T 2 brak cykli P 3 jest „równoważny” planowi szeregowemu (w tym wypadku T 1, T 2) Oryginał: Hector Garcia-Molina 9. Transakcje 13
Podstawowe pojęcia Transakcja: ciąg akcji ri(x), wi(x) Akcje konfliktowe: r 1(A) w 2(A) w 1(A) w 2(A) r 1(A) w 2(A) Plan: porządek chronologiczny wykonanych akcji Plan szeregowy: plan bez przeplotu akcji różnych transakcji Oryginał: Hector Garcia-Molina 9. Transakcje 14
A co z akcjami równoległymi? Ti zleca System read(x, t) zleca input(x) Input(X) kończy się t x czas T 2 zleca write(B, S) input(B) System kończy się zleca output(B) System output(B) zleca B S kończy się input(B) Oryginał: Hector Garcia-Molina 9. Transakcje 15
Więc ostatecznie efekt jest jednym z: • P 1=…r 1(x)…w 2(b)… • P 2=…w 2(B)…r 1(x)… Oryginał: Hector Garcia-Molina 9. Transakcje 16
A co z konfliktowymi równoległymi akcjami na tym samym obiekcie? początek r 1(A) początek w 2(A) koniec r 1(A) koniec w 2(A) czas • Zakładamy, że wykonało się r 1(A) w 2(A) lub w 2(A) r 1(A) • Niskopoziomowy mechanizm synchronizacji • Zakładamy, że akcje są „atomowe” Oryginał: Hector Garcia-Molina 9. Transakcje 17
Równoważność konfliktowa P 1, P 2 są równoważne konfliktowo, wtedy i tylko wtedy, gdy P 1 można przekształcić w P 2 za pomocą ciągu zamian niekonfliktowych akcji. Oryginał: Hector Garcia-Molina 9. Transakcje 18
Szeregowalność konfliktowa P jest szeregowalny konfliktowo, wtedy i tylko wtedy, gdy P jest równoważny konfliktowo pewnemu planowi szeregowemu Oryginał: Hector Garcia-Molina 9. Transakcje 19
Graf kolejności • 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 Oryginał: Hector Garcia-Molina 9. Transakcje 20
Ćwiczonko • Jaki jest GK(P), gdy P = w 3(A) w 2(C) r 1(A) w 1(B) r 1(C) w 2(A) r 4(A) w 4(D) • Czy P jest szeregowalny? Oryginał: Hector Garcia-Molina 9. Transakcje 21
Następne ćwiczonko • Jaki jest GK(P), gdy P = w 1(A) r 2(A) r 3(A) w 4(A) ? Oryginał: Hector Garcia-Molina 9. Transakcje 22
Lemat P 1, P 2 są konfliktowo równoważne GK(P 1)=GK(P 2) Dowód: Załóżmy, że GK(P 1) GK(P 2) Ti: Ti Tj w P 1 ale nie w P 2 P 1 = …pi(A). . . qj(A)… pi, qj są P 2 = …qj(A)…pi(A). . . konfliktowe nie da się ich zamienić P 1, P 2 nie są równoważne konfliktowo Oryginał: Hector Garcia-Molina 9. Transakcje 23
Uwaga: GK(P 1)=GK(P 2) P 1, P 2 są konfliktowo równoważne Kontrprzykład: P 1=w 1(A) r 2(A) w 2(B) r 1(B) P 2=r 2(A) w 1(A) r 1(B) w 2(B) Oryginał: Hector Garcia-Molina 9. Transakcje 24
Twierdzenie GK(P 1) acykliczny P 1 szeregowalny konfliktowo ( ) Załóż, że P 1 jest szeregowalny konfliktowo Ps: Ps, P 1 równoważne konfliktowo GK(Ps) = GK(P 1) acykliczny, bo GK(Ps) acykliczny Oryginał: Hector Garcia-Molina 9. Transakcje 25
Dowód c. d. GK(P 1) acykliczny P 1 szeregowalny konfliktowo T 1 ( ) Załóż, że GK(P 1) acykliczny Przekształć P 1 następująco: T 2 (1) Weź T 1 transakcję bez wchodzących krawędzi (2) Przesuń wszystkie akcje T 1 na początek T 3 T 4 P 1 = ……. qj(A)……. p 1(A)…. . (3) Mamy teraz P 1 = < akcje T 1 ><. . . reszta. . . > (4) Powtarzaj dopóki nie osiągniesz planu szeregowego (indukcja) Oryginał: Hector Garcia-Molina 9. Transakcje 26
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 Oryginał: Hector Garcia-Molina 9. Transakcje 27
Jak wykluczyć plany nieszeregowalne? Opcja 2: spraw w GK(P) nie mogły powstać by cykle T 1 T 2 …. . Tn Planista BD Oryginał: Hector Garcia-Molina 9. Transakcje 28
Protokół zakładania zamków Dwie nowe akcje: załóż zamek (wyłączne): zdejmij zamek: T 1 T 2 Planista Oryginał: Hector Garcia-Molina li (A) ui (A) 9. Transakcje Tablica zamków 29
Reguła 1: Legalne transakcje Ti: … li(A) … pi(A) … ui(A). . . Oryginał: Hector Garcia-Molina 9. Transakcje 30
Reguła 2: Poprawny planista P = ……. . li(A) ………. . . ui(A) ……. . . brak lj(A) Oryginał: Hector Garcia-Molina 9. Transakcje 31
Ćwiczonko • Które plany przepuści poprawny planista? Które transakcje są legalne? P 1 = l 1(A)l 1(B)r 1(A)w 1(B)l 2(B)u 1(A)u 1(B) r 2(B)w 2(B)u 2(B)l 3(B)r 3(B)u 3(B) P 2 = l 1(A)r 1(A)w 1(B)u 1(A)u 1(B) l 2(B)r 2(B)w 2(B)l 3(B)r 3(B)u 3(B) P 3 = l 1(A)r 1(A)u 1(A)l 1(B)w 1(B)u 1(B) l 2(B)r 2(B)w 2(B)u 2(B)l 3(B)r 3(B)u 3(B) Oryginał: Hector Garcia-Molina 9. Transakcje 32
Plan 6 T 1 T 2 l 1(A); Read(A) A A+100; Write(A); u 1(A) l 2(A); Read(A) A Ax 2; Write(A); u 2(A) l 2(B); Read(B) B Bx 2; Write(B); u 2(B) l 1(B); Read(B) B B+100; Write(B); u 1(B) Oryginał: Hector Garcia-Molina 9. Transakcje 33
Plan 6 A B T 1 T 2 25 25 l 1(A); Read(A) A A+100; Write(A); u 1(A) 125 l 2(A); Read(A) A Ax 2; Write(A); u 2(A) 250 l 2(B); Read(B) B Bx 2; Write(B); u 2(B) 50 l 1(B); Read(B) B B+100; Write(B); u 1(B) 150 250 150 Oryginał: Hector Garcia-Molina 9. Transakcje 34
Reguła 3 Zamykanie dwufazowe Ti = ……. li(A) ………. . . ui(A) ……. . . Bez zdejmowania Bez zakładania zamków • 2 PL = Two-phase locking Oryginał: Hector Garcia-Molina 9. Transakcje 35
# zamki trzymane przez Ti czas Faza wzrostu Oryginał: Hector Garcia-Molina Faza spadku 9. Transakcje 36
Plan 7 T 1 l 1(A); Read(A) A A+100; Write(A) l 1(B); u 1(A) T 2 uśpienie procesu l 2(A); Read(A) A Ax 2; Write(A); l 2(B) Oryginał: Hector Garcia-Molina 9. Transakcje 37
Plan 7 T 1 l 1(A); Read(A) A A+100; Write(A) l 1(B); u 1(A) T 2 uśpiony l 2(A); Read(A) A Ax 2; Write(A); l 2(B) Read(B); B B+100 Write(B); u 1(B) Oryginał: Hector Garcia-Molina 9. Transakcje 38
Plan 7 T 1 l 1(A); Read(A) A A+100; Write(A) l 1(B); u 1(A) T 2 uśpiony l 2(A); Read(A) A Ax 2; Write(A); l 2(B) Read(B); B B+100 Write(B); u 1(B) l 2(B); u 2(A); Read(B) B Bx 2; Write(B); u 2(B); Oryginał: Hector Garcia-Molina 9. Transakcje 39
Plan 8 (T 2 działa najpierw na B) T 1 l 1(A); Read(A) A A+100; Write(A) l 1(B) T 2 l 2(B); Read(B) B Bx 2; Write(B) l 2(A) uśpiony Oryginał: Hector Garcia-Molina 9. Transakcje 40
• Zakładamy, że zakleszczone transakcje są wycofywane – Nie mają żadnego skutku – Nie pojawiają się w planie Np. , Plan 8 = To miejsce jest celowo puste! Oryginał: Hector Garcia-Molina 9. Transakcje 41
Konfliktowość akcji li(A), ui(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)>, . . . Oryginał: Hector Garcia-Molina 9. Transakcje 42
Poprawność 2 PL Twierdzenie Przestrzeganie reguł 1, 2, 3 (2 PL) daje plany szeregowalne konfliktowo W dowodzie pomoże nam funkcja SH Definicja SH(Ti) = pierwsza akcja u transakcji Ti Oryginał: Hector Garcia-Molina 9. Transakcje 43
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) Oryginał: Hector Garcia-Molina 9. Transakcje 44
Twierdzenie Przestrzeganie reguł 1, 2, 3 (2 PL) daje plany szeregowalne konfliktowo Dowód: (1) Załóżmy, że GK(P) ma cykl T 1 T 2 …. Tn T 1 (2) Na mocy lematu: SH(T 1) < SH(T 2) <. . . < SH(T 1) (3) Niemożliwe, więc GK(P) acykliczny (4) P jest szeregowalny konfliktowo Oryginał: Hector Garcia-Molina 9. Transakcje 45
Efektywność i współbieżność • Dalej należy rozwazyć wiele rzeczy, które poprawią efektywnośc i zwiększą współbieżność bazowego 2 PL – Zamki dzielone – Wieloraka ziarnistość – Wstawienie, usunięcia i fantomy – Inne rodzaje mechanizmów ochrony przetwarzania współbieżnego Oryginał: Hector Garcia-Molina 9. Transakcje 46
Zamki dzielone Dotychczas: P =. . . l 1(A) r 1(A) u 1(A) … l 2(A) r 2(A) u 2(A) … Niekonfliktowe Zamiast tego: P=. . . ls 1(A) r 1(A) ls 2(A) r 2(A) …. us 1(A) us 2(A) Oryginał: Hector Garcia-Molina 9. Transakcje 47
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 Oryginał: Hector Garcia-Molina 9. Transakcje 48
Reguła 1: Legalne transakcje Ti =. . . l-S 1(A) … r 1(A) … u 1 (A) … Ti =. . . l-X 1(A) … w 1(A) … u 1 (A) … Oryginał: Hector Garcia-Molina 9. Transakcje 49
A gdy transakcja czyta i pisze ten sam obiekt? Opcja 1: Zażądaj zamka wyłącznego Ti =. . . l-X 1(A) … r 1(A). . . w 1(A). . . u(A) … Oryginał: Hector Garcia-Molina 9. Transakcje 50
A gdy transakcja czyta i pisze ten sam obiekt? Opcja 2: Promocja (np. , potrzebny odczyt, ale nie wiemy, czy będzie zapis) Ti=. . . l-S 1(A) … r 1(A). . . l-X 1(A) …w 1(A). . . u(A)… - weź 2 -gi zamek na A lub - oddaj S, weź X Oryginał: Hector Garcia-Molina 9. Transakcje 51
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) Oryginał: Hector Garcia-Molina 9. Transakcje 52
Macierz zgodności zamków zgodne S X Oryginał: Hector Garcia-Molina S T N 9. Transakcje X N N 53
Reguła 3: 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 Oryginał: Hector Garcia-Molina 9. Transakcje 54
Twierdzenie Przestrzeganie reguł 1, 2, 3 dla zamków S/X powoduje, że wszystkie plany będą szeregowalne konfliktowo 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) Oryginał: Hector Garcia-Molina 9. Transakcje 55
Rodzaje zamków oprócz S i X Przykłady: (1) zamek increment (2) zamek modyfikacyjny Oryginał: Hector Garcia-Molina 9. Transakcje 56
Zamek increment • Atomowa akcja zwiększania: INi(A) {Read(A); A A+k; Write(A)} • INi(A), INj(A) nie są w konflikcie! INj(A) INi(A) A=7 +10 +2 A=5 A=17 +10 +2 A=15 INj(A) INi(A) Oryginał: Hector Garcia-Molina 9. Transakcje 57
Macierz zgodności zamków increment zgodne S X I Oryginał: Hector Garcia-Molina S T N N 9. Transakcje X N N N I N N T 58
Zamki modyfikacyjne Częste zakleszczenia przy promocjach: T 1 T 2 l-S 1(A) l-S 2(A) l-X 1(A) l-X 2(A) --- Zakleszczenie --Oryginał: Hector Garcia-Molina 9. Transakcje 59
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. Oryginał: Hector Garcia-Molina 9. Transakcje 60
Nowe żądanie zgodne Zamek już trzymany S X U S T N T/N X N N N U T N N • Tablica nie musi być symetryczna? • Co będzie gdy N? Co będzie gdy T? Oryginał: Hector Garcia-Molina 9. Transakcje 61
Uwaga: obiekt A może być zamknięty w tym samym czasie na różne sposoby P 1=. . . l-S 1(A)…l-S 2(A)…l-U 3(A)… l-S 4(A)…? l-U 4(A)…? • Przydzielenie zamka t na obiekcie jest możliwe wtw. wszystkie zamki trzymane na tym obiekcie są zgodne z t Oryginał: Hector Garcia-Molina 9. Transakcje 62
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. . . Oryginał: Hector Garcia-Molina 9. Transakcje 63
Proste podejście SQ (1) Nie ufaj transakcjom, że będą same zakładać i zdejmować zamki (2) Trzymaj wszystkie zamki do chwili zatwierdzenia liczba zamków L (3) Skąd my to znamy? Oryginał: Hector Garcia-Molina 9. Transakcje czas 64
Ti Read(A), Write(B) Tablica zamków Planista, część I l(A), Read(A), l(B), Write(B)… Planista, część II Read(A), Write(B) BD Oryginał: Hector Garcia-Molina 9. Transakcje 65
A B C Jeśli null, obiekt nie ma zamka Informacje o zamkach na B Informacje o zamkach na C . . . Każdy możliwy obiekt Tablica zamków Oryginał: Hector Garcia-Molina 9. Transakcje 66
Lepiej użyć tablicy haszującej H . . . A A Informacje o zamkach na A . . . • Jeśli obiektu nie ma w tablicy haszujacej, nie jest na nim założony żaden zamek Oryginał: Hector Garcia-Molina 9. Transakcje 67
Przykład informacji o zamkach tran tryb czeka? Nst T_link Obiekt: A Tryb zamka: U Czekają? : tak Lista: T 1 S nie T 2 U nie T 3 X tak Do innych zapisów T 3 Oryginał: Hector Garcia-Molina 9. Transakcje 68
Na które obiekty zakładamy zamki? Relacja A Relacja B Krotka A Krotka B Krotka C Blok dyskowy A . . . Blok dyskowy B ? . . . BD Oryginał: Hector Garcia-Molina BD BD 9. Transakcje 69
• 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ść Oryginał: Hector Garcia-Molina 9. Transakcje 70
Możemy mieć jedno i drugie! Spytaj babci klozetowej o poradę. . . Kabina 1 Kabina 2 Kabina 3 Kabina 4 Toaleta Korytarz Oryginał: Hector Garcia-Molina 9. Transakcje 71
Przykład T 1(IS) , T 2(S) R 1 t 2 t 3 t 4 T 1(S) Oryginał: Hector Garcia-Molina 9. Transakcje 72
Przykład T 1(IS) , T 2(IX) R 1 t 2 t 3 T 1(S) Oryginał: Hector Garcia-Molina 9. Transakcje t 4 T 2(X) 73
Wieloraka ziarnistość zgodne Żądanie IS IX S SIX X IS T Trzymany IX T SIX T X N Oryginał: Hector Garcia-Molina T T N N N 9. Transakcje T N N N N N 74
Parent locked in Child can be locked in IS IX S SIX X Oryginał: Hector Garcia-Molina P C 9. Transakcje 75
Zamek na rodzicu IS IX S SIX X Zamki, które można założyć na dziecku IS, S, IX, X, SIX [S, IS] niekoniecznie X, IX, [SIX] żaden Oryginał: Hector Garcia-Molina 9. Transakcje R D 76
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 (6) Ti może zdjąć zamek na Q only tylko wtedy, gdy żadne z dzieci Q nie ma zamka od Ti Oryginał: Hector Garcia-Molina 9. Transakcje 77
Ćwiczonko • Czy T 2 może użyć f 2. 2 w trybie X? Jakie zamki uzyska T 2 w tym celu? T 1(IX) t 1 R 1 T 1(IX) t 2 T 1(X) f 2. 1 Oryginał: Hector Garcia-Molina f 2. 2 t 4 t 3 f 3. 1 9. Transakcje f 3. 2 78
Ćwiczonko • Czy T 2 może użyć f 2. 2 w trybie X? Jakie zamki uzyska T 2 w tym celu? T 1(IX) t 1 T 1(X) t 2 f 2. 1 f 2. 2 Oryginał: Hector Garcia-Molina R 1 t 4 t 3 f 3. 1 9. Transakcje f 3. 2 79
Ćwiczonko • Czy T 2 może użyć f 3. 1 w trybie X? Jakie zamki uzyska T 2 w tym celu? T 1(IS) t 1 T 1(S) t 2 f 2. 1 f 2. 2 Oryginał: Hector Garcia-Molina R 1 t 4 t 3 f 3. 1 9. Transakcje f 3. 2 80
Ćwiczonko • Czy T 2 może użyć f 2. 2 w trybie S? Jakie zamki uzyska T 2 w tym celu? T 1(SIX) t 1 R 1 T 1(IX) t 2 T 1(X) f 2. 1 Oryginał: Hector Garcia-Molina f 2. 2 t 4 t 3 f 3. 1 9. Transakcje f 3. 2 81
Ćwiczonko • Czy T 2 może użyć f 2. 2 w trybie X? Jakie zamki uzyska T 2 w tym celu? T 1(SIX) t 1 R 1 T 1(IX) t 2 T 1(X) f 2. 1 Oryginał: Hector Garcia-Molina f 2. 2 t 4 t 3 f 3. 1 9. Transakcje f 3. 2 82
Operacje wstawienia i usuwania A. . . Z a Oryginał: Hector Garcia-Molina Wstawienie 9. Transakcje 83
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 Oryginał: Hector Garcia-Molina 9. Transakcje 84
Ale nadal jest źle: Fantomy Przykład: relacja R (E#, Name, …) więzy: E# jest kluczem zamki zakładane na krotki R o 1 o 2 E# Name 55 Smith 75 Jones Oryginał: Hector Garcia-Molina 9. Transakcje …. 85
T 1: Wstaw <99, Gore, …> do R T 2: Wstaw <99, Bush, …> do R T 2 T 1 S 1(o 1) S 1(o 2) Sprawdź więzy S 2(o 1) S 2(o 2) Sprawdź więzy. . . Wstaw o 3[99, Gore, . . ] Wstaw o 4[99, Bush, . . ] Oryginał: Hector Garcia-Molina 9. Transakcje 86
Rozwiązanie • Użyj wielorakiej ziarnistości • Przed wstawieniem Q, założ zamek na rodzic(Q) w trybie X R 1 t 1 Oryginał: Hector Garcia-Molina 9. Transakcje t 2 t 3 87
Powrót do przykładu T 1: Wstaw<99, Gore> T 1 X 1(R) T 2: Wstaw<99, Bush> T 2 X 2(R) Uśpienie transakcji Sprawdź więzy Wstaw<99, Gore> U(R) X 2(R) Sprawdź więzy Ups! E# = 99 już jest w R! Oryginał: Hector Garcia-Molina 9. Transakcje 88
Zamiast zamka na R, załóż zamek na indeks Przykład: R E#=2 E#=5 Oryginał: Hector Garcia-Molina . . . Indeks 100<E#<200 Indeks 0<E#<100 . . . E#=107 9. Transakcje E#=109 . . . 89
Przykład wszystkie obiekty pobierane przez korzeń za pośrednictwem wskaźników A zamek T 1 B zamek T 1 D E C F czy możemy zwolnić zamek na A, gdy już go nie potrzebujemy? ? Oryginał: Hector Garcia-Molina 9. Transakcje 90
Pomysł: drabinka A zamek T 1 B zamek T 1 D E Oryginał: Hector Garcia-Molina 9. Transakcje C F 91
Dlaczego to działa? • Załóżmy, że Ti zaczyna od korzenia; zamek X • Ti Tj Ti zakłada zamek na korzeń przed Tj Korzeń Q T i Tj • Działa też gdy nie zawsze zaczynamy od korzenia Oryginał: Hector Garcia-Molina 9. Transakcje 92
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 Ti zdejmie zamek z Q, nie może ponownie założyć zamka na Q Oryginał: Hector Garcia-Molina 9. Transakcje 93
• Protokoły zamków na drzewach mogą być stosowane do indeksów na B+drzewach Korzeń Np. w czasie wstawienia, nie zdejmuj zamka na rodzicu, dopóki nie masz pewności, że nie musisz podzielic jakichś jego dzieci Oryginał: Hector Garcia-Molina 9. Transakcje 94
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 (3) Zapis – Jeśli walidacja OK, zapisz zmiany do bazy Oryginał: Hector Garcia-Molina 9. Transakcje 95
Główna idea • Walidacja jest atomowa • Jeśli T 1, T 2, T 3, … jest kolejnością walidowania, to otrzymany plan jest równoważny konfliktowo planowi Ps = T 1 T 2 T 3. . . Oryginał: Hector Garcia-Molina 9. Transakcje 96
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ę) Oryginał: Hector Garcia-Molina 9. Transakcje 97
Przykład tego, co walidacja wyklucza RS(T 2)={B} RS(T 3)={A, B} = WS(T 2)={B, D} WS(T 3)={C} Początek T 2 Początek T 3 T 2 T 3 zwalidowana czas Oryginał: Hector Garcia-Molina 9. Transakcje 98
dopuszcza Przykład tego, co walidacja wyklucza RS(T 2)={B} RS(T 3)={A, B} = WS(T 2)={B, D} WS(T 3)={C} Początek T 2 Początek T 3 T 2 T 3 zwalidowana T 2 kończy fazę 3 Oryginał: Hector Garcia-Molina 9. Transakcje Początek T 3 czas 99
Inna sytuacja wykluczona przez walidację RS(T 2)={A} WS(T 2)={D, E} RS(T 3)={A, B} WS(T 3)={C, D} T 2 T 3 zwalidowana koniec ŹLE: w 3(D) w 2(D) Oryginał: Hector Garcia-Molina 9. Transakcje T 2 czas 100
dopuszczona Inna sytuacja wykluczona przez walidację RS(T 2)={A} WS(T 2)={D, E} RS(T 3)={A, B} WS(T 3)={C, D} T 2 T 3 zwalidowana koniec T 2 Oryginał: Hector Garcia-Molina 9. Transakcje koniec T 2 czas 101
Reguły walidacji dla Tj (1) Gdy Tj zaczyna fazę 1: ignoruj(Tj) FIN (2) Przy walidacji Tj jeśli poprawna(Tj), to [ VAL U {Tj}; wykonaj fazę 3 (zapis); FIN U {Tj} ] Oryginał: Hector Garcia-Molina 9. Transakcje 102
poprawna (Tj) Dla każdej Ti VAL - ignoruj(Tj) rób jeśli [ WS(Ti) (Ti RS(Tj) lub FIN i WS(Ti) WS(Tj) )], zwróć fałsz; zwróć prawdę; Oryginał: Hector Garcia-Molina 9. Transakcje 103
Ćwiczonko początek walidacja koniec U: RS(U)={B} WS(U)={D} T: RS(T)={A, B} WS(T)={A, C} Oryginał: Hector Garcia-Molina W: RS(W)={A, D} WS(W)={A, C} V: RS(V)={B} WS(V)={D, E} 9. Transakcje 104
Optymistyczne zamki • Przydatne, gdy – Rzadkie konflikty – Jest nadmiar zasobów systemowych – Wymagania/więzy czasu rzeczywistego Oryginał: Hector Garcia-Molina 9. Transakcje 105
- Slides: 105