Ulemper:
1. Det vil gi skitten lesing
2. Kun gjelder for utvalgte spørringssetninger
Fordeler:
1. Noen filer sier at SQL-spørringseffektiviteten med WITH (NOLOCK) kan økes med 33 %.
2. Kan brukes for inner join-setninger
Dirty read: En bruker gjør en endring i en ressurs, og en annen bruker leser tilfeldigvis den modifiserte posten, og så gir den første brukeren opp endringen, og dataene går tilbake til forrige endring, disse to forskjellige resultatene er dirty reading.
Detaljer:
For å forbedre ytelsen til SQL-spørringer, generelt sett, er det første å vurdere å lage en indeks. Faktisk, i tillegg til å etablere indekser, kan det å legge til en seksjon WITH (NOLOCK) i syntaksen forbedre fenomenet med datasett som LOCKes i et miljø med mange nettbaserte spørringer, og dermed forbedre spørringsytelsen når vi plasserer SQL-kommandoer.
En ting å merke seg er imidlertid at SQL SELECT med (NOLOCK) kan forårsake Dirty Read.
For eksempel:
I tillegg til enkel SELECT kan du også bruke SELECT-syntaks med JOIN. Men DELETE, INSERT, UPDATE og andre kommandoer som krever transaksjoner er ikke bra...
Noen filer sier at SQL-spørringseffektiviteten kan økes med 33 % med WITH (NOLOCK). Å legge til WITH (NOLOCK) forteller SQL Server at vår SELECT-kommando ikke trenger å ta hensyn til transaksjonslåsetilstanden til den nåværende tabellen, så ytelsen vil bli betydelig forbedret, og låsefenomenet i databasesystemet vil bli betydelig redusert (inkludert dødlås).
En ting å merke seg er at fordi WITH (NOLOCK) ikke tar hensyn til transaksjonslåsen til den nåværende tabellen, så når det finnes data i flere faser (f.eks. transaksjoner på tvers av flere tabeller – >f.eks. uttakssystemer), ignorerer WITH (NOLOCK) dataene som for øyeblikket behandler transaksjonsprosessen...
For å si det rett ut, det vil si, når man bruker NoLock, lar det lese data som er endret, men transaksjonen ennå ikke er fullført. Derfor, hvis du må vurdere sanntidsintegriteten til transaksjonsdata, bør du nøye vurdere å bruke WITH (NOLOCK).
Hvis du ikke trenger å vurdere transaksjoner, kan WITH (NOLOCK) være en nyttig referanse.
Notat 1: MED ( < table_hint > ) Spesifiserer tabellskanningen, en eller flere indekser brukt av spørringsoptimalisatoren, Eller av spørringsoptimalisatoren for å utnytte denne datatabellen og bruke låsemodus for denne setningen.
Merknad 2: WITH (NOLOCK) tilsvarer READ UNCOMMITTED
|