(Microsoft PowerPoint - 15-transakcje
Transkrypt
(Microsoft PowerPoint - 15-transakcje
Planista (scheduler (scheduler)) • Zarządzaniem transakcjami zajmuje się wyspecjalizowany moduł planisty. • Planista związany jest z każdym menedżerem danych (MD) zarządzającym danymi określonej lokalnej bazy danych na określonym węźle sieci. • Tylu jest planistów ile lokalnych baz danych w systemie. • Nie ma natomiast żadnego centralnego planisty, który koordynowałby dostęp do lokalnych baz danych (taki centralny nadzorca jest natomiast potrzebny do rozwiązywania globalnych zakleszczeń). • Każda transakcja może kierować swoje operacje odczytu/zapisu do wielu lokalnych baz danych. Transakcje – Blokowanie Dwufazowe (B2F) Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski (c) T. Pankowski, Transakcje B2F 1 Przetwarzanie transakcji T1, T2, ..., Tn Menadżer Transakcji MT Planista Tn+1, ..., Tm Menadżer Transakcji MT Planista Serwer bazy danych (SZBD) Serwer bazy danych (SZBD) Serwer bazy danych (SZBD) • przekazanie operacji o do wykonania menadżerowi danych, umieszczenie operacji o w kolejce, jeśli znajduje się ona w konflikcie z inną operacją i należy poczekać na zakończenie tej operacji; odrzucenie operacji i tym samym całej transakcji, jeśli na przykład konieczne jest to z punktu widzenia rozwiązywania zakleszczeń (dead locs). Planista Menadżer Danych MD • Planista przyjmując operację o ma do dyspozycji następujące działania: Menadżer Transakcji MT Menadżer Danych MD Menadżer transakcji (MT) koordynuje wykonywanie transakcji. Decyduje, do jakiego menadżera danych (MD) przekazać operację transakcji. Operacje przejmuje planista związany z MD i zarządza ich wykonywaniem posługując się protokołem B2F (Blokowanie 2-Fazowe) (c) T. Pankowski, Transakcje B2F 2 Działanie planisty Tm+1, ..., Tp Menadżer Danych MD (c) T. Pankowski, Transakcje B2F 3 Opisana strategia działania planisty jest w komercyjnych SZBD realizowana za pomocą tzw. protokołu blokowania dwufazowego (B2F). Planista realizujący tę strategię nazywany jest planistą blokowania dwufazowego (planistą B2F). (c) T. Pankowski, Transakcje B2F 4 Fazy B2F Reguły planisty B2F Jeśli operacja pi[x] może być wykonana, to planista zakłada blokadę (odpowiednio do odczytu, SHARED, lub do zapisu, EXCLUSIVE) na daną x dla transakcji Ti i operację tę przekazuje MD do wykonania; jeśli operacja ta nie może być wykonana, to umieszczana jest w kolejce. Zdjęcie założonej blokady może nastąpić najwcześniej wtedy, gdy MD powiadomi planistę o zakończeniu wykonywania operacji. Jeśli nastąpiło zdjęcie jakiejkolwiek blokady założonej dla transakcji T, to dla T nie można już założyć żadnej innej blokady (reguła B2F). (c) T. Pankowski, Transakcje B2F 5 Realizacja różnych poziomów izolacji w protokole B2F Zakładanie blokad na rzecz transakcji T Zdejmowanie blokad założonych na rzecz transakcji T Sposób zdejmowania blokad związany jest z realizacją przetwarzania odpowiadającego różnym poziomom izolacji. (c) T. Pankowski, Transakcje B2F 6 B2F – realizacja poziomu izolacji 0 Założenia: Dana zablokowana na czas realizacji operacji Read (blokada S) jest natychmiast odblokowywana po zakończeniu tej operacji. Dana zablokowana na czas realizacji operacji Write (blokada X) zmienia blokadę na S, to znaczy może na niej być realizowana operacja Read, ale nie operacja Write. Blokada dla operacji Write zdejmowana jest całkowicie dopiero po zatwierdzeniu transakcji Blokadę S (SHARED) dla tej samej danej może uzyskać dowolna liczba transakcji. Blokadę X (EXCLUSIVE) dla konkretnej danej może uzyskać tylko jedna transakcja. S i X nie mogą być jednocześnie założone na tę samą daną dla dwóch różnych transakcji. Uzyskanie blokady S jest konieczne dla odczytania danej. Uzyskanie blokady X jest konieczne dla zapisania (modyfikacji, usunięcia) danej. (c) T. Pankowski, Transakcje B2F Trzecia reguła B2F uzasadnia nazwę „blokowanie dwufazowe”, gdyż w procesie wykonywania transakcji można wyróżnić dwie fazy: fazę zakładania blokad i fazę zdejmowania blokad. 7 (c) T. Pankowski, Transakcje B2F 8 B2F – realizacja poziomu izolacji 2 i 3 B2F – realizacja poziomu izolacji 1 B2F z poziomem izolacji 2: Zdejmowanie blokad następuje dopiero po zatwierdzeniu transakcji. B2F z poziomem izolacji 3: dodatkowo utrzymywane są blokady sterowane przez warunki, tzn. zblokowana jest możliwość takich aktualizacji (w tym dołączania), które wpływają na rekordy spełniające określony warunek. Dana zablokowana na czas realizacji operacji Read (blokada S) jest natychmiast odblokowywana po zakończeniu tej operacji. Dana zablokowana na czas realizacji operacji Write (blokada X) odblokowywana jest dopiero po zatwierdzeniu transakcji. (c) T. Pankowski, Transakcje B2F 9 Cechy B2F (c) T. Pankowski, Transakcje B2F 10 Poprawność B2F Niech H = (o1, o2, ..., om) będzie historią przetwarzania dla zbioru transakcji Σ = {T1, T2, ..., Tn}. Podstawową cechę planisty B2F jest to, że każda historia przetwarzania transakcji utworzona przez planistę B2F jest poprawna. Wadą planisty B2F jest to, że może prowadzić do powstania zakleszczeń (ang. deadlock). (c) T. Pankowski, Transakcje B2F Definicja Mówimy, że operacja oj poprzedza w H operację ok, jeśli j < k oraz operacje te są konfliktowe – stosujemy wówczas zapis oj < ok. Definicja Mówimy, że transakcja T poprzedza w H transakcję T’, co zapisujemy T < T’, jeśli zachodzi jeden z dwóch warunków: • istnieją w H operacje o i o’ pochodzące odpowiednio z T i T’, takie że o < o’, lub • istnieje transakcja T”, taka że T < T’’ < T’. 11 (c) T. Pankowski, Transakcje B2F 12 Poprawność B2F (c.d.) Poprawność B2F – przykład Definicja Historię H nazywamy poprawną, jeśli dla każdej pary transakcji T, T’ ∈Σ spełniony jest warunek: • jeśli T < T’ , to nieprawda, że T’ < T. Jeśli historia H jest poprawna, to określona na niej relacja „<„ wprowadza częściowy porządek w zbiorze transakcji. Zbiór transakcji możemy wówczas przedstawić w postaci acyklicznego grafu skierowanego zwanego grafem uszeregowalności (GU) transakcji. Σ = {T1, T2, T3} – przetwarzane transakcje. H1 = (w2[x], w3[y], w3[x], r1[y], w1[y] ) Zatem: T2 < T3 < T1. H1 jest poprawną historią przetwarzania transakcji. Σ = {T1, T2, T3} – przetwarzane transakcje H2 = ( r1[x], w2[x], r1[x], w3[y], c2, w3[x], r1[y], w1[y] ) Zatem: T2 < T1 < T3 < T1. H2 nie jest poprawną historią przetwarzania transakcji. (c) T. Pankowski, Transakcje B2F 13 Poprawność B2F – przykład 14 Poprawność B2F - twierdzenie Twierdzenie Każda historia przetwarzania utworzona przez planistę B2F jest poprawna. Σ = {T1, T2, T3} – przetwarzane transakcje. H1 = ( r1[x], w2[x], w3[y], c2, w3[x], r1[y], w1[y] ) Dowód: Pokażemy, że w każdej historii przetwarzania H utworzonej przez planistę B2F, dla każdej pary transakcji T i T’ zachodzi warunek: jeśli T < T’ , to nieprawda, że T’ < T. 1. Zauważmy, że jeśli T < T’, to założenie jakiejś blokady na rzecz transakcji T’ musi być poprzedzone zdjęciem jakiejś blokady założonej na rzecz transakcji T. 2. Dowód poprowadzimy nie wprost. Przypuśćmy, że w H zachodzą: T < T’ oraz T’ < T. Wówczas, uwzględniając p. 1 widzimy, że założenie jakiejś blokady na rzecz transakcji T musi być poprzedzone zdjęciem jakiejś blokady założonej na rzecz tej transakcji. Jest to sprzeczne z trzecią regułą B2F. 3. Z 2. wynika zatem, że rozważana historia przetwarzania H nie mogła by utworzona przez planistę B2F. Dowodzi to prawdziwości twierdzenia. Zatem: T2 < T3 < T1. H1 jest poprawną historią przetwarzania transakcji. Σ = {T1, T2, T3} – przetwarzane transakcje H2 = ( r1[x], w2[x], r1[x], w3[y], c2, w3[x], r1[y], w1[y] ) Zatem: T2 < T1 < T3 < T1. H2 nie jest poprawną historią przetwarzania transakcji. (c) T. Pankowski, Transakcje B2F (c) T. Pankowski, Transakcje B2F 15 (c) T. Pankowski, Transakcje B2F 16 Blokowanie zasobów na różnych poziomach granulacji (MS SQL Server) Pamiętanie danych (MS SQL Server) Database Zasób Data (file) .mdf or .ndf Log (file) .Idf RID Row IDentifier. Używany do blokowania pojedynczego wiersza w tabeli Key Klucz; blokowanie krotek w indeksie. Stosowany do blokowania zakresów wartości klucza na poziomie izolacji SERIALIZABLE. 8-KB strona danych lub indeksu. Page Tables, Indexes Extent (8 contiguous 8-KB pages) Dane Page (8 KB) Opis Extent Spójna grupa ośmiu stron danych lub stron indeksu Table Cała tabela obejmująca wszystkie dane i indeksy. DB Baza danych. Max row size = 8060 bytes (c) T. Pankowski, Transakcje B2F Tryby blokowanie (MS SQL Server) Typ blokady (c) T. Pankowski, Transakcje B2F 17 18 Tryby blokowanie (MS SQL Server) Typ blokowanie Opis Współdzielenie Shared (S) Dla operacji, które nie zmieniają danych (korzystają z nich w trybie readonly), takich np. jak wyrażenie SELECT Aktualizacja Update (U) Zakładany na dane, które mogą być aktualizowane. Zapobiega zakleszczeniom w sytuacji, gdy wiele transakcji czyta dane z zamiarem ich aktualizacji. Wyłączność Exclusive (X) Dla operacji modyfikacji danych, takich jak UPDATE, INSERT, DELETE. Zapewnia, że aktualizacje nie mogą być wykonane przez różne transakcje na tych samych danych w tym samym czasie. Intencja dot. hierarchii Używany w celu ustalenia hierarchii blokad. Intent (IS, IX, SIX) Na schemacie Schema (Sch-S, SCh-M) Dwa rodzaje blokad: SCh-S (stabilność schematu) – zakładana w czasie kompilacji zapytania (uniemożliwia zmianę schematu); SCh-M (modyfikacja schematu) – zakładana w czasie modyfikacji schematu tabeli (dodanie kolumny, usunięcie tabeli). Aktualizacja masowa Bulk update (BU) W czasie masowego kopiowania danych, gdy ustawiony jest TABLOCK 19 Opis Intencja współdzielenia Intent shared (IS) Wskazuje intencję czytania pewnych (ale nie wszystkich) zasobów na niższym poziomie hierarchii przez założenie na te zasoby blokady S. Intencja wyłączności Intent exclusive (IX) Wskazuje intencję modyfikowania pewnych (ale nie wszystkich) zasobów na niższym poziomie hierarchii przez założenie blokady X na te zasoby. IX jest nadzbiorem dla IS. Współdzielony z intencją wyłączności Shared with intent exclusive (SIX) Wskazuje intencję czytania wszystkich zasobów na niższym poziomie hierarchii i modyfikacji pewnych (nie wszystkich) zasobów na niższym poziomie hierarchii przez założenie blokady IX na te zasoby. Możliwa jest następująca sytuacja: Czytamy wszystkie strony należące do tabeli i chcemy modyfikować niektóre krotki z tych stron. Wówczas: X – na modyfikowanych krotkach, IX – blokada na modyfikowanych stronach SIX – na tabeli. (c) T. Pankowski, Transakcje B2F 20 Blokowanie zakresu klucza (Key Key--range Locking) Kompatybilność blokad (MS SQL Server) • Istniejący typ blokowania Żądany typ blokowania IS S U IX SIX X Intent shared (IS) Yes Yes Yes Yes Yes No Shared (S) Yes Yes Yes No No No Update (U) Yes Yes No No No No Intent exclusive (IX) Yes No No Yes No No Shared with intent exclusive (SIX) Yes No No No No No Exclusive (X) No No No No No No • • • • (c) T. Pankowski, Transakcje B2F 21 Blokowanie zakresu klucza rozwiązuje problem fantomów i umożliwia zrealizowanie postulatu szeregowalności transakcji. Blokada pokrywa indywidualne rekordy oraz zakresy między rekordami, dzięki czemu nie jest możliwe włączenie ani usuwanie fantomów w zbiorze rekordów przetwarzanych przez transakcję. Realizowana jest tylko na poziomie izolacji SERIALIZABLE. Uszeregowalność wymaga, aby każde zapytanie wykonywane w obrębie transakcji miało dostępny dokładnie ten sam zbiór krotek, również wtedy, gdy jest ponownie wykonywane w obrębie tej samej transakcji. Jeśli zapytanie chce mieć dostęp do krotki, która nie istnieje, to krotka ta nie może być dołączona przez inną transakcję przed zakończeniem pierwszej transakcji. Gdyby druga transakcja miała prawo dołączenia tej krotki, to krotka ta byłaby fantomem. Mechanizm blokowania musi także zabronić dołączenia krotki do strony, która nie jest blokowana przez pierwszą transakcję. (c) T. Pankowski, Transakcje B2F 22 (c) T. Pankowski, Transakcje B2F 24 Blokowanie zakresu klucza (Key Key--range Locking) (c.d.) • • Blokowanie zakresu klucza oparte jest na pokrywaniu pozycji w indeksie i zakresów między tymi pozycjami, a nie na blokowaniu krotek w tabeli bazowej. Każda próba dołączenia, modyfikacji czy usunięcia krotki z danego zakresu przez drugą transakcję wymaga modyfikacji indeksu, zatem druga transakcja jest wstrzymywana do czasu zakończenia pierwszej, gdyż blokada zakresu klucza pokrywa odpowiednie pozycje indeksu. (c) T. Pankowski, Transakcje B2F 23