Pergunta

Em primeiro lugar eu não estou perguntando se NOLOCK deve ou não ser usado. Vamos passar por isso.

Eu acho que a questão se resume a como servidor SQL grava dados? É uma linha inteira escrito de uma só vez ou ele escreve uma coluna de cada vez?

Estou perguntando porque a dica NOLOCK está sendo considerado. Uma leitura suja é bom, desde que toda a linha é retornada (ou não devolvidos). linhas parcialmente escritas não são aceitáveis.

Foi útil?

Solução

No. operações de modificação de dados como inserções, atualizações e exclusões são protegidos por baixo física nível Travas . Todas as operações de acesso a dados, incluindo SELECIONAR livre-lock, são obrigados a estar de acordo com o protocolo de travamento. O resultado é que as gravações parciais nunca são vistos por qualquer leitor.

Outras dicas

Não, ele não vai retornar as linhas parcialmente escritas. NOLOCK significa apenas que esta consulta não irá criar novos bloqueios. Isso não significa que não vai honrar bloqueios existentes e sql server não vai fazer nada que grava dados sem a obtenção de um bloqueio em primeiro lugar.

O que ele pode fazer é linhas de retorno que estão desatualizados ou não relevante porque outra coisa escreveu para uma linha que normalmente teria sido bloqueado por esta consulta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top