Před prací na Stack Overflow jsem byl proti NOLOCK na principu, že byste mohli potenciálně provést SELECT s NOLOCK a získat zpět výsledky s daty, které mohou být zastaralé nebo nekonzistentní. Faktorem k zamyšlení je, kolik záznamů lze vložit/aktualizovat současně, jiný proces může vybírat data ze stejné tabulky. Pokud k tomu dochází často, existuje vysoká pravděpodobnost uváznutí, pokud nepoužijete databázový režim, jako je READ COMMITED SNAPSHOT .
Od té doby jsem změnil svůj pohled na používání NOLOCK poté, co jsme viděli, jak to může zlepšit SELECT výkon a také odstranění zablokování na masivně zatíženém serveru SQL Server. Jsou chvíle, kdy vám může být jedno, že vaše data nejsou přesně 100% odevzdaná a potřebujete rychle zpět výsledky, i když mohou být zastaralé.
Když přemýšlíte o použití NOLOCK, položte si otázku :
Zahrnuje můj dotaz tabulku, která má vysoký počet
INSERT/UPDATEa zajímá mě, jestli v datech vrácených z dotazu mohou v daném okamžiku tyto změny postrádat?
Pokud je odpověď ne, použijte NOLOCK ke zlepšení výkonu.
NOLOCK klíčové slovo v kódové základně pro Stack Overflow a našlo 138 instancí, takže je používáme na několika místech.