Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 10821|Odpowiedź: 0

[Źródło] sql SELECT

[Skopiuj link]
Opublikowano 08.01.2016 17:58:31 | | |

Widziałem, jak moi starsi programiści używali WITH (NOLOCK) podczas zapytań w SQL Server i zastanawiałem się, dlaczego tego używają. Teraz to zgłębiłem i odkryłem, że jest to przydatne do poprawy wydajności podczas wykonywania zapytania. Jednak używanie tego systemu ma też wadę. Minusem jest to, że można nie mieć pewności, czy otrzymuje dane, które są aktualnie aktualizowane w tabeli, czyli bez zabezpieczenia blokady nie można mieć gwarancji, że dane nie są zmienia się w trakcie działania zapytania. Sprawdziłem ten link i uznałem go za całkiem przydatny.

Aby poprawić wydajność zapytań SQL, ogólnie rzecz biorąc, pierwszym krokiem jest stworzenie indeksu. W rzeczywistości, oprócz ustalania indeksów, gdy umieszczamy polecenia SQL, dodanie sekcji WITH (NOLOCK) do składni może poprawić zjawisko LOCK-owania zbiorów danych w środowisku z dużą liczbą zapytań online, poprawiając tym samym wydajność zapytań.

Jednak warto zauważyć, że SQL SELECT z (NOLOCK) może powodować nieczytelne odczyty.

Na przykład:




Ponieważ SQL Server wykonuje odpowiednią kontrolę spójności blokady. Aby poprawić ogólną wydajność zapytań bazy danych, dodaj WITH (NOLOCK) do końca nazwy tabeli w składni SELECT, choć (NOLOCK) również jest akceptowalne, ale Microsoft nadal zaleca dodanie WITH.

Oprócz prostego SELECT możesz także użyć składni SELECT z JOIN. Ale DELETE, INSERT, UPDATE i inne polecenia wymagające transakcji nie są dobre...

Niektóre pliki twierdzą, że wydajność zapytań SQL można zwiększyć o 33% dzięki WITH (NOLOCK).
Dodanie WITH (NOLOCK) informuje SQL Server, że nasze polecenie SELECT nie musi uwzględniać stanu blokady transakcji w bieżącej tabeli, więc wydajność zostanie znacznie poprawiona, a zjawisko blokady systemu bazodanowego znacznie ograniczone (w tym martwe zablokowanie).

Warto zauważyć, że ponieważ WITH (NOLOCK) nie uwzględnia blokady transakcji w bieżącej tabeli, więc gdy dane są w wielu fazach transakcji (np. transakcja w wielu tabelach – > jak system wypłat), WITH (NOLOCK) ignoruje dane, które obecnie przetwarzają proces transakcji...

Mówiąc wprost, używając NoLock, pozwala on odczytać dane, które zostały zmodyfikowane, ale transakcja jeszcze nie została zakończona. Dlatego jeśli musisz wziąć pod uwagę integralność danych transakcyjnych w czasie rzeczywistym, powinieneś dokładnie przemyśleć użycie WITH (NOLOCK).

Jeśli nie musisz brać pod uwagę transakcji, WITH (NOLOCK) może być przydatnym odniesieniem.

Notatka 1: WITH ( < table_hint > )
Określa skanowanie tabeli, jeden lub więcej indeksów używanych przez optymalizator zapytań,
Albo przez optymalizator zapytań, aby wykorzystać tę tabelę danych i użyć trybu blokady dla tego zdania (lock).

Uwaga 2: WITH (NOLOCK) jest równoważne READ uncommitted

Na koniec porozmawiajmy o kilku drobnych różnicach między nolockiem a with(nolock):
1: Synonimy w SQL05 są obsługiwane tylko z (nolock);
2: z (nolock) zapisuje się bardzo łatwo, a następnie określa indeks.
Podczas zapytań o instrukcje na serwerach nie można używać tylko z (nolock), tylko nolock
Podczas zapytań na tym samym serwerze można używać zarówno (nolock), jak i nolocka
Na przykład co
Kod SQL
wybierz * z [IP].a.dbo.table1 z (nolock) To poprosi o błąd select * z a.dbo.table1 z (nolock) To zadziała




Poprzedni:C# ukrywa środkową cyfrę numeru ID
Następny:JQUERY ładuje JS za pomocą Ajax
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com