sql >> Databasteknik >  >> RDS >> Sqlserver

Effekt av NOLOCK-tips i SELECT-satser

1) Ja , en markering med NOLOCK slutförs snabbare än ett normalt val.

2) Ja , en markering med NOLOCK kommer att tillåta andra frågor mot den påverkade tabellen att slutföras snabbare än ett normalt urval.

Varför skulle detta vara det?

NOLOCK vanligtvis (beroende på din DB-motor) innebär att ge mig dina data, och jag bryr mig inte om vilket tillstånd det är i, och bry dig inte om att hålla det stilla medan du läser från det. Det är på en gång snabbare, mindre resurskrävande och väldigt mycket farligt.

Du bör varnas för att aldrig göra en uppdatering från eller utföra något systemkritiskt, eller där absolut korrekthet krävs med hjälp av data som härrör från en NOLOCK läsa. Det är absolut möjligt att denna data innehåller rader som raderades under sökningens körning eller som har raderats i andra sessioner som ännu inte har slutförts. Det är möjligt att denna data inkluderar rader som delvis har uppdaterats. Det är möjligt att dessa data innehåller poster som bryter mot begränsningar för främmande nyckel. Det är möjligt att denna data exkluderar rader som har lagts till i tabellen men som ännu inte har konfigurerats.

Du har verkligen inget sätt att veta vilken status data är.

Om du försöker få saker som en radräkning eller andra sammanfattande data där en viss felmarginal är acceptabel, så NOLOCK är ett bra sätt att öka prestanda för dessa frågor och undvika att de påverkar databasens prestanda negativt.

Använd alltid NOLOCK antyda med stor försiktighet och behandla all data den returnerar misstänkt.



  1. Hur man kontrollerar MySQL-databas och tabellstorlekar

  2. LOCALTIMESTAMP() Funktion i Oracle

  3. Heroku psql:FATAL:återstående anslutningsplatser är reserverade för superanvändaranslutningar som inte replikeras

  4. WAMP Kan inte komma åt på det lokala nätverket 403 Förbjudet