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

Utsikt: 10821|Svare: 0

[Kilde] sql SELECT

[Kopier lenke]
Publisert på 08.01.2016 17:58:31 | | |

Jeg pleide å se mine seniorutviklere bruke WITH (NOLOCK) når de sendte forespørsler i SQL Server, og lurer på hvorfor de bruker det. Nå har jeg utforsket det og funnet ut at det er nyttig for å forbedre ytelsen i kjøringen av spørringen. Men det er en ulempe ved å bruke det. Ulempen er at man kanskje ikke er sikker på at man får dataene som for øyeblikket oppdateres i tabellen, altså uten låsebeskyttelse kan man ikke være sikker på at dataene ikke er det endres i løpet av tiden spørringen kjører. Jeg viste til denne lenken og syntes den var ganske nyttig.

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 en skitten lesing.

For eksempel:




Fordi SQL Server utfører den tilsvarende låskonsistenssjekken. For å forbedre den totale ytelsen for databasespørringer, legg til WITH (NOLOCK) på slutten av tabellnavnet i SELECT-syntaksen din, selv om (NOLOCK) også er akseptabelt, men Microsoft anbefaler fortsatt å legge til WITH.

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 av en transaksjon (f.eks. en transaksjon mellom flere tabeller – > som et uttakssystem), vil WITH (NOLOCK) ignorere 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

Til slutt, la oss snakke om noen små forskjeller mellom nolock og with(nolock):
1: Synonymer i SQL05, kun med (nolock) støttes;
2: med (nolock) skrives veldig enkelt og deretter spesifiseres indeksen.
Når du spør setninger på tvers av servere, kan du ikke bruke med (nolock), kun nolock
Når man spør på samme server, kan både med (nolock) og nolock brukes
Som hva
SQL-kode
velg * fra [IP].a.dbo.table1 med (nolock) Dette vil gi deg feilmeldingen select * fra a.dbo.table1 med (nolock) Dette vil fungere




Foregående:C# skjuler det midterste sifferet i ID-nummeret
Neste:jquery laster JS med AJAX
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