Opis wiersza na podstawie wersji poziomów izolacji

Przechowywanie wersji wiersza jest ogólne ramy w SQL Server używaną, wykonaj następujące czynności:

  • Tworzenie dodaje się i usunięte tabel w wyzwalaczy.Numerów wersji są wszystkie wiersze, zmodyfikowane przez wyzwalacz.Dotyczy to wierszy, zmodyfikowany przez instrukcja , uruchamiane wyzwalacz, jak również wszelkie zmiany danych dokonane przez wyzwalacz.

  • Obsługują wiele zestawów wyników Active (MARS).Jeśli sesja MARS zagadnień instrukcji modyfikacji danych (takich jak INSERT, UPDATE lub DELETE) czas jest zestaw wyników aktywne, dotyczy instrukcja modyfikacji wierszy są numerów wersji.

  • Obsługuje operacje indeksu określ opcję ONLINE.

  • Obsługa poziomów izolacji transakcji na podstawie wersji wiersza:

    • Nowej implementacji odczytu popełnione poziom izolacji używający wersji wiersza zapewnienie spójności odczytać poziomie instrukcja.

    • Nowy poziom izolacji migawka, aby zapewnić spójność odczytać poziomu transakcji.

Tempdb bazy danych musi mieć wystarczająco dużo miejsca dla magazynu wersja.Gdy tempdb jest pełny, operacje aktualizacji będzie zatrzymać generowanie wersji i kontynuować powiodła się, ale odczytu operacji może się nie powieść, ponieważ określonego wiersza jest wymagana wersja już nie istnieje.Wpływa to na operacje, takie jak wyzwalacze, Usługa MARS i indeksowania online.Aby uzyskać więcej informacji, zobacz Obciążenie zasobów wersji wiersza.

Transakcje zatwierdzone odczytu i migawka za pomocą wersji wiersza jest procesem dwuetapowym:

  1. Ustawić lub READ_COMMITTED_SNAPSHOT i ALLOW_SNAPSHOT_ISOLATION bazy danych opcje na.

  2. Ustaw odpowiednie poziom izolacji transakcji w aplikacji:

    • Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest na ustawienie Odczyt przekazany transakcji poziom izolacji użyć wersji wiersza.

    • Gdy opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest włączone, zestaw transakcji poziom izolacji migawka.

Gdy opcja bazy danych READ_COMMITTED_SNAPSHOT lub ALLOW_SNAPSHOT_ISOLATION jest zestaw ON, Aparat baz danych programu SQL Server przypisuje numer sekwencji transakcji (XSN) do każdej transakcji, który manipuluje danymi przy użyciu wersji wiersza.Transakcje rozpoczęte w czas jest wykonywana instrukcja instrukcji BEGIN TRANSACTION.Jednak uruchamia numer sekwencji transakcji z pierwszym operacja odczytu lub zapisu po instrukcja instrukcja BEGIN TRANSACTION.Numer sekwencji transakcji jest zwiększany o jeden dla każdego czas jest przypisany.

Gdy opcje bazy danych READ_COMMITTED_SNAPSHOT albo ALLOW_SNAPSHOT_ISOLATION na, kopie logiczne (wersje) są obsługiwane dla wszystkich modyfikacji danych w bazie danych.Za każdym razem, gdy wiersz zostanie zmodyfikowany przez określoną transakcją wystąpienie Aparat baz danych przechowuje wersja uprzednio zatwierdzone obrazu wiersza w tempdb.Każda wersja jest oznaczony numerem transakcji transakcji, który wprowadził zmianę.Wersje zmodyfikowanych wierszy są powiązane z listy Połącz używając.Najnowsza wartość wiersza jest zawsze przechowywane w bieżącej bazie danych i powiązane wiersze numerów wersji, przechowywane w tempdb.

Ostrzeżenie

Do modyfikacji dużych obiektów (obiektów LOB), zmieniony fragment jest kopiowany do magazynu wersja w tempdb.

Wiersz przechowywane są wersje wystarczająco długi, aby spełniać wymagania uruchomiony poziomów izolacji oparte na wersji wiersza transakcji. Aparat baz danych Śledzi numer sekwencyjny transakcji przydatne najwcześniejszą i okresowo usuwa wszystkie wersje wierszy ostemplowane numerów sekwencji transakcji, które są niższe od najwcześniejszej numer sekwencji użyteczne.

