Udostępnij za pośrednictwem


Poziom izolacji w aparacie bazy danych

Transakcje Określ poziom izolacji, który definiuje stopień, do której muszą zostać odizolowane od zasób lub danych modyfikacje przez inne transakcje jednej transakcji.Poziomy izolacji opisane są w odniesieniu do których współbieżność skutki uboczne, takich jak dirty odczyty lub fantomu odczyty są dozwolone.

Kontrola poziomów izolacji transakcji:

  • Czy podjęto blokad podczas odczytu danych i jakiego typu blokady są wymagane.

  • Jak długo blokady odczytu są aktywne.

  • Czy operacja odczytu odwołania wierszy zmodyfikowany przez inną transakcję:

    • Bloki aż zwolniona blokada na wyłączność w wierszu.

    • Pobiera stara wersja wierszy, które istniały w czas uruchomić instrukcja lub transakcji.

    • Odczytuje dane nieprzekazane modyfikacji.

Wybieranie poziom izolacji transakcji nie wpływa na blokad nabyte w celu ochrony modyfikacji danych.Transakcja zawsze uzyskuje blokadę wyłączności na wszelkich danych, modyfikuje i posiada tej blokada do zakończenia transakcji, niezależnie od poziomu izolacji zestaw dla danej transakcji.Dla operacji odczytu poziomów izolacji transakcji głównie zdefiniować poziom ochrony przed skutkami modyfikacji dokonanych przez inne transakcje.

Niższy poziom izolacji zwiększa zdolność wielu użytkownikom dostęp do danych w tym samym czas, ale zwiększa liczbę użytkowników efekty (takie jak odczyty zanieczyszczenia lub utraty aktualizacji) współbieżność napotkać.Odwrotnie, wyższy poziom izolacji zmniejsza typów współbieżność efekty, użytkownicy mogą wystąpić, ale wymaga więcej zasobów systemowych i zwiększa szanse, że jedna transakcja będzie blok innym.Poziom izolacji odpowiedni wybór zależy od tego, Równoważenie wymagań integralność danych aplikacji przeciwko napowietrznej każdego poziomu izolacji.Najwyższy poziom izolacji, możliwy do serializacji, gwarantuje, że transakcja będzie pobrać te same dane co czas powtarza się operacja odczytu, ale robi to wykonując poziom blokowania prawdopodobnie wpływu na innych użytkowników w wielu systemach.Najniższy poziom izolacji Odczyt nieprzekazany, może pobrać dane, które zostały zmodyfikowane, ale nie zostały popełnione przez inne transakcje.Wszystkie efekty uboczne współbieżność może się zdarzyć w Odczyt nieprzekazany, ale nie ma odczytu blokowania lub przechowywania wersji, tak aby zminimalizować obciążenie.

Poziomów izolacji aparat bazy danych

ISO standard definiuje następujące poziomy izolacji, które są obsługiwane przez Aparat baz danych programu SQL Server:

  • Odczyt nieprzekazany (najniższy poziom, na którym transakcje są odizolowane, tylko do zapewnienia, że fizycznie uszkodzenie danych nie jest odczytywany)

  • Odczyt przekazany (Aparat baz danych domyślny poziom)

  • Odczyt powtarzalny

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

Ważna informacjaWażne:

Operacje DDL i transakcji w zreplikowanych tabelach mogą nie działać, gdy wymagane jest poziom izolacji możliwy do serializacji.Wynika to replikacja kwerend za pomocą wskazówki, które mogą być niezgodne z serializować poziom izolacji.

SQL Server obsługuje również dwóch poziomów izolacji transakcji używających wersji wiersza.Jeden jest nowej implementacji odczytu popełnione izolacji i jeden nowy poziom izolacji transakcji migawka.

  • Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest zestaw na odczyt popełnione izolacji używa wersji wiersza zapewnienie spójności odczytać poziomie instrukcja.Operacje odczytu wymagają tylko blokad poziom tabela SCH-S i bez blokowania strona lub wiersza.Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest zestaw OFF, która jest domyślnie zestawting, odczytu izolacji popełnione zachowuje się jak w starszych wersjach SQL Server.Zarówno implementacje odpowiadają definicji ANSI odczytu popełnione izolacji.

  • poziom izolacji migawka Używa wierszy przechowywania wersji, aby zapewnić spójność odczytać poziomu transakcji.Operacje odczytu nabywać nie blokad strona lub wiersza; tylko blokady tabela SCH-S są nabywane.Podczas odczytywania wierszy zmodyfikowany przez inną transakcję, wybierają wersja wiersza, który istniał rozpoczęcie transakcji.Izolacja migawkę bazy danych można używać tylko, gdy opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest zestaw ON.Domyślnie opcja ta jest zestaw OFF baz danych użytkowników.

Ostrzeżenie

SQL Server nie obsługuje przechowywania metadane.Z tego powodu ma ograniczeń dotyczących operacji DDL, jakie mogą być wykonywane w transakcja jawna działa w izolacji migawka.Następujące instrukcje DDL są niedozwolone w izolacji migawka po instrukcja instrukcja BEGIN TRANSACTION: ALTER TABLE, CREATE INDEX, CREATE XML INDEX, zmianę INDEKSU, UPUŚĆ INDEKSU, ponownego INDEKSOWANIA DBCC, zmieniać funkcji PARTYCJI, ZMIEŃ schemat PARTYCJI lub wszelkie wspólnej instrukcja DDL language runtime (CLR).Instrukcje te są dozwolone podczas korzystania z migawka izolacji w obrębie transakcji niejawne.transakcja niejawna, Z definicji jest pojedynczej instrukcja, która umożliwia wymuszanie semantyka izolacji migawka, nawet w przypadku instrukcja DDL.Naruszenie tej zasady może spowodować błąd 3961: "Migawkę izolacji transakcji nie powiodło się w bazie danych ' %. * ls ponieważ obiekt uzyskują instrukcja został zmodyfikowany przez instrukcja DDL w innej jednoczesnych transakcji od rozpoczęcia tej transakcji.Nie jest dozwolone, ponieważ metadane nie jest numerów wersji.Współbieżnych aktualizacji do metadane może prowadzić do niezgodności Jeśli zmieszane z izolacji migawka."

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

Poziom izolacji

Dirty odczytu

Nonrepeatable odczytu

Fantom

Odczyt nieprzekazany

Tak

Tak

Tak

Odczyt przekazany

Nie

Tak

Tak

Odczyt powtarzalny

Nie

Nie

Tak

Migawki

Nie

Nie

Nie

Serializable

Nie

Nie

Nie

Aby uzyskać więcej informacji dotyczących określonych rodzajów blokowania lub wiersza versioning kontrolowane przez każdy poziom izolacji transakcji, zobacz Ustaw poziom izolacji transakcji (Transact-SQL).