Co to jest kontrola współbieżności?
W programowaniu zarządzania danymi kontrola współbieżności jest mechanizmem zaprojektowanym w celu zapewnienia, że dokładne wyniki są generowane przez współbieżne operacje. Wyniki te należy również uzyskać w odpowiednim czasie. Kontrola współbieżności jest bardzo często widoczna w bazach danych, w których można uzyskać pamięć podręczną informacji do wyszukiwania.
Programiści próbują zaprojektować bazę danych w taki sposób, że ważny wpływ transakcji na udostępnione dane będzie seryjnie równoważny. Oznacza to, że dane, które sprawiają, że kontakt z zestawami transakcji byłby w określonym stanie, w którym wyniki można uzyskać, jeśli wszystkie transakcje wykonają serialnie i w określonej kolejności. Czasami dane te są nieprawidłowe w wyniku ich modyfikacji przez dwie transakcje, jednocześnie.
Istnieje wiele sposobów upewnienia się, że transakcje wykonują jedną po drugiej, w tym zastosowanie wzajemnego wykluczenia, a także stworzenie zasobu, który decyduje o tym, które transakcje mają dostęp. To jednak przesada inie pozwoli programistowi skorzystać z kontroli współbieżności w systemie rozproszonym. Kontrola współbieżności umożliwia jednoczesne wykonywanie wielu transakcji, jednocześnie utrzymując te transakcje z dala od siebie, zapewniając linearyzację. Jednym ze sposobów wdrożenia kontroli współbieżności jest wykorzystanie wyłącznej blokady konkretnego zasobu do wykonywania transakcji szeregowych, które udostępniają zasoby. Transakcje zablokują obiekt przeznaczony do użycia, a jeśli jakaś inna transakcja składa żądanie zablokowanego obiektu, transakcja musi czekać, aż obiekt odblokuje.
Wdrożenie tej metody w systemach rozproszonych obejmuje menedżerów blokad - serwery, które wydają zamki zasobów. Jest to bardzo podobne do serwerów dla scentralizowanych wzajemnych wykluczeń, w których klienci mogą żądać zamków i wysyłać wiadomości do wydania zamków na określonym zasobie. Zachowanie seryjnego exeCution jest jednak nadal konieczne do kontroli współbieżności. Jeśli dwie oddzielne transakcje uzyskują dostęp do podobnego zestawu obiektów, wyniki muszą być podobne i jakby te transakcje zostały wykonane w określonej kolejności. Aby zapewnić zamówienie dostępu do zasobu, wprowadzono dwufazowe blokowanie, co oznacza, że transakcje nie są dozwolone nowe zamki po uwolnieniu oddzielnego zamka.
W dwufazowym blokowaniu do kontroli współbieżności jego początkowa faza jest uważana za fazę wzrostu, w której transakcja nabywa potrzebną blokadę. Kolejna faza jest uważana za fazę kurczącą się, w której transakcja uwolniła swoje zamki. Istnieją problemy z tego rodzaju blokowaniem. Jeśli transakcje przerywają, inne transakcje mogą wykorzystywać dane z obiektów zmodyfikowanych i odblokowanych przez przerwane transakcje. Spowodowałoby to przerwanie innych transakcji.