Para que serve o with nolock
26/09/2016
0
Gostaria de saber qual a real utilidade disso, se apresenta vantagens e quando o uso é aconselhável.
Calebe Menezes
Post mais votado
03/10/2016
Em tese é o que Diego Souza falou. Explicando um pouco mais a fundo, quando é utilizada transação no banco de dados, o registro não poderá ser acessado até que essa transação finalize seja confirmando a alteração (commit) ou desfazendo (rollback).
O que o With Nolock faz é pegar o valor anterior o início da transação não esperando ela finalizar para ter a informação.
De forma análoga imagine o seguinte cenário:
No caminho da escola você irá verificar se a luz da sala da sua casa está acesa.
Ao chegar em casa, a porta está trancada e você não tem a chave. Com isso, você precisa esperar alguém abrir a porta da casa para verificar se a luz está acesa. Esse processo leva um tempo e você poderia perder o horário da aula caso a demora fosse grande ou até mesmo corre o risco de não ter ninguém em casa.
O mesmo cenário com with nolock: você chega em casa e encontra a porta da sala trancada. Você então assume que ela está do mesmo jeito do dia anterior e vai para escola.
Note que você não perdeu tempo, porém não tem certeza se a informação está correta.
Portanto o cuidado que deve-se ter ao utilizar o with nolock em consultas que retornam valores, quantidades e etc, pois poderá afetar o resultado final. O uso recomendado são para tabelas base de cadastros que estão em constante alterações e assim não afetariam processos de faturamento, por exemplo.
Abraços e até mais.
David Styveen
Mais Posts
29/09/2016
Diego Silva
O SQL SERVER usa mecanismo de bloqueio, para que a integridade dos seus dados seja mantida.
Então, uma execução da sua query no estado normal, vem com um lock (cadeado, bloqueio), o que impacta na hora de fazer consultas por exemplo. O problema é que o with nolock também não pode ser usado de maneira leviana, pois pode acabar te comprometendo em alguma circunstância. O with nolock tiraria esse bloqueio e melhoraria assim a sua performance.
Meu conselho é para que você use quando for realmente necessário
07/10/2016
João Françozo
Nunca usar o Nolock.
Caso usar você vai conseguir ler dados sujos que podem causar decisões erradas.
Veja esses videos de um grande amigo, vai te ajudar a entender melhor.
http://www.youtube.com/playlist?list=PL70D92D06E08E6653&feature=plcp
Clique aqui para fazer login e interagir na Comunidade :)