Udostępnij za pośrednictwem


Wybór wierszy na podstawie wersji poziomów izolacji

Poziomów izolacji oparte na wersji wiersza poprawić współbieżność odczytu poprzez wyeliminowanie blokad dla operacji odczytu.Microsoft SQL Server introduces two transaction isolation levels that use row versioning:

  • Nowej implementacji odczytu popełnione izolacji używany wiersz wersji READ_COMMITTED_SNAPSHOT opcję bazy danych jest włączone.

  • Nowy poziom izolacji migawka, jest włączony, jeśli ALLOW_migawka_ISOLATION opcję bazy danych jest włączone.

Dla większości aplikacji odczytać popełnione izolacji przy użyciu wersji wiersza są zalecane przez izolacji migawka z następujących powodów:

  • Zajmuje on mniej tempdb miejsca niż izolacji migawka.

  • Działa z transakcji rozproszonych, dlatego izolacji migawka nie.

  • Z większością istniejących aplikacji działa bez konieczności zmiany.Aplikacje napisane przy użyciu domyślnego poziom izolacji, przeczytaj popełnione, można dostroić dynamicznie.Zachowanie Odczyt przekazany, czy używać wersji wiersza lub nie jest określona przez ustawienie opcji bazy danych, to można zmienić bez wpływu na aplikację.

    Ostrzeżenie

    Dla aplikacji, które są zaprojektowane uzależniona od zachowania blokowania odczytu izolacji popełnione deweloperzy może być alter aplikacji do pracy z obu trybów izolacji popełnione odczytu.W przeciwnym razie to należy zauważyć, że opcja bazy danych READ_COMMITTED_SNAPSHOT pozostaje wyłączona.

  • Migawki izolacji jest zagrożony aktualizacja konfliktów, które nie są stosowane do odczytu popełnione izolacji przy użyciu wersji wiersza.Gdy uruchomiony migawka izolacji transakcji odczytuje dane, która następnie zostanie zmodyfikowany przez inną transakcję, aktualizacja transakcji migawka do tych samych danych powoduje konflikt aktualizacji i transakcji przerywa i wycofuje.Nie jest to problem związany z odczytu popełnione izolacji przy użyciu wersji wiersza.

Kiedy używać wersji odczytu popełnione izolacji przy użyciu wiersza

Odczytu popełnione izolacji przy użyciu wersji wiersz zawiera instrukcja -poziom odczytać spójności.Wykonuje każdej instrukcja w obrębie transakcji, Nowa migawka danych jest pobierana i pozostaje zgodna dla każdego sprawozdania, dopóki nie zakończy się wykonywanie instrukcja.Włącz odczytać popełnione izolacji przy użyciu wersji wiersza po:

  • Czytnik/zapisywarka blokowania występuje do punktu że współbieżność korzyści przeważają nad zwiększone obciążenie tworzenie i zarządzanie wersjami wiersza.

  • Aplikacja wymaga dokładności bezwzględne dla agregacji lub kwerend, gdzie wartości danych muszą być zgodne z punktem w długim czas , który uruchamia kwerendę.

Kiedy używać izolacji migawki

Migawki izolacji zapewnia spójność odczytać poziom transakcji.migawka danych zostanie podjęta po rozpoczęciu transakcji migawka i pozostaje zgodna na czas trwania transakcji.Użyj migawka izolacji po:

  • Optymistyczna współbieżność formantu jest pożądane.

  • Prawdopodobieństwo jest niski, transakcja będzie musiała być wycofane z powodu konflikt aktualizacji.

  • Aplikacja potrzebuje do generowania raportów opartych na kwerendach o długim, złożonych z wielu instrukcja, które musi mieć punkt-w-czas spójności.Migawki izolacji zapewnia korzyści powtarzalnych odczytów (zobacz Efekty współbieżności) bez korzystania z udostępnionego blokad.Bazy danych migawka można udostępniać podobną funkcjonalność, ale musi być implementowana ręcznie.migawka izolacji automatycznie dostarcza najnowszych informacji w bazie danych dla każdej transakcji izolacji migawka.

Zalety wierszy na podstawie wersji poziomów izolacji

Poziomów izolacji używających wersji wiersza te świadczenia:

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

  • Instrukcje SELECT nie blokada danych podczas operacji odczytu (czytniki wykonaj b nieblokada autorzy i odwrotnie).

  • Instrukcji SELECT można uzyskać dostęp popełnione ostatnią wartość w wierszu, podczas gdy inne transakcje aktualizowania wiersza bez pobierania zablokowane.

  • Liczba zakleszczenia jest ograniczona.

  • Zmniejszona liczba blokad wymaganych przez transakcję, co zmniejsza systemu napowietrznych wymagane do zarządzania blokadami.

  • Mniej eskalacyjnego blokada miejsce.

Koszty wiersza na podstawie wersji poziomów izolacji

Skorzystasz z wiersza na podstawie wersji izolacji wymaga ważenia korzyści współbieżność minimalizowania blokowanie obciążenie zwiększenie zasób niezbędnych do utrzymania i odczytać wersji wiersza.Rozważmy następujące koszty związane z Włączanie wersji wiersza migawka i poziomów izolacji popełnione odczytu:

  • Wydajność odczytu może mieć wpływ, gdy wersje wymagane przez kwerendy będą wersja stare i długich łańcuchów muszą być skanowane.

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

  • Gdy opcje bazy danych READ_COMMITTED_SNAPSHOT albo ALLOW_SNAPSHOT_ISOLATION na, aktualizacja i usuwanie transakcji dla konkretnej bazy danych muszą utrzymywać wersji wiersza, nawet wtedy, gdy żadna z transakcji przy użyciu wiersza na podstawie wersji poziom izolacji.Konstruowanie spójny migawka danych przy użyciu wersji wiersza obejmuje zasoby systemowe (Procesora i pamięci) i potencjalnie generuje aktywności We/Wy.Ponieważ wersje rekordu są przechowywane w tempdb, ma większą wydajność i liczba operacji dotyczących wystawionych jest niższa, gdy więcej tempdb stron mogą być przechowywane w pamięci dla wersji wiersza.

    Ostrzeżenie

    Wstawianie wiersza ogólnie nie generuje wersja wiersza.Jednak w pewnych warunkach polecenia WSTAW generowanie wersja wiersza.Na przykład wstawić wiersz do tabela z indeks unikatowy, gdy wersja wcześniej usunięty wiersz (rekord widmo) nie został obcięty, polecenie WSTAW generuje wersji wiersza.

  • tempdb musi mieć wystarczającą ilość miejsca na dysku dla magazynu wersja.Jeśli istnieją transakcje bardzo długim, wszystkie wersje wygenerowanych przez transakcje aktualizacji podczas czas muszą być przechowywane w tempdb.Jeśli tempdb uruchamia miejsca aktualizacji operacje nie są odrzucane, ale przy użyciu wersji wiersza operacji odczytu może się nie powieść.

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

  • Aktualizacja wydajności może być wolniejsze z powodu prac związanych z utrzymaniem wersji wiersza.W typowych obciążeń OLTP każdej aktualizacji zmienia tylko kilka wierszy w bazie danych.W tych systemach wydajność aktualizacji bazy danych, gdzie opcje to ON może być tylko kilka punktów procentowych wolniej w porównaniu do baz danych z obu opcji Wyłącz.Koszt wydajności numerów wersji aktualizacji może być wyższy po zmianie większymi iloociami danych podczas operacji update.

  • Dodatkowe koszty przechodzenie przez listę łącze wersja nominalnej czytniki danych.Starsze migawka, tym wolniej proces uzyskiwania dostępu do izolacji transakcji migawka.

  • Niektóre transakcje aktualizacji przy użyciu migawka izolacji może okazać się być wycofane z powodu obowiązkowe wykrywanie konfliktów dla operacji aktualizacji.Transakcje w izolacji popełnione odczytu przy użyciu wersji wiersza nie generują aktualizacja konfliktów.

Transakcji za pomocą wersji wiersza obowiązują inne ograniczenia.Aby uzyskać więcej informacji, zobacz Wiersz wersji na podstawie poziomów izolacji.

Systemy, które korzystają z wiersza na podstawie wersji poziomów izolacji

Scenariusze, które korzystają z poziomów izolacji oparte na wersji wiersza obejmują:

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

  • Application migration to the Microsoft Aparat baz danych programu SQL Server from other relational database systems supporting similar isolation levels.

  • Systemy, w których wprowadzenie zagregowanych spójne, takie jak SUM, AVG i liczba lub przecięcia indeksu i sprzężeń indeks wymaga ścisłego poziom izolacji (takich jak Odczyt powtarzalny lub serializować).

  • Systemy z dużą liczbą zakleszczenia ze względu na odczyt i zapis rywalizacja.