Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 28055|Odpowiedź: 3

[Źródło] SQL Server – kontrola wielowersyjnej współbieżności

[Skopiuj link]
Opublikowano 28.01.2021 17:55:52 | | |
Spójność bazy danych jest również jednym z ważnych wskaźników mierzących wydajność DBMS. Obecnie większość komercyjnych baz danych (DB2, SQL Server) korzysta z protokołu Dwufazowego Blokowania (2PL) do kontroli współbieżności, który zapewnia serializację równoczesnego wykonywania transakcji. Jednak 2PL musi zablokować wszelkie dane, zanim będzie mógł je odczytać lub zapisać. W macierzy zgodności blokującej blokady S (Share Locks) i X blokady (wyłączne blokady) są niekompatybilne, więc gdy transakcja 1 wykonuje operację odczytu danych A (plus blokada S), a transakcja 2 chce zapisać dane (dodać blokadę X), transakcja 2 musi poczekać, aż transakcja 1 zwolni blokadę S na danych A, zanim będzie kontynuowana. Multi-Version Concurrency Control (MVCC) dobrze rozwiązuje ten problem. W systemie wielowersyjnym każda data zapisu generuje nową wersję, a operacja odczytu może odczytać odpowiednią wersję w razie potrzeby, dzięki czemu operacje odczytu i zapisu nie blokują się nawzajem. MVCC zwiększa współbieżność, ale wprowadza też narzut pamięci masowej związany z utrzymywania wielu wersji.

Silnik bazy danych Microsoft SQL Server wprowadza nową implementację istniejącego poziomu izolacji transakcji – zadeklarowanych odczytów, które zapewniają migawki na poziomie instrukcji z wykorzystaniem wersjonowania wiersza. Silnik bazy baz danych SQL Server wprowadza także nowy poziom izolacji transakcji – migawki umożliwiające tworzenie migawek na poziomie transakcji, które również wykorzystują wersjonowanie wierszy.

Ustawienie opcji READ_COMMITTED_SNAPSHOT bazy danych na ON umożliwia zaangażowaną izolację odczytu przy użyciu wersjonowania wiersza. Ustawienie opcji ALLOW_SNAPSHOT_ISOLATION bazy danych na ON umożliwia izolację migawek. Gdy któraś z opcji jest włączona dla bazy danych, silnik bazy danych zachowuje wersję każdego zmodyfikowanego wiersza. Za każdym razem, gdy transakcja modyfikuje wiersz, obraz wiersza sprzed modyfikacji jest kopiowany na stronę w magazynie wersji. Magazyn wersji to zbiór stron danych w tempdb. Jeśli istnieje wiele linii modyfikacji transakcji, wiele wersji tej linii będzie połączonych w łańcuch wersji. Operacja odczytu z wykorzystaniem wersjonowania wiersza pobiera ostatnią wersję każdego wiersza, która została zatwierdzona w momencie rozpoczęcia transakcji lub instrukcji.

Aplikacje napisane dla SQL Server 2008 lub nowe dla SQL Server implementują izolację zatwierdzeń odczytu za pomocą wersjonowania wiersza, określając poziom izolacji transakcji dla zatwierdzeń odczytu, gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest włączona. Wszystkie odczyty będą sprawdzać wersję wiersza, która została zatwierdzona na początku oświadczenia. To dostarczy migawkę danych na poziomie instrukcji.

Aplikacje napisane dla SQL Server implementują izolację snapshotów, określając poziom izolacji transakcji snapshot, gdy opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest WŁĄCZONA. Wszystkie odczyty w transakcji snapshot będą sprawdzać wersję wiersza, która została zatwierdzona na początku transakcji. To dostarczy migawkę danych na poziomie transakcji.

Dla transakcji wykorzystujących poziomy izolacji wierszowej, odczyty nie żądają współdzielonych blokad danych. Oznacza to, że czytniki korzystające z wersjonowania wierszy nie uniemożliwiają innym czytelnikom lub autorom dostępu do tych samych danych. Podobnie pisarz nie przeszkadza czytelnikowi. Jednak scenarzyści przeszkadzają sobie nawzajem (nawet gdy pracują na poziomie izolacji opartym na wersowaniu wierszy). Dwie operacje zapisu nie mogą jednocześnie modyfikować tych samych danych.

Funkcja Snapshot Isolation rozszerza ramy blokowania w SQL Server 2008, umożliwiając aplikacjom przeglądanie wartości przed dokonaniem jakichkolwiek modyfikacji danych. Zapobiega to zablokowaniu aplikacji, a jednocześnie dostarcza dane naprawdę przesłane. Read Committed Snapshot w SQL Server 2008 wymaga aktywacji administratora bazy danych, co pozwala na odczyt danych w transakcjach tylko do odczytu. Kontrola współbieżności transakcji tylko do odczytu przez SI jest bardzo dobra, ale nie jest jasne, czy dotyczy to transakcji aktualizacyjnych. Mniej korzystne jest, gdy długotrwałe transakcje aktualizacji konkurują z krótkoterminowymi transakcjami na wysokim poziomie. Jeśli transakcja między bazami danych próbuje użyć standardu Snapshot Isolation (SI) zamiast ustawić wszystkie bazy danych, transakcja kończy się niepowodzeniem. To niewątpliwie stwarza pewne przeszkody dla skalowalności. Wygląda na to, że Microsoft ma jeszcze długą drogę do osiągnięcia własnego SI, które będzie silniejsze niż specyfikacja SQL 92.

Przed jakąkolwiek modyfikacją wykonaj kopię poprzedniej wersji, a wszystkie kolejne operacje odczytu odczytają skopiowaną wersję, a modyfikacja utworzy nową wersję. W ten sposób,Operacje odczytu i zapisu nie blokują się nawzajem. Zaletą stosowania tego mechanizmu wersjonowania linii jest stosunkowo wysoka równocześność programu, ale wadą jest to, że choć użytkownik nie odczytuje brudnych danych, może to być wartość danych, która jest modyfikowana i wkrótce wygaśnie. Jeśli zmodyfikujesz dane na podstawie tej wygasłej wartości, spowoduje to błąd logiczny

Polecenia SQL:


Linki referencyjne:

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.





Poprzedni:Elasticsearch (ES) replikuje indeks klonów
Następny:Tutorial: CuBase10.5
Opublikowano 29.01.2021 09:13:40 |
xuexi
Opublikowano 15.07.2021 20:37:16 |
Chcę tego, chcę tego, chcę tego, chcę tegochcieć
Opublikowano 12.12.2021 01:22:12 |
Chcę tego, chcę tego, chcę tego
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com