Co to jest izolacja migawki?

Izolacja migawki to właściwość przetwarzania transakcji i baz danych, która gwarantuje, że wszystkie odczyty dokonywane w transakcji zobaczą tę samą „migawkę” bazy danych. Oznacza to, że transakcja zobowiąże się do pomyślnego przetworzenia żądania, jeśli jej aktualizacje nie będą kolidować z innymi współbieżnymi aktualizacjami. Izolacja migawki to algorytm kontrolny dla współbieżności wielu wersji, który zapewnia poziomy izolacji, które pozwalają uniknąć problemów, które często występują przy współbieżności. Ta izolacja została zaimplementowana przez kilka różnych serwerów z językami zapytań strukturalnych (SQL), które działają z minimalną liczbą anomalii serializacji. Izolacje migawek nie gwarantują jednak pełnej serializacji na serwerze.

Wiele głównych systemów zarządzania danymi zawiera domyślne poziomy izolacji, których nie można serializować i często napotykają anomalie serializacji bez izolacji migawki. Może to powodować, że w dużych systemach codziennie występuje wiele błędów izolacji, co może prowadzić do uszkodzenia danych, zwłaszcza tych, które występują w aplikacjach hurtowni danych. Powodem, dla którego system może działać w tym stanie, jest to, że aplikacje działające na niższych poziomach izolacji mogą poprawić wydajność, jeśli nie wystąpią żadne poważne błędy. Włączenie izolacji migawek w systemie zmniejsza te anomalie i — biorąc pod uwagę czas działania i liczbę występujących błędów — jeszcze bardziej zwiększa wydajność.

Niektóre bazy danych oferują izolację migawek w przeciwieństwie do pełnej serializacji, ale istnieją również anomalie, które mogą wystąpić w bazie danych korzystającej z tego typu izolacji. Te anomalie mogą prowadzić do naruszeń spójności danych, ponieważ transakcje, które zachowują spójność przeplatają się lub są ułożone w naprzemienne warstwy. Jedynym sposobem rozwiązania problemu i zapobiegania takim anomaliom jest manipulowanie aplikacjami poprzez wprowadzenie sztucznych blokad i aktualizacji powodujących konflikty, po których następowała analiza konfliktów między każdą parą transakcji. Innym sposobem rozwiązania tych anomalii jest jednak zmodyfikowanie algorytmów kontroli współbieżności systemu bazy danych w celu automatycznego wykrywania i zapobiegania anomaliom izolacji migawki w czasie wykonywania. Można to zrobić w przypadku ważnych lub dowolnych aplikacji, ale zapewnia izolację, którą można serializować.

Nowsze serwery SQL były w stanie wprowadzić nowe poziomy izolacji, a także nowe poziomy izolacji migawek w celu ulepszenia współbieżności w niektórych aplikacjach. Tam, gdzie wczesne wersje serwera SQL wykorzystywały blokowanie jako podstawę współbieżności, izolacja migawek zależy od ulepszeń wersjonowania wierszy, które mają na celu poprawę wydajności. Poprawia tę wydajność, gdy napotyka scenariusze z blokowaniem odczytu lub zapisu, unikając ich.