Czy dodaję odczyt zatwierdzony po ZESTAWIE SERIALIZACJI POZIOMU ​​IZOLACJI TRANSAKCJI?

9

Wewnątrz procedury składowanej mam następujące elementy: (serwer SQL 2008)

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
 BEGIN TRANSACTION getStuff
 BEGIN TRY 
    /*  some selects, updates, etc, etc. */
    ....
    COMMIT TRANSACTION getStuff
 END TRY
 BEGIN CATCH 
   ...
 END CATCH

Ponieważ jest to oparte na transakcjach, myślałem, że reszta połączeń z bazą danych nie będzie miała wpływu na SERIALIZABLE.

Czy muszę domyślnie ustawić poziom izolacji, aby odczytać popełnione po moim zatwierdzeniu? Czy wpłynie to niekorzystnie na inne połączenia między moim serwerem aplikacji a serwerem bazy danych?

CFNinja
źródło

Odpowiedzi:

6

Polecenie brzmi TRANSACTION ISOLATION LEVEL: nie SERVER ISOLATION LEVEL. Zmienia tylko poziom izolacji dla zakresu transakcji.

Erik Darling
źródło
5

Nie, nie musisz domyślnie ustawiać poziomu izolacji z powrotem, aby zatwierdzić odczyt.

Z książek online .

Jeśli wydasz polecenie USTAW POZIOM IZOLACJI w procedurze składowanej lub wyzwalacz, gdy obiekt zwróci kontrolę, poziom izolacji zostanie zresetowany do poziomu obowiązującego w momencie wywołania obiektu. Na przykład, jeśli ustawisz REPEATABLE READ w partii, a partia następnie wywoła procedurę przechowywaną, która ustawia poziom izolacji na SERIALIZABLE, ustawienie poziomu izolacji powróci do REPEATABLE READ, gdy procedura przechowywana zwróci sterowanie do partii.

SqlWorldWide
źródło
3

Wysłane polecenie uruchamia transakcję w SP za pomocą TRANSACTION ISOLATION LEVEL SERIALIZABLE. Inne połączenia będą domyślnie przywracane do domyślnego poziomu izolacji - czytaj zatwierdzone (chyba że jawnie określono inny poziom izolacji).

Istnieje doskonała seria autorstwa Paula White'a - Poziomy izolacji SQL Server: Seria, która pomoże ci zrozumieć, co oznaczają różne poziomy izolacji i jak je wykorzystać.

Kin Shah
źródło
-3

Dość nowy algorytm, który pozwala uniknąć większości wad poprzednich podejść. Korzysta z optymistycznego podejścia, umożliwiając przeprowadzanie transakcji bez blokowania. Gdy transakcja chce zatwierdzić, jest sprawdzana i jest przerywana, jeśli wykonanie nie było możliwe do serializacji. Więcej informacji na temat wszystkich podejść na stronie : http://writeulearn.com/relational-database-transactions/

cccc
źródło
To nie wydaje się być odpowiedzią na pytanie ....
RDFozz