(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

Podobne dokumenty