Gdy obie opcje bazy danych są zestaw , tylko te wiersze, zmodyfikowany przez wyzwalacze lub sesji MARS i czytane przez operacji ONLINE indeksu są numerów wersji.Te wersje wierszy są zwalniane, gdy nie są już potrzebne.Wątek tła okresowo wykonuje usunięcie wiersza starych wersji.

Ostrzeżenie

Transakcje działania krótkoterminowe mogą uzyskać buforowane wersja zmodyfikowanych wierszy w pula buforów bez pobierania zapisywane do plików na dysku tempdb bazy danych.W przypadku krótkotrwałe potrzebę wiersz wersji będzie pobrać po prostu usunięte z pula buforów i niekoniecznie nie może ponosić obciążenie We/Wy.

Zachowanie podczas odczytu danych

Kiedy uruchomiony odczytu danych oparte na wersji izolacji wierszy transakcji, operacji odczytu nabywa blok współużytkowane (S) na odczytywane dane i dlatego do nie transakcje blok modyfikowania danych.Ponadto narzutów blokowania zasobów jest zminimalizowane, jak zmniejszyć liczbę blokad.Odczyt popełnione izolacji przy użyciu wersji wiersza i izolacji migawka zaprojektowano poziomie instrukcja lub poziom transakcji odczytu consistencies numerów wersji danych.

Wszystkie kwerendy, łącznie z transakcjami w poziomów izolacji oparte na wersji wiersza, nabywają blokad Sch-S (stabilność schematu) podczas kompilacji i wykonanie.Z tego powodu kwerendy są bblokadaed gdy jednoczesnych transakcji utrzymuje Sch-M (modyfikacja schematu) blokada w tabela.Na przykład operacji (DDL) języka definicja danych nabywa blokada Sch-M przed modyfikuje informacji schematu tabela.Transakcje, łącznie z systemami w obszarze wierszy na podstawie wersji kwerendy poziom izolacji, są blokowane podczas próby uzyskania blokada Sch-S.Natomiast kwerendy blokada Sch-S blokuje jednoczesnych transakcji, która próbuje uzyskać blokady Sch-M.Aby uzyskać więcej informacji na temat zachowania blokada Zobacz Zablokuj zgodności (aparat bazy danych).

Podczas używania transakcji poziom izolacji migawka uruchamia wystąpienie Aparat baz danych rekordy wszystkich aktualnie aktywnych transakcji.Gdy transakcji migawka odczytuje wiersz, który ma łańcuch wersja Aparat baz danych następuje łańcuch i pobiera wiersz, gdzie jest numerem porządkowym transakcji:

  • Najbliższy ale niższe niż numer sekwencji transakcji migawka czytania wiersza.

  • Nie ma na liście aktywnych transakcji migawka rozpoczęcie transakcji.

Operacje odczytu wykonywane przez transakcji migawka pobierania ostatniej wersja każdego wiersza, które były zaangażowane w czas uruchomić transakcji migawka.Zapewnia spójny transakcyjnie migawka danych, jak istniała w momencie rozpoczęcia transakcji.

Transakcje zatwierdzone odczytu przy użyciu wersji wiersza działają w bardzo ten sam sposób.Różnica jest, że transakcja przekazana odczytu nie używa swój własny numer sekwencji transakcji wybór wersji wiersza.Każdy czas oświadczenie jest uruchomiona, popełnionych odczytu transakcji odczytuje najnowsze numer sekwencji transakcji wydane dla tego wystąpienie Aparat baz danych.Jest to numer sekwencji transakcji używane do wybierania wersji prawidłowego wiersza dla tej instrukcja.Dzięki temu popełnione odczytu transakcji wyowietlać migawka danych, ponieważ istnieje na początku każdej instrukcja.

Ostrzeżenie

Mimo, że wiersz transakcji popełnione odczytu za pomocą wersji zawiera transakcyjnie jednolity widok danych poziom instrukcja, wiersz wersji generowane lub dostęp do tego typu transakcji są zachowywane aż do jej zakończenia.

Zachowanie podczas modyfikowania danych

W transakcji popełnione odczytu przy użyciu wersji wiersza, wybór wierszy do aktualizacji jest wykonywane przy użyciu skanowania blokowania, gdzie blokada aktualizacji (U) podejmowane na wiersz danych odczytywane są wartości danych.Jest taka sama jak popełnione odczytu transakcji, która nie korzysta z wersji wiersza.Jeśli wiersz danych nie spełniają kryteria aktualizacji, blokada aktualizacji jest wydany wiersz i następny wiersz jest zablokowany i skanowane.

Pobieranie blokady danych przed dokonaniem zmiany tylko do wymuszania ograniczeń transakcji w izolacji migawka podjąć optymistycznego podejścia do modyfikacji danych.W przeciwnym razie blokady nie są nabywane na danych, aż do zmodyfikowania danych.Gdy wiersz danych spełnia kryteria aktualizacji, transakcji migawka weryfikuje wiersza danych nie została zmodyfikowana jednoczesnych transakcji popełnionych po chwili rozpoczęcia transakcji migawka.Jeśli wiersz danych została zmodyfikowana poza transakcji migawka występuje konflikt aktualizacji i migawka transakcja zostanie zakończona.Konflikt aktualizacji jest obsługiwany przez Aparat baz danych i nie ma możliwości wyłączyć aktualizację wykrywanie konfliktów.

Ostrzeżenie

Aktualizowanie operacji działający w izolacji migawka wewnętrznie wykonać obszarze odczytać izolacji popełnione podczas transakcji migawka uzyskuje dostęp do jednej z następujących:

Tabela ograniczenia na klucz OBCY.

tabela, która odwołuje się do ograniczenia klucza OBCEGO w innej tabela.

indeksowany widok, odwoływanie się do więcej niż jednej tabela.

Jednak nawet w tych warunkach operacji aktualizacji będzie sprawdzenie, że dane nie zostały zmodyfikowane przez inną transakcję.Jeśli dane zostały zmodyfikowane przez inną transakcję, transakcji migawka wystąpi konflikt aktualizacji i jest zakończony.

Zachowanie w podsumowaniu

W następującej tabela zestawiono różnice między migawka izolacji i odczytu popełnione izolacji przy użyciu wersji wiersza.

Właściwość

Poziom izolacji popełnione odczytu przy użyciu wersji wiersza

Poziom izolacji migawki

Opcja bazy danych, które muszą być zestaw on, aby włączyć obsługę wymagane.

READ_COMMITTED_SNAPSHOT

ALLOW_SNAPSHOT_ISOLATION

Jak sesja żądań określonego typu wersji wiersza.

Użyć domyślnego poziomu izolacji popełnione odczytu lub uruchomić Ustaw poziom izolacji transakcji instrukcja do określenia poziomu izolacji popełnione odczytu.Można to zrobić po rozpoczęciu transakcji.

Wymaga wykonania USTAWIĆ poziom izolacji transakcji, aby określić poziom izolacji MIGAWKI przed rozpoczęciem transakcji.

Wersja dane odczytane przez sprawozdania.

Wszystkie dane, które zostało popełnione przed rozpoczęciem każdej instrukcja.

Wszystkie dane, które zostało popełnione przed rozpoczęciem każdej transakcji.

Sposób obsługi aktualizacji.

Przywraca dane rzeczywiste, aby wybrać wiersze, aby zaktualizować wersji wiersza i używa blokad aktualizacji na wybranych wierszy danych.Nabywa wyłącznej blokady w wierszach rzeczywistych danych ma zostać zmodyfikowana.Aktualizacja nie wykrywanie konfliktów.

Używa wersji wiersza wybierz wiersze do aktualizacji.Próbuje nabyć blokada na wyłączność danych rzeczywistych wiersza do zmodyfikowania i jeśli danych została zmodyfikowana przez inną transakcję, występuje konflikt aktualizacji i migawka transakcja zostanie zakończona.

Aktualizacja wykrywanie konfliktów.

Brak.

Zintegrowana obsługa.Nie można wyłączyć.