Kontrola współbieżności DBMS: protokoły oparte na znacznikach czasu i blokadach
Co to jest kontrola współbieżności?
Nadzór konkurencji w systemie zarządzania bazą danych jest to procedura zarządzania równoczesnymi operacjami bez kolizji ze sobą. Zapewnia, że transakcje bazy danych są wykonywane równocześnie i dokładnie, aby uzyskać poprawne wyniki bez naruszania integralności danych odpowiedniej bazy danych.
Dostęp współbieżny jest dość łatwy, jeśli wszyscy użytkownicy po prostu odczytują dane. Nie ma możliwości, aby mogli sobie nawzajem przeszkadzać. Jednak w przypadku każdej praktycznej bazy danych, miałaby ona mieszankę operacji READ i WRITE, a zatem współbieżność jest wyzwaniem.
Kontrola współbieżności DBMS jest używana do rozwiązywania takich konfliktów, które najczęściej występują w systemach wieloużytkownikowych. Dlatego kontrola współbieżności jest najważniejszym elementem prawidłowego funkcjonowania systemu zarządzania bazą danych, w którym dwie lub więcej transakcji bazy danych jest wykonywanych jednocześnie, co wymaga dostępu do tych samych danych.
Potencjalne problemy współbieżności
Oto kilka problemów, które prawdopodobnie napotkasz podczas korzystania z metody kontroli współbieżności DBMS:
- Utracone aktualizacje występuje, gdy wiele transakcji wybiera ten sam wiersz i aktualizuje wiersz na podstawie wybranej wartości
- Niezatwierdzone problemy z zależnościami występują, gdy druga transakcja wybiera wiersz, który jest aktualizowany przez inną transakcję (brudna lektura)
- Odczyt niepowtarzalny występuje, gdy druga transakcja próbuje uzyskać dostęp do tego samego wiersza kilka razy i za każdym razem odczytuje inne dane.
- Nieprawidłowy problem z podsumowaniem ma miejsce, gdy jedna transakcja obejmuje sumę wszystkich wystąpień powtarzającego się elementu danych, a druga transakcja aktualizuje kilka wystąpień tego konkretnego elementu danych. W takiej sytuacji powstałe podsumowanie nie odzwierciedla prawidłowego wyniku.
Dlaczego warto używać metody współbieżności?
Powody stosowania metody kontroli współbieżności to DBMS:
- Aby zastosować izolację poprzez wzajemne wykluczenie pomiędzy sprzecznymi transakcjami
- Aby rozwiązać problemy związane z konfliktami odczytu i zapisu oraz zapisu i zapisu
- Aby zachować spójność bazy danych poprzez ciągłe zachowywanie przeszkód w wykonywaniu
- System musi kontrolować interakcję pomiędzy współbieżnymi transakcjami. Sterowanie to osiąga się za pomocą schematów sterowania współbieżnego.
- Kontrola współbieżności pomaga zapewnić możliwość serializacji
Przykład
Załóżmy, że dwie osoby w tym samym czasie idą do kiosku elektronicznego, aby kupić bilet do kina na ten sam film i ten sam seans.
Jednakże na seans filmowy w tym konkretnym kinie pozostało już tylko jedno miejsce. Bez kontroli współbieżności w systemie DBMS możliwe jest, że obaj widzowie ostatecznie kupią bilet. Jednak metoda kontroli współbieżności nie pozwala na to. Obaj widzowie nadal mają dostęp do informacji zapisanych w bazie danych miejsc w kinach. Jednak kontrola współbieżności zapewnia bilet tylko kupującemu, który jako pierwszy zakończył proces transakcji.
Protokoły kontroli współbieżności
Różne protokoły kontroli współbieżności oferują różne korzyści między ilością współbieżności, na którą pozwalają, a ilością narzutu, który narzucają. Poniżej przedstawiono techniki kontroli współbieżności w DBMS:
- Protokoły oparte na blokadach
- Protokół blokowania dwufazowego
- Protokoły oparte na znacznikach czasu
- Protokoły oparte na walidacji
Protokoły oparte na blokadach
Protokoły oparte na blokadach w DBMS jest mechanizmem, w którym transakcja nie może Odczytać ani Zapisać danych, dopóki nie uzyska odpowiedniej blokady. Protokół oparty na blokadzie pomaga wyeliminować problem współbieżności w DBMS dla jednoczesnych transakcji poprzez zablokowanie lub odizolowanie konkretnej transakcji dla pojedynczego użytkownika.
Blokada to zmienna danych, która jest skojarzona z elementem danych. Ta blokada oznacza operacje, które można wykonać na elemencie danych. Blokady w DBMS pomagają synchronizować dostęp do elementów bazy danych za pomocą równoczesnych transakcji.
Wszystkie żądania blokady kierowane są do menedżera kontroli współbieżności. Transakcje są realizowane dopiero po zaakceptowaniu żądania blokady.
Zamki binarne: Blokada binarna elementu danych może być zablokowana lub odblokowana.
Udostępnione/wyłączne: Ten typ mechanizmu blokującego oddziela blokady w DBMS na podstawie ich zastosowań. Jeśli blokada jest uzyskana na elemencie danych w celu wykonania operacji zapisu, nazywa się to blokadą wyłączną.
1. Wspólny zamek (S):
Blokada współdzielona nazywana jest także blokadą tylko do odczytu. Dzięki blokadzie współdzielonej element danych można udostępniać pomiędzy transakcjami. Dzieje się tak dlatego, że nigdy nie będziesz mieć uprawnień do aktualizowania danych w elemencie danych.
Rozważmy na przykład przypadek, w którym dwie transakcje odczytują saldo konta danej osoby. The baza danych pozwoli im czytać, umieszczając wspólną blokadę. Jeśli jednak inna transakcja będzie chciała zaktualizować saldo tego konta, wspólna blokada uniemożliwi to do czasu zakończenia procesu odczytu.
2. Ekskluzywny zamek (X):
Dzięki Exclusive Lock element danych może być zarówno odczytywany, jak i zapisywany. Jest to wyłączność i nie może być utrzymywane jednocześnie na tym samym elemencie danych. X-lock jest żądany za pomocą instrukcji lock-x. Transakcje mogą odblokować element danych po zakończeniu operacji „zapisu”.
Na przykład, gdy transakcja wymaga aktualizacji salda konta osoby. Możesz zezwolić na tę transakcję, nakładając na nią blokadę X. Dlatego, gdy druga transakcja chce odczytać lub zapisać, blokada wyłączna zapobiega tej operacji.
3. Uproszczony protokół blokady
Ten typ protokołów opartych na blokadach pozwala transakcjom na uzyskanie blokady każdego obiektu przed rozpoczęciem operacji. Transakcje mogą odblokować element danych po zakończeniu operacji „zapisu”.
4. Wstępne zgłoszenie blokady
Protokół blokady wstępnej pomaga ocenić operacje i utworzyć listę wymaganych elementów danych, które są potrzebne do zainicjowania procesu wykonania. W sytuacji, gdy wszystkie blokady zostaną przyznane, transakcja jest wykonywana. Następnie wszystkie blokady są zwalniane, gdy wszystkie jej operacje są zakończone.
Głód
Głód to sytuacja, w której transakcja musi czekać przez czas nieokreślony, aby uzyskać blokadę.
Oto przyczyny głodu:
- Schemat oczekiwania na zablokowane elementy nie jest prawidłowo zarządzany
- W przypadku wycieku zasobów
- Ta sama transakcja jest wielokrotnie wybierana jako ofiara
Deadlock
Impas odnosi się do szczególnej sytuacji, w której dwa lub więcej procesów czeka na siebie nawzajem, aż zwolni zasób, lub w której więcej niż dwa procesy czekają na zasób w łańcuchu cyklicznym.
Protokół blokowania dwufazowego
Protokół blokowania dwufazowego znany również jako protokół 2PL jest metodą kontroli współbieżności w DBMS, która zapewnia serializację poprzez zastosowanie blokady do danych transakcji, która blokuje innym transakcjom dostęp do tych samych danych jednocześnie. Protokół Two Phase Locking pomaga wyeliminować problem współbieżności w DBMS.
Ten protokół blokujący dzieli fazę realizacji transakcji na trzy różne części.
- W pierwszej fazie, gdy transakcja zaczyna się realizować, wymaga pozwolenia na potrzebne blokady.
- W drugiej części transakcja uzyskuje wszystkie blokady. Kiedy transakcja zwalnia swoją pierwszą blokadę, rozpoczyna się trzecia faza.
- W tej trzeciej fazie transakcja nie może wymagać żadnych nowych zamków. Zamiast tego zwalnia tylko nabyte blokady.
Protokół Two-Phase Locking umożliwia każdej transakcji wykonanie żądania zablokowania lub odblokowania w dwóch krokach:
- Faza wzrostu: W tej fazie transakcja może uzyskać blokady, ale nie może ich zwolnić.
- Faza kurczenia się: W tej fazie transakcja może zwolnić blokady, ale nie może uzyskać żadnej nowej blokady
Prawdą jest, że protokół 2PL oferuje serializowalność. Jednak nie zapewnia, że nie dojdzie do impasu.
Na powyższym diagramie widać, że lokalne i globalne detektory blokad wyszukują blokady i rozwiązują je, wznawiając transakcje do ich stanów początkowych.
Ścisła metoda blokowania dwufazowego
Ścisły dwufazowy system blokowania jest prawie podobny do 2PL. Jedyną różnicą jest to, że Strict-2PL nigdy nie zwalnia blokady po użyciu. Zatrzymuje wszystkie blokady aż do punktu zatwierdzenia i zwalnia je za jednym razem, gdy proces się zakończy.
Scentralizowany 2PL
W Centralized 2 PL za proces zarządzania zamkami odpowiedzialna jest jedna lokalizacja. Ma tylko jednego menedżera blokad dla całego systemu DBMS.
Kopia podstawowa 2PL
Podstawowy mechanizm kopiowania 2PL, wielu menedżerów zamków jest rozproszonych w różnych lokalizacjach. Następnie określony menedżer blokad jest odpowiedzialny za zarządzanie blokadą zestawu elementów danych. Po zaktualizowaniu kopii podstawowej zmiana jest propagowana do urządzeń podrzędnych.
Dystrybuowane 2PL
W tego rodzaju dwufazowym mechanizmie blokującym menedżery zamków są dystrybuowane do wszystkich lokalizacji. Są odpowiedzialni za zarządzanie blokadami danych w tej witrynie. Jeżeli żadne dane nie są replikowane, jest to równoznaczne z kopią pierwotną 2PL. Koszty komunikacji w wersji rozproszonej 2PL są znacznie wyższe niż w wersji podstawowej 2PL
Protokoły oparte na znacznikach czasu
Protokół oparty na znaczniku czasu w DBMS jest algorytmem, który używa System Time lub Logical Counter jako znacznika czasu do serializacji wykonywania współbieżnych transakcji. Protokół oparty na znaczniku czasu zapewnia, że wszystkie kolidujące operacje odczytu i zapisu są wykonywane w kolejności znacznika czasu.
W tej metodzie priorytet ma zawsze starsza transakcja. Wykorzystuje czas systemowy do określenia znacznika czasu transakcji. Jest to najczęściej używany protokół współbieżności.
Protokół oparty na blokadach pomaga zarządzać kolejnością między konfliktowymi transakcjami, kiedy zostaną wykonane. Protokół oparty na znacznikach czasu zarządza konfliktami, gdy tylko operacja zostanie utworzona.
Przykład:
Suppose there are there transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Zalety:
- Harmonogramy można serializować, podobnie jak protokoły 2PL
- Nie trzeba czekać na transakcję, co eliminuje ryzyko zablokowania transakcji!
Niedogodności:
Głód jest możliwy, jeśli ta sama transakcja zostanie wznowiona i stale przerywana
Protokół oparty na walidacji
Protokół oparty na walidacji w systemie DBMS znana również jako Optymistyczna Technika Kontroli Współbieżności to metoda pozwalająca uniknąć współbieżności transakcji. W tym protokole aktualizowane są lokalne kopie danych transakcji, a nie same dane, co skutkuje mniejszą ingerencją w realizację transakcji.
Protokół oparty na walidacji wykonywany jest w następujących trzech fazach:
- Przeczytaj Fazę
- Faza walidacji
- Napisz fazę
Przeczytaj Fazę
W fazie odczytu wartości danych z bazy danych mogą zostać odczytane przez transakcję, ale operacje zapisu i aktualizacji są stosowane tylko do lokalnych kopii danych, a nie do samej bazy danych.
Faza walidacji
W fazie walidacji dane są sprawdzane, aby upewnić się, że nie doszło do naruszenia możliwości serializacji podczas stosowania aktualizacji transakcji do bazy danych.
Napisz fazę
W fazie zapisu aktualizacje są stosowane w bazie danych, jeśli weryfikacja przebiegła pomyślnie; w przeciwnym razie; aktualizacje nie zostaną zastosowane, a transakcja zostanie wycofana.
Charakterystyka dobrego protokołu współbieżności
Idealny mechanizm DBMS do kontroli współbieżności ma następujące cele:
- Musi być odporny na awarie witryny i komunikacji.
- Umożliwia równoległą realizację transakcji w celu osiągnięcia maksymalnej współbieżności.
- Mechanizmy przechowywania i metody obliczeniowe powinny być skromne, aby zminimalizować obciążenie.
- Musi narzucić pewne ograniczenia na strukturę atomowych działań transakcji.
Podsumowanie
- Kontrola współbieżności to procedura w DBMS do zarządzania jednoczesnymi operacjami bez powodowania wzajemnych konfliktów.
- Utracone aktualizacje, błędny odczyt, niepowtarzalny odczyt i nieprawidłowe podsumowanie to problemy, na które napotykamy z powodu braku kontroli współbieżności.
- Oparte na blokadach, dwufazowe, oparte na znacznikach czasu, oparte na walidacji to typy protokołów obsługi współbieżności
- Zamek może być współdzielony (S) lub ekskluzywny (X)
- Dwufazowy protokół blokowania, znany również jako protokół 2PL, wymaga transakcji, która powinna uzyskać blokadę po zwolnieniu jednej z blokad. Ma 2 fazy wzrostu i kurczenia się.
- Algorytm oparty na znaczniku czasu wykorzystuje znacznik czasu do serializacji wykonywania współbieżnych transakcji. Protokół wykorzystuje Czas systemowy lub licznik logiczny jako znacznik czasu.