Udostępnij za pośrednictwem


Wybieranie wierszy oparte na wersji poziomy izolacji

Row versioning-based isolation levels improve read concurrency by eliminating locks for read operations.Microsoft SQL Server introduces two transaction isolation levels that use row versioning:

  • Nowej implementacji odczytu zadeklarowanej izolacji, którego używał wersji wiersza READ_COMMITTED_SNAPSHOT opcję bazy danych jest włączone.

  • Nowy poziom izolacji, migawka, który jest włączony, gdy opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest włączone.

Dla większości aplikacji odczytać zadeklarowanej izolacji utworzenie jego wersji wiersza są zalecane przez izolacji migawka z następujących powodów:

  • Zajmuje on mniej tempdb ilości miejsca niż izolacji migawka.

  • Działa z transakcji rozproszonych, podczas, gdy nie ma izolacji migawka.

  • Z większością istniejących aplikacji działa bez konieczności zmiany.Aplikacje napisane przy użyciu domyślnego poziom izolacji, przeczytaj zatwierdzona, można dynamicznie dostroić.Zachowanie odczytu zatwierdzona, czy do korzystania z wersji wiersza lub nie jest określona przez ustawienie opcji bazy danych, a to może być zmieniana bez wpływu na aplikację.

    Uwaga

    Dla aplikacji, które mają być uzależnione od zachowania blokowania odczytu zadeklarowanej izolacji deweloperzy może wystąpić potrzeba zmiany aplikacji do pracy z obu trybów izolacji zadeklarowanej odczytu.W przeciwnym razie to należy zauważyć, że opcja READ_COMMITTED_SNAPSHOT bazy danych pozostaje wyłączona.

  • migawka izolacji jest narażony na konflikty aktualizacji, które nie mają zastosowania do odczytania zadeklarowanej izolację za pomocą wersji wiersza.W migawka izolacji transakcji odczytuje dane, które zostanie następnie zmodyfikowany przez inną transakcję, aktualizacji w transakcji migawka do tych samych danych powoduje konflikt aktualizacji i transakcja kończy i toczy się ponownie.Nie jest to problem związany z odczytu izolację zadeklarowanej za pomocą wersji wiersza.

Kiedy należy używać wersji odczytu izolacji zatwierdzone przy użyciu wiersza

Odczytu izolację zadeklarowanej za pomocą wersji wiersza zawiera instrukcja poziom odczytać spójności.Gdy każda instrukcja w obrębie transakcji jest wykonywana, nowe dane migawka jest pobierana i pozostaje zgodnych dla każdego sprawozdania, dopóki nie zakończy się wykonywanie instrukcja.Włącz odczytać zadeklarowanej izolację za pomocą wersji wiersza po:

  • Czytnik/modułu zapisującego blokowania występuje do momentu czy przewyższają zalety współbieżność zwiększyć obciążenie związane z tworzeniem i zarządzaniem wersji wiersza.

  • Aplikacja wymaga dokładności bezwzględne dla agregacji lub kwerendy, gdy wartości danych muszą być zgodne z punktem w długim czas uruchomienia kwerendy.

Kiedy korzystać z izolacji migawka

migawka izolacji zapewnia spójność odczytać poziom transakcji.migawka danych zostanie podjęta po rozpoczęciu transakcji migawka i pozostają spójne w czasie trwania transakcji.Za pomocą izolacji migawka, gdy:

  • Formant optymistycznej współbieżność jest pożądane.

  • Prawdopodobieństwo jest niski, transakcja będzie musiała zostać przywrócona ze względu na konflikt aktualizacji.

  • Aplikacja potrzebuje do generowania raportów opartych na kwerendach długim, multi-instrukcja, które musi mieć punkt - in-czas spójności.migawka izolacji zapewnia korzyści Odczyt powtarzalny (patrz Efekty współbieżność) bez korzystania z udostępnionego blokad. migawka bazy danych może dostarczyć podobną funkcjonalność, ale muszą być wykonane ręcznie.migawka izolacji automatycznie dostarcza najnowszych informacji w bazie danych dla każdej transakcji izolacji migawka.

Korzyści wynikające z wierszy oparte na wersji poziomy izolacji

Poziom izolacji używające wersji wiersza zapewnia następujące korzyści:

  • Operacje odczytu pobrać spójne migawka bazy danych.

  • Instrukcji SELECT, nie blokować podczas operacji odczytu danych (czytelnicy nie należy blokować autorzy i odwrotnie).

  • Instrukcji SELECT, mogą uzyskać dostęp ostatnia wartość zadeklarowana w wierszu, podczas gdy inne transakcje aktualizowania wiersza bez pobierania zablokowane.

  • Zmniejsza się liczba zakleszczenia.

  • Zmniejsza się liczba blokad wymaganych przez transakcję, która zmniejsza obciążenie wymaganych do zarządzania blokadami systemu.

  • Mniej za blokada miejsce.

Koszty wiersz oparte na wersji poziomy izolacji

Podejmowanie decyzji używać izolacji na przechowywanie wersji wiersza wymaga ważenia korzyści współbieżność minimalizowanie blokowania przed wykorzystanie zasób zwiększoną niezbędne do utrzymania i odczytywania wersji wiersza.Należy wziąć pod uwagę następujące koszty związane z Włączanie przechowywania wersji wiersza migawka i poziomów izolacji popełnionych odczytu:

  • Wydajność odczytu może mieć wpływ wersja wymagane przez kwerendy oszacowaną wersja starego i długich łańcuchów muszą być skanowane.

  • Przechowywanie wersji wiersza zwiększa zużycie zasób podczas modyfikacji danych w wersji wiersza są obsługiwane w tempdb.

  • Kiedy READ_COMMITTED_SNAPSHOT albo ALLOW_SNAPSHOT_ISOLATION bazy danych, dostępne opcje to ON, aktualizowanie i usuwanie transakcji dla konkretnej bazy danych musi zarządzać wersjami wiersza, nawet wtedy, gdy brak przy użyciu poziom izolacji na przechowywanie wersji wiersza transakcji.Konstruowanie spójne migawkę danych przy użyciu wersji wiersza pociąga za sobą zasoby systemowe (PROCESORA i pamięci) i potencjalnie generuje aktywność We/Wy.Ponieważ wersje rekordu są przechowywane w tempdb, wydajność jest lepiej i liczbą wystawionych operacji We/Wy jest przy dolnej więcej tempdb stron mogą być przechowywane w pamięci do przechowywania wersji wiersza.

    Uwaga

    Wstawianie wiersza na ogół nie generuje wersja wiersza.Jednak w pewnych warunkach polecenia INSERT będzie generował wersja wiersza.Na przykład w przypadku wstawiania wiersza do tabela z indeksem unikatowym, gdy wersja wcześniej usuniętego wiersza (rekord widmo) nie został obcięty, polecenia INSERT generuje wersji wiersza.

  • tempdb musi mieć dostatecznie dużo miejsca na dysku dla magazynu wersja.W przypadku bardzo długo działającą transakcji, wszystkie wersje wygenerowanych przez transakcje aktualizacji w czasie, gdy musi być przechowywany w tempdb.Jeśli tempdb zabraknie miejsca, aktualizacja operacje nie przejmowane awaryjnie, ale przy użyciu wersji wiersza operacji odczytu może zakończyć się niepowodzeniem.

  • Informacje na temat wersji wiersza wymaga 14 bajtów dodane do wiersza bazy danych.

  • Aktualizacja wydajności może być mniejsza z powodu do pracy w utrzymaniu wersji wiersza.W typowych OLTP obciążenia pracą poszczególnych aktualizacji zmienia tylko kilka wierszy w bazie danych.W tych systemach wydajności dla aktualizacji w bazie danych, gdzie opcje to ON może być tylko kilka procentowego wolniej w porównaniu do baz danych z obu opcji OFF.Koszt wydajności wersji aktualizacji może być wyższy dużo większe porcje danych zmiany podczas operacji aktualizacji.

  • Powierzchnia czytniki danych ekstra koszty przechodzenie przez listę łączy w wersja.Starsze migawka, wolniejsze proces uzyskiwania dostępu do migawka izolacji transakcji.

  • Niektóre transakcje aktualizacji przy użyciu izolacji Migawka może być zostać przywrócona z powodu wykrycia konfliktów obowiązkowe w przypadku operacji aktualizacji.Transakcje uruchomione na zatwierdzona odczytu izolacji utworzenie jego wersji wiersza nie generują aktualizacja konfliktów.

Transakcje przy użyciu wersji wiersza ma inne ograniczenia.Aby uzyskać więcej informacji zobaczZa pomocą wiersza oparte na wersji poziomy izolacji.

Systemy, korzystających z wierszy oparte na wersji poziomy izolacji

Następujące scenariusze, które korzystają z poziomów izolacji na przechowywanie wersji wiersza:

  • Systemy, w których raporty tylko do odczytu i kwerend ad hoc równolegle z aplikacji, która aktualizuje dane.

  • Application migration to the Microsoft SQL Server Database Engine from other relational database systems supporting similar isolation levels.

  • Systemy, w których pobieranie zagregowanych spójne, takich jak AVG, COUNT i Suma, lub przecięcia indeks i indeks sprzężeń, wymaga poziom izolacji ścisłe (takich jak Odczyt powtarzalny lub możliwy do serializacji).

  • Systemy, w których dużą liczbę zakleszczenia z powodu konfliktu zapisu i odczytu.