Przed pracą nad Stack Overflow byłem przeciwny NOLOCK na zleceniodawcy, który potencjalnie mógłbyś wykonać SELECT z NOLOCK i odzyskaj wyniki z danymi, które mogą być nieaktualne lub niespójne. Czynnikiem do rozważenia jest to, ile rekordów może być wstawionych/zaktualizowanych w tym samym czasie, kiedy inny proces może wybierać dane z tej samej tabeli. Jeśli zdarza się to często, istnieje duże prawdopodobieństwo zakleszczenia, chyba że używasz trybu bazy danych, takiego jak READ COMMITED SNAPSHOT .
Od tego czasu zmieniłem moje spojrzenie na używanie NOLOCK po obejrzeniu, jak może ulepszyć SELECT wydajność, a także wyeliminować zakleszczenia na masowo obciążonym serwerze SQL Server. Czasami możesz nie dbać o to, że Twoje dane nie są dokładnie w 100% zatwierdzone i potrzebujesz szybkich wyników, nawet jeśli mogą być nieaktualne.
Zadaj sobie pytanie, gdy myślisz o użyciu NOLOCK :
Czy moje zapytanie zawiera tabelę z dużą liczbą INSERT? /UPDATE poleceń i czy obchodzi mnie, czy dane zwrócone z zapytania mogą w danym momencie nie zawierać tych zmian?
Jeśli odpowiedź brzmi nie, użyj NOLOCK w celu poprawy wydajności.
NOLOCK słowa kluczowego w bazie kodu dla Stack Overflow i znaleźliśmy 138 wystąpień, więc używamy go w wielu miejscach.