Para que serve o with nolock

26/09/2016

0

Às vezes no SQL Server, vejo algumas consultas que são feitas usando o termo "With nolock".

Gostaria de saber qual a real utilidade disso, se apresenta vantagens e quando o uso é aconselhável.
Calebe Menezes

Calebe Menezes

Responder

Post mais votado

03/10/2016

Boa noite, Calebe.

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

David Styveen
Responder

Mais Posts

27/09/2016

Calebe Menezes

Alguém pode me ajudar?
Responder

29/09/2016

Diego Silva

olha, pelo que entendo, o with nolock serviria para melhorar a performance da sua query.

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
Responder

29/09/2016

Calebe Menezes

Muito obrigado Diego!
Responder

04/10/2016

Calebe Menezes

Explicação perfeita David :)
Muito clara!
Responder

07/10/2016

João Françozo

Bom dia Calebe,

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
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar