Nie wiesz, dlaczego nie zawijasz transakcji finansowych w transakcjach w bazie danych (tak jak w przypadku transferu środków z jednego konta na drugie - nie zatwierdzasz jednej strony transakcji naraz - dlatego istnieją jawne transakcje). Nawet jeśli Twój kod jest w jakikolwiek sposób powiązany z transakcjami biznesowymi, tak jak się wydaje, wszystkie transakcyjne bazy danych mogą potencjalnie spowodować niejawne wycofanie w przypadku błędów lub awarii. Myślę, że ta dyskusja jest ponad twoją głową.
Jeśli masz problemy z blokowaniem, zaimplementuj wersjonowanie i wyczyść kod.
Żadna blokada nie tylko zwraca nieprawidłowe wartości, ale także rekordy i duplikaty fantomów.
Jest powszechnym błędnym przekonaniem, że zawsze przyspiesza uruchamianie zapytań. Jeśli na stole nie ma żadnych blokad zapisu, nie robi to żadnej różnicy. Jeśli na stole są blokady, może to przyspieszyć zapytanie, ale istnieje powód, dla którego wymyślono blokady.
Szczerze mówiąc, oto dwa specjalne scenariusze, w których podpowiedź nolocka może zapewnić użyteczność
1) Baza danych serwera SQL sprzed 2005 r., Która musi uruchamiać długie zapytania względem bazy danych OLTP na żywo, może to być jedyny sposób
2) Źle napisana aplikacja, która blokuje rekordy i zwraca kontrolę do interfejsu użytkownika, a czytniki są blokowane na czas nieokreślony. Nolock może być pomocny, jeśli aplikacja nie może zostać naprawiona (strona trzecia itp.), A baza danych jest wcześniejsza niż 2005 lub nie można włączyć wersji.