Co to jest kontrola współbieżności?
Kontrola współbieżności w systemie zarządzania bazami danych to procedura zarządzania jednoczesnymi operacjami bez kolidowania ze sobą. Zapewnia, że transakcje bazy danych są wykonywane jednocześnie i dokładnie, aby zapewnić prawidłowe wyniki bez naruszenia integralności danych odpowiedniej bazy danych.
Jednoczesny dostęp jest dość łatwy, jeśli wszyscy użytkownicy tylko czytają dane. W żaden sposób nie mogą sobie nawzajem przeszkadzać. Chociaż w przypadku każdej praktycznej bazy danych miałaby mieszankę operacji ODCZYTU i ZAPISU, a zatem współbieżność jest wyzwaniem.
Kontrola współbieżności DBMS służy do rozwiązywania takich konfliktów, które najczęściej występują w systemie wielu użytkowników. 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 bazodanowych wykonywanych jest jednocześnie, które wymagają dostępu do tych samych danych.
W tym samouczku dowiesz się
- Co to jest kontrola współbieżności?
- Potencjalne problemy z współbieżnością
- Dlaczego warto korzystać z metody współbieżności?
- Protokoły kontroli współbieżności
- Protokoły oparte na blokadach
- Protokół dwufazowego blokowania (2PL)
- Protokoły oparte na sygnaturach czasowych
- Protokół oparty na walidacji
- Charakterystyka protokołu dobrej współbieżności
Potencjalne problemy z 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ępują, 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ę ( brudny odczyt )
- Niepowtarzalny odczyt występuje, gdy druga transakcja próbuje uzyskać dostęp do tego samego wiersza kilka razy i za każdym razem odczytuje różne dane.
- Niepoprawne podsumowanie występuje, gdy jedna transakcja przejmuje podsumowanie wartości wszystkich wystąpień powtarzającego się elementu danych, a druga transakcja aktualizuje kilka wystąpień tego konkretnego elementu danych. W takiej sytuacji otrzymane podsumowanie nie odzwierciedla prawidłowego wyniku.
Dlaczego warto korzystać z metody współbieżności?
Powody używania metody kontroli współbieżności to DBMS:
- Stosowanie izolacji poprzez wzajemne wykluczanie sprzecznych transakcji
- Rozwiązywanie problemów 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ć interakcje między współbieżnymi transakcjami. Ta kontrola jest osiągana za pomocą schematów kontroli współbieżnej.
- Kontrola współbieżności pomaga zapewnić możliwość serializacji
Przykład
Załóżmy, że dwie osoby idą jednocześnie do kiosków elektronicznych, aby kupić bilet do kina na ten sam film i ten sam czas na przedstawienie.
Jednak zostało tylko jedno miejsce na pokaz filmowy w tym konkretnym teatrze. Bez kontroli współbieżności w DBMS możliwe jest, że obaj widzowie ostatecznie kupią bilet. Jednak metoda kontroli współbieżności nie pozwala na to. Obaj widzowie nadal mogą uzyskać dostęp do informacji zapisanych w bazie danych miejsc do oglądania filmów. Ale 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 wielkością narzutów, które narzucają. Poniżej przedstawiono techniki kontroli współbieżności w DBMS:
- Protokoły oparte na blokadach
- Protokół dwufazowego blokowania
- Protokoły oparte na sygnaturach czasowych
- Protokoły oparte na walidacji
Protokoły oparte na blokadach
Protokoły oparte na blokadzie w DBMS to mechanizm, w którym transakcja nie może odczytać ani zapisać danych, dopóki nie uzyska odpowiedniej blokady. Protokoły oparte na blokadach pomagają wyeliminować problem współbieżności w DBMS dla transakcji jednoczesnych, blokując lub izolując konkretną transakcję dla pojedynczego użytkownika.
Blokada to zmienna danych, która jest powiązana z elementem danych. Ta blokada oznacza, że operacje, które można wykonać na elemencie danych. Blokady w DBMS pomagają zsynchronizować dostęp do elementów bazy danych przez współbieżne transakcje.
Wszystkie żądania blokady są kierowane do menedżera kontroli współbieżności. Transakcje są realizowane dopiero po przyznaniu żądania blokady.
Blokady binarne: Blokada binarna na elemencie danych może być zablokowana lub odblokowana.
Współdzielone / wyłączne: ten typ mechanizmu blokowania rozdziela blokady w DBMS na podstawie ich zastosowań. Jeśli na elemencie danych uzyskano blokadę w celu wykonania operacji zapisu, nazywa się to blokadą na wyłączność.
1. Blokada współdzielona (S):
Blokada współdzielona jest również nazywana blokadą tylko do odczytu. Dzięki wspólnej blokadzie element danych może być współużytkowany między transakcjami. Dzieje się tak, ponieważ nigdy nie będziesz mieć uprawnień do aktualizowania danych w elemencie danych.
Na przykład rozważmy przypadek, w którym dwie transakcje odczytują stan konta osoby. Baza danych pozwoli im czytać, umieszczając wspólną blokadę. Jeśli jednak inna transakcja chce zaktualizować saldo tego konta, wspólna blokada uniemożliwi to do zakończenia procesu odczytu.
2. Ekskluzywna blokada (X):
Dzięki blokadzie wyłączności element danych można zarówno odczytywać, jak i zapisywać. To jest wyłączne i nie może być przechowywane jednocześnie w tym samym elemencie danych. X-lock jest żądany za pomocą instrukcji lock-x. Transakcje mogą odblokować pozycję danych po zakończeniu operacji „zapisu”.
Na przykład, gdy transakcja wymaga zaktualizowania salda konta osoby. Możesz zezwolić na tę transakcję, umieszczając na niej blokadę X. Dlatego, gdy druga transakcja chce odczytać lub zapisać, blokada na wyłączność zapobiega tej operacji.
3. Prosty protokół blokady
Ten typ protokołów opartych na blokadach umożliwia transakcjom uzyskanie blokady każdego obiektu przed rozpoczęciem operacji. Transakcje mogą odblokować pozycję danych po zakończeniu operacji „zapisu”.
4. Blokowanie przed zgłoszeniem roszczenia
Protokół blokady wstępnego zgłaszania roszczeń pomaga ocenić operacje i utworzyć listę wymaganych elementów danych, które są potrzebne do zainicjowania procesu wykonywania. W sytuacji, gdy wszystkie blokady są przyznane, transakcja jest realizowana. Następnie wszystkie blokady zwalniają się po zakończeniu wszystkich operacji.
Głód
Głód to sytuacja, w której transakcja musi czekać przez nieokreślony okres, aby uzyskać blokadę.
Oto powody głodu:
- Gdy schemat oczekiwania na zablokowane elementy nie jest odpowiednio zarządzany
- W przypadku wycieku zasobów
- Ta sama transakcja jest wielokrotnie wybierana jako ofiara
Impas
Zakleszczenie odnosi się do konkretnej sytuacji, w której co najmniej dwa procesy czekają na siebie, aby zwolnić zasób lub więcej niż dwa procesy oczekują na zasób w łańcuchu okrężnym.
Protokół dwufazowego blokowania
Protokół Two Phase Locking Protocol, znany również jako protokół 2PL, jest metodą kontroli współbieżności w systemie DBMS, która zapewnia możliwość serializacji poprzez zastosowanie blokady do danych transakcji, która blokuje innym transakcjom jednoczesny dostęp do tych samych danych. Protokół Two Phase Locking pomaga wyeliminować problem współbieżności w DBMS.
Ten protokół blokowania dzieli fazę wykonywania transakcji na trzy różne części.
- W pierwszej fazie, gdy transakcja zaczyna być wykonywana, wymaga zgody na wymagane blokady.
- W drugiej części transakcja uzyskuje wszystkie blokady. Gdy transakcja zwalnia pierwszą blokadę, rozpoczyna się trzecia faza.
- W tej trzeciej fazie transakcja nie może wymagać żadnych nowych blokad. Zamiast tego zwalnia tylko nabyte blokady.
Protokół dwufazowego blokowania umożliwia każdej transakcji wykonanie żądania blokady lub odblokowania w dwóch krokach:
- Faza wzrostu : W tej fazie transakcja może uzyskać blokady, ale nie może zwolnić żadnych blokad.
- Faza zmniejszania : W tej fazie transakcja może zwolnić blokady, ale nie może uzyskać nowej blokady
Prawdą jest, że protokół 2PL oferuje możliwość serializacji. Nie gwarantuje to jednak, że zakleszczenia się nie pojawią.
Na powyższym diagramie widać, że lokalne i globalne detektory zakleszczeń wyszukują zakleszczenia i rozwiązują je, wznawiając transakcje do ich stanów początkowych.
Ścisła dwufazowa metoda blokowania
Ścisły dwufazowy system blokowania jest prawie podobny do 2PL. Jedyną różnicą jest to, że Strict-2PL nigdy nie zwalnia blokady po jej użyciu. Przechowuje wszystkie blokady do momentu zatwierdzenia i zwalnia wszystkie blokady za jednym razem, gdy proces się zakończy.
Scentralizowane 2PL
W Centralized 2 PL za proces zarządzania zamkami odpowiada jedna lokalizacja. Ma tylko jednego menedżera blokad dla całego DBMS.
Kopia główna 2PL
Mechanizm podstawowej kopii 2PL, wiele menedżerów zamków jest dystrybuowanych do różnych witryn. Następnie określony menedżer blokad jest odpowiedzialny za zarządzanie blokadą dla zestawu elementów danych. Po zaktualizowaniu kopii podstawowej zmiana jest propagowana do urządzeń podrzędnych.
Dystrybucja 2PL
W tego rodzaju dwufazowym mechanizmie blokowania menedżerowie zamków są rozmieszczeni we wszystkich lokalizacjach. Są odpowiedzialni za zarządzanie blokadami danych w tej witrynie. Jeśli żadne dane nie są replikowane, jest to równoważne z kopią podstawową 2PL. Koszty komunikacji w przypadku Distributed 2PL są znacznie wyższe niż w przypadku kopii podstawowej 2PL
Protokoły oparte na sygnaturach czasowych
Protokół oparty na sygnaturze czasowej w DBMS to algorytm, który wykorzystuje czas systemowy lub licznik logiczny jako znacznik czasu do serializacji wykonywania współbieżnych transakcji. Protokół oparty na sygnaturach czasowych zapewnia, że wszystkie sprzeczne operacje odczytu i zapisu są wykonywane w kolejności sygnatur czasowych.
W tej metodzie zawsze starsza transakcja ma priorytet. Wykorzystuje czas systemowy do określenia znacznika czasu transakcji. Jest to najczęściej używany protokół współbieżności.
Protokoły oparte na blokadach pomagają zarządzać kolejnością między konfliktowymi transakcjami, kiedy zostaną wykonane. Protokoły oparte na sygnaturach czasowych zarządzają konfliktami natychmiast po utworzeniu operacji.
Przykład:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Zalety :
- Harmonogramy można serializować, podobnie jak protokoły 2PL
- Bez czekania na transakcję, co eliminuje możliwość zakleszczenia!
Niedogodności:
Głód jest możliwy, jeśli ta sama transakcja jest ponownie uruchamiana i ciągle przerywana
Protokół oparty na walidacji
Protokół oparty na walidacji w DBMS, znany również jako technika optymistycznej kontroli współbieżności, jest metodą pozwalającą uniknąć współbieżności w transakcjach. W tym protokole aktualizowane są lokalne kopie danych transakcji, a nie same dane, co powoduje mniejsze zakłócenia podczas wykonywania transakcji.
Protokół oparty na walidacji jest wykonywany w trzech następujących fazach:
- Przeczytaj Fazę
- Faza walidacji
- Napisz Phase
Przeczytaj Fazę
W fazie odczytu wartości danych z bazy danych mogą zostać odczytane przez transakcję, ale operacja zapisu lub aktualizacje są stosowane tylko do lokalnych kopii danych, a nie do rzeczywistej 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 Phase
W fazie zapisu aktualizacje są stosowane do bazy danych, jeśli walidacja zakończyła się pomyślnie, w przeciwnym razie; aktualizacje nie są stosowane, a transakcja jest wycofywana.
Charakterystyka protokołu dobrej 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.
- Pozwala na równoległe wykonywanie transakcji w celu osiągnięcia maksymalnej współbieżności.
- Jego mechanizmy przechowywania i metody obliczeniowe powinny być skromne, aby zminimalizować narzut.
- Musi narzucić pewne ograniczenia w strukturze atomowych działań transakcji.
Podsumowanie
- Kontrola współbieżności to procedura w DBMS służąca do zarządzania jednoczesnymi operacjami bez konfliktów między sobą.
- Utracone aktualizacje, brudny odczyt, niepowtarzalny odczyt i niepoprawny problem podsumowujący to problemy związane z brakiem kontroli współbieżności.
- Oparte na blokadach, dwufazowe, oparte na sygnaturach czasowych, oparte na walidacji to typy protokołów obsługi współbieżności
- Blokada może być współdzielona (S) lub wyłączna (X)
- Protokół blokowania dwufazowego, znany również jako protokół 2PL, wymaga transakcji, powinien uzyskać blokadę po zwolnieniu jednej ze swoich blokad. Ma 2 fazy wzrostu i kurczenia się.
- Algorytm oparty na sygnaturze czasowej używa sygnatury czasowej do serializacji wykonywania współbieżnych transakcji. Protokół używa czasu systemowego lub liczby logicznej jako znacznika czasu.