Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 3
            [id] => 563509
            [titulo] => Para que serve o with nolock
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-10-03 20:34:19
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 303894
            [status] => A
            [isExample] => -1
            [NomeUsuario] => David Styveen
            [Apelido] => Styveen
            [Foto] => 303894_20140814132448.jpg
            [Conteudo] => 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. ) )

Para que serve o with nolock

Calebe
|
MVP
Pontos: 45
    26 set 2016

À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.

Post mais votado

Styveen
|
MVP
Pontos: 590
    03 out 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.

Calebe
|
MVP
Pontos: 45
    27 set 2016

Alguém pode me ajudar?

Diego Souza
|
MVP
Pontos: 1285
    29 set 2016

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

Calebe
|
MVP
Pontos: 45
    29 set 2016

Muito obrigado Diego!

Calebe
|
MVP
Pontos: 45
    04 out 2016

Explicação perfeita David :)
Muito clara!

João Antonio
|
MVP
Pontos: 125
    07 out 2016

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