Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 11079|Svar: 1

[Kilde] MSSQL MED (NOLOCK) beskidt læsning

[Kopier link]
Opslået den 3-4-2020 10:06:04 | | |
Ulemper:

1. Det vil give beskidt læsning

2. Gælder kun for udvalgte forespørgselsudsagn

Fordele:

1. Nogle filer siger, at SQL-forespørgselseffektiviteten med WITH (NOLOCK) kan øges med 33%.

2. Kan bruges til indre join-udsagn

Dirty read: En bruger foretager en ændring i en ressource, og en anden bruger læser tilfældigvis den ændrede post, hvorefter den første bruger opgiver ændringen, og dataene vender tilbage til den forrige modifikation; disse to forskellige resultater er dirty reading.

Detaljer:

For at forbedre SQL-forespørgselsydelsen er det første formål generelt at oprette et indeks. Faktisk, ud over etableringen af indekser, kan tilføjelsen af en sektion WITH (NOLOCK) til syntaksen forbedre fænomenet med datasæt, der bliver LOCKet i et miljø med et stort antal online forespørgsler, og dermed forbedre forespørgselsydelsen.

Dog skal man bemærke, at SQL SELECT med (NOLOCK) kan forårsage Dirty Read.

For eksempel:

Ud over simpel SELECT kan du også bruge SELECT-syntaks med JOIN. Men DELETE, INSERT, UPDATE og andre kommandoer, der kræver transaktioner, er ikke gode...


Nogle filer siger, at effektiviteten af SQL-forespørgsler kan øges med 33 % med WITH (NOLOCK).
Tilføjelsen af WITH (NOLOCK) fortæller SQL Server, at vores SELECT-kommando ikke behøver at tage højde for transaktionslåsetilstanden for den aktuelle tabel, så ydeevnen vil blive væsentligt forbedret, og låsefænomenet i databasesystemet vil blive væsentligt reduceret (inklusive deadlock).

En ting at bemærke er, at fordi WITH (NOLOCK) ikke tager højde for transaktionslåsen for den aktuelle tabel, så når der er data i flere faser (f.eks. transaktioner på tværs af flere tabeller – >f.eks. udbetalingssystemer), ignorerer WITH (NOLOCK) de data, der aktuelt behandler transaktionsprocessen...

For at sige det ligeud, det vil sige, når man bruger NoLock, tillader det at læse data, der er blevet ændret, men hvor transaktionen endnu ikke er gennemført. Derfor, hvis du skal overveje transaktionsdatas realtidsintegritet, bør du overveje nøje at bruge WITH (NOLOCK).

Hvis du ikke behøver at overveje transaktioner, kan WITH (NOLOCK) være en nyttig reference.

Note 1: MED ( < table_hint > )
Angiver tabelscanningen, et eller flere indekser brugt af forespørgselsoptimereren,
Eller ved forespørgselsoptimeringen til at udnytte denne datatabel og bruge låsetilstanden til denne sætning.

Note 2: WITH (NOLOCK) svarer til READ UNCOMMITTED





Tidligere:Database master-slave latens fører til unøjagtig forespørgselsløsning
Næste:Løste problemet med, at Fiddler ikke kunne crawle lokale localhost, 127.0.0.1 netværksforespørgsler
Opslået den 5-4-2020 14:21:36 |
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com