Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 11079|Svare: 1

[Kilde] MSSQL MED (NOLOCK) skitten lesing

[Kopier lenke]
Publisert 3.04.2020 10:06:04 | | |
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





Foregående:Database master-slave-latens fører til unøyaktig spørringsløsning
Neste:Løste problemet med at Fiddler ikke kunne crawle lokale localhost, 127.0.0.1 nettverksforespørsler
Publisert 2020-4-5 14:21:36 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com