Kiedy program SQL Server nabywa blokady?

10

Znaleziona tutaj lista poziomów izolacji w SQL Server stwierdza , że blokady zapisu nabyte w ramach transakcji są zachowywane do końca transakcji. Jednak nie wspomina nic o tym, kiedy te zamki są nabywane.

Czy blokady są domyślnie nabywane na początku transakcji, czy tylko wtedy, gdy są potrzebne? Jeśli to ostatnie jest prawdą, to czy w przypadku dużych transakcji korzystne byłoby wykonywanie operacji zapisu tak późno, jak to możliwe, aby zminimalizować czas utrzymywania blokad X?

Levi Botelho
źródło

Odpowiedzi:

5

Czy blokady są domyślnie nabywane na początku transakcji, czy tylko wtedy, gdy są potrzebne?

Zamki są nabywane bezpośrednio przed wystąpieniem odczytu lub zapisu. W zależności od stopnia szczegółowości blokowania wybranego przez silnik pamięci, blokady można uzyskać na poziomie wiersza, strony, partycji lub obiektu (tabeli).

Jeśli to ostatnie jest prawdą, to czy w przypadku dużych transakcji korzystne byłoby wykonywanie operacji zapisu tak późno, jak to możliwe, aby zminimalizować czas utrzymywania blokad X?

Tak, może być korzystne dla współbieżności, w zależności od poziomu izolacji używanego przez współbieżne transakcje.

Powiązana lektura:

Paul White 9
źródło