Poziomy izolacji w aparat bazy danych

Transakcje określonego poziom izolacji definiujący stopnia, do którego musi być odizolowane od zasób lub danych, modyfikacje przez inne transakcje jednej transakcji.Poziom izolacji są opisane w odniesieniu do których współbieżność skutki uboczne, takich jak dirty operacje odczytu i fantomu odczytów są dozwolone.

Kontrola poziomów izolacji transakcji:

  • Czy blokady są pobierane podczas odczytu danych i jakiego typu blokady są wymagane.

  • Jak długo przechowywane są blokady odczytu.

  • Czy odwołanie do operacji odczytu wiersze zmodyfikowany przez inną transakcję:

    • Bloki, dopóki blokada na wyłączność znajduje się w wierszu jest zwalniane.

    • Pobiera wersja zadeklarowanej w wierszu, w jakim się znajdował w czas uruchomić instrukcja lub transakcji.

    • Odczytuje modyfikacji nieprzydzielonych danych.

Wybieranie poziom izolacji transakcji nie ma wpływu na blokad nabyte w celu ochrony modyfikacji danych.Transakcja zawsze pobiera blokada na wyłączność na wszystkich danych, modyfikuje i przechowuje tej blokady do zakończenia transakcji, bez względu na to poziom izolacji dla tej transakcji.Dla operacji odczytu poziomów izolacji transakcji przede wszystkim określić poziom ochrony przed skutkami modyfikacji dokonanych przez inne transakcje.

Niższy poziom izolacji zwiększa możliwości wielu użytkownikom dostępu do danych w tym samym czas, ale zwiększa liczbę użytkowników, współbieżność efekty (takie jak dirty operacje odczytu i aktualizacji utracone) mogą wystąpić.Z drugiej strony na wyższy poziom izolacji zmniejsza typów efektów współbieżność użytkowników może się pojawić, ale wymaga większej ilości zasobów systemowych i zwiększa prawdopodobieństwo, że jedna transakcja będzie blokować innego.Wybieranie odpowiedniego poziom izolacji zależy od Równoważenie wymagań integralność danych aplikacji przed obciążenie związane z każdym poziom izolacji.Najwyższy izolacji poziom, możliwy do serializacji, gwarancje, transakcja będzie pobrać te same dane przy każdym jego powtarza się operacja odczytu, ale robi to wykonując poziom blokowania, jest prawdopodobne, że wpływu na innych użytkowników w systemach wielu użytkowników.Najniższy poziom izolacji, przeczytaj nieprzydzielonych, mogą pobrać dane, która została zmodyfikowana, ale nie dokonanych przez inne transakcje.Wszystkie efekty uboczne współbieżność może się zdarzyć w nieprzydzielonych odczytu, ale nie ma odczytu blokowania lub przechowywania wersji, więc obciążenie jest zminimalizowany.

Poziomy izolacji aparat bazy danych

ISO standard definiuje następujące poziomy izolacji, które są obsługiwane przez SQL Server Database Engine:

  • Odczyt nieprzydzielone (najniższy poziom gdy transakcje są izolowane tylko tyle upewnij się, że fizycznie dojść do uszkodzenia danych nie jest odczytywany)

  • Przeczytaj zadeklarowanej)Database Engine domyślny poziom)

  • Odczyt powtarzalny

  • Serializable (najwyższego poziom, gdy transakcje są całkowicie odizolowane od siebie)

SQL Server obsługuje także dwóch poziomów izolacji transakcji za pomocą wersji wiersza.Jeden jest nowej implementacji odczytu zadeklarowanej izolacji, a drugi nowy poziom izolacji transakcji migawka.

  • Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest zestaw ON, przeczytaj zadeklarowanej izolacji używa wersji wiersza w celu zapewnienia poziomie instrukcja odczytać spójności.Operacje odczytu wymaga tylko blokad poziom tabela SCH-S i nie blokuje strona lub wiersza.Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest zestaw OFF, który jest domyślnym zestaw ting, przeczytaj zadeklarowanej izolacji działa tak samo, jak we wcześniejszych wersjach SQL Server. Oba implementacje odpowiadają definicji ANSI odczytu izolacji zatwierdzone.

  • Poziom izolacji migawka używa wersji wiersza w celu zapewnienia spójności odczytać poziomu transakcji.Operacje odczytu nabycia nie blokuje strona lub wiersza; tylko SCH-S blokady tabela są nabywane.Podczas odczytywania wierszy zmodyfikowany przez inną transakcję, wybierają wersja wierszy, które istniały po rozpoczęciu transakcji.migawka izolacji jest włączone, gdy opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest włączone zestaw.Domyślnie ta opcja jest ustawiona OFF dla baz danych użytkowników.

Uwaga

SQL Server nie obsługuje wersji metadane.Z tego powodu ma ograniczeń dotyczących operacje DDL, które mogą być wykonywane w transakcja jawna, w którym jest uruchomiony izolacji migawka.Następujące instrukcje DDL są niedozwolone w migawka izolacji po instrukcja BEGIN TRANSACTION: ALTER tabela, CREATE INDEX, CREATE XML INDEX, ALTER indeks, DROP indeks, DBCC INDEKSOWANIA, ALTER PARTITION funkcja, ALTER PARTITION schemat lub żadnych wspólnych instrukcja DDL języka (CLR) w czasie wykonywania. Instrukcje te są dozwolone podczas korzystania z migawka izolacji w obrębie transakcji niejawnych.Transakcja niejawna z definicji jest pojedynczej instrukcja, które sprawiają, że do wymuszania semantyka izolacji migawka, nawet w przypadku instrukcje DDL.Naruszenie tej zasady może spowodować błąd 3961: "Migawkę izolacji transakcji nie powiodło się w bazie danych ' %. * ls, ponieważ dostęp do obiektu w instrukcja został zmodyfikowany przez instrukcja DDL w innym jednoczesnych transakcji od momentu rozpoczęcia tej transakcji.To jest niedozwolona, ponieważ nie ma wersji metadane.Równoczesne aktualizacji do metadane może pozwolić na niespójności, jeśli z izolacji migawka. „

W poniższej tabela przedstawiono efekty uboczne współbieżność, włączone izolacja różnych poziomów.

Poziom izolacji

odczyt zanieczyszczony

odczyt niemożliwy do powtórzenia

Fantom

Przeczytaj niezakończone

Tak

Tak

Tak

Przekazana do odczytu

Nie

Tak

Tak

Odczyt powtarzalny

Nie

Nie

Tak

migawka

Nie

Nie

Nie

Serializable

Nie

Nie

Nie

Aby uzyskać więcej informacji na temat określonych typów wersji wiersza lub blokowanie kontrolowane przez każdy poziom izolacji transakcji zobacz SET TRANSACTION ISOLATION LEVEL (Transact-SQL).