sql >> Database teknologi >  >> RDS >> Sqlserver

Effekt af NOLOCK-tip i SELECT-sætninger

1) Ja , et vælg med NOLOCK vil fuldføre hurtigere end et normalt valg.

2) Ja , et vælg med NOLOCK vil tillade andre forespørgsler mod den påvirkede tabel at fuldføre hurtigere end en normal udvælgelse.

Hvorfor skulle det være det?

NOLOCK typisk (afhængigt af din DB-motor) betyder, at du skal give mig dine data, og jeg er ligeglad med hvilken tilstand det er i, og gider ikke holde det stille, mens du læser fra det. Det er på én gang hurtigere, mindre ressourcekrævende og meget meget farligt.

Du skal advares om aldrig at foretage en opdatering fra eller udføre noget systemkritisk, eller hvor absolut korrekthed er påkrævet ved brug af data, der stammer fra en NOLOCK Læs. Det er absolut muligt, at disse data indeholder rækker, der blev slettet under forespørgslens kørsel, eller som er blevet slettet i andre sessioner, der endnu ikke er afsluttet. Det er muligt, at disse data inkluderer rækker, der er blevet delvist opdateret. Det er muligt, at disse data indeholder poster, der overtræder begrænsninger for fremmednøgle. Det er muligt, at disse data ekskluderer rækker, der er blevet tilføjet til tabellen, men som endnu ikke er blevet forpligtet.

Du har virkelig ingen måde at vide, hvordan dataenes tilstand er.

Hvis du forsøger at få ting som en rækkeoptælling eller andre oversigtsdata, hvor en fejlmargin er acceptabel, så NOLOCK er en god måde at øge ydeevnen for disse forespørgsler og undgå, at de påvirker databasens ydeevne negativt.

Brug altid NOLOCK antyde med stor forsigtighed og behandle alle data, den returnerer, mistænkeligt.



  1. Hvad sker der med den primære nøgle-id, når den overskrider grænsen?

  2. Planlagt kørsel af lagret procedure på SQL server

  3. Hvad er logisk ELLER-operatør i SQL Server - SQL Server / TSQL Tutorial Del 119

  4. SQL-forespørgselskolonnen findes ikke fejl