Co to jest izolacja migawki?
Izolacja migawek to właściwość przetwarzania transakcji i baz danych, która gwarantuje, że wszystkie odczyty dokonane w transakcji zobaczą tę samą „migawkę” bazy danych. Oznacza to, że transakcja zobowiązuje się do pomyślnego przetworzenia żądania, jeśli jego aktualizacje nie powodują konfliktu z innymi równoległymi aktualizacjami. Izolacja migawki jest algorytmem sterowania dla współbieżności wielu wersji, który zapewnia poziomy izolacji pozwalające uniknąć problemów, które często występują w przypadku współbieżności. Ta izolacja została zaimplementowana przez kilka różnych serwerów SQL (strukturalnego języka zapytań), działających przy minimalnej ilości 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óre nie podlegają szeregowaniu i często napotykają anomalie serializacji bez izolacji migawkowej. Może to powodować, że w dużych systemach codziennie występują liczne błędy izolacji, co może prowadzić do uszkodzenia danych, szczególnie tych, które występują w hurtowniach 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ą poważne błędy. Włączenie izolacji migawkowej do systemu zmniejsza te anomalie i - biorąc pod uwagę czas operacji i liczbę błędów, które występują - zwiększa wydajność jeszcze bardziej.
Niektóre bazy danych oferują izolację migawkową w przeciwieństwie do pełnej możliwości serializacji, ale istnieją również anomalie, które mogą wystąpić w bazie danych wykorzystującej ten typ izolacji. Anomalie te mogą prowadzić do naruszenia spójności danych, ponieważ transakcje zachowujące spójność przeplatają się lub są ułożone na przemian. Jednym ze sposobów rozwiązania problemu i zapobiegania takim anomaliom jest manipulowanie aplikacjami za pomocą sztucznych blokad i sprzecznych aktualizacji, a następnie 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 zwiększenia współbieżności w niektórych aplikacjach. Tam, gdzie wczesne wersje serwera SQL używały blokowania jako podstawy współbieżności, izolacja migawek jest zależna od ulepszeń wersjonowania wierszy przeznaczonych do poprawy wydajności. Poprawia to wydajność, gdy napotyka scenariusze z blokowaniem odczytu lub zapisu, unikając ich.