Vad betyder det igentligen?
WITH (NOLOCK)
4 svar · 394 visningar · startad av Travoni
http://www.google.com/search?lr=&ie=UTF-8&oe=UTF-8&q=WITH%20(NOLOCK)
Kan inte engelska...
Normalt när du frågar efter en post (select username from users where username='travoni') så kan den posten vara låst (på grund av en update eller liknade). Ibland kan det vara så att det inte är den aktuella posten som är berörd av updaten. Detta eftersom en update kan innebära en lock av den aktuella posten, men även innebära en lock av en hel sida (med poster).
Med nolock så säger du att du vill hämta datan även om posten är låst. Det innebärt att du kan hämta dålig data. Om du exempelvis kör med transaktioner. Men om datan du skall hämta inte är så känslig för förändringar och du tycker att det är ok att den kanske är mitt i en transaktion så tycker jag att du skall använda nolock (om du har problem med att posterna är låsta och du får timeouts).
Du kan även använda rowlock på updates för att minska risken för att låsa hela sidor. Dock skall du bara använda rowlock när du vet att din update påverkar få poster, för annars kommer du får väldigt många lås som tar mycket prestanda. Så därför skall du låta sql-server styra (skriv inget) om den skall köra pagelock eller rowlock vid din update .
Bra förklarat, då får det bli with nolock helt enkelt (i detta fall)
Men gäller detta även vid en count?
select count(username) from users with (nolock)