Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 10821|Resposta: 0

[Fonte] sql SELECT

[Copiar link]
Publicado em 08/01/2016 17:58:31 | | |

Eu costumava ver meus desenvolvedores seniores usarem WITH (NOLOCK) ao consultar no SQL Server e me perguntar por que eles usam. Agora eu explorei e descobri que é útil para melhorar o desempenho na execução da consulta. No entanto, há uma desvantagem em usá-la. A desvantagem é que você pode não ter certeza de que está recebendo os dados que estão sendo atualizados na Tabela, ou seja, sem proteção contra bloqueios, não é possível garantir que os dados não estejam mudando durante o tempo em que a consulta está sendo executada. Consultei este link e achei bem útil.

Para melhorar o desempenho das consultas SQL, de modo geral, a primeira consideração é criar um índice. Na verdade, além do estabelecimento de índices, quando colocamos comandos SQL, adicionar uma seção WITH (NOLOCK) à sintaxe pode melhorar o fenômeno de conjuntos de dados sendo BLOQUEADOS em um ambiente com grande número de consultas online, melhorando assim o desempenho das consultas.

No entanto, uma coisa a notar é que o SQL SELECT com (NOLOCK) pode causar uma leitura suja.

Por exemplo:




Porque o SQL Server realiza a verificação correspondente de consistência de bloqueios. Para melhorar o desempenho geral da consulta ao banco de dados, adicione WITH (NOLOCK) ao final do nome da tabela na sua sintaxe SELECT, embora (NOLOCK) também seja aceitável, mas a Microsoft ainda recomenda adicionar WITH.

Além do simples SELECT, você também pode usar a sintaxe SELECT com JOIN. Mas DELETE, INSERT, UPDATE e outros comandos que exigem transações não são bons...

Alguns arquivos dizem que a eficiência das consultas SQL pode ser aumentada em 33% com WITH (NOLOCK).
Adicionar WITH (NOLOCK) informa ao SQL Server que nosso comando SELECT não precisa considerar o estado do bloqueio de transação da tabela atual, então o desempenho será significativamente melhorado, e o fenômeno de bloqueio do sistema de banco de dados será significativamente reduzido (incluindo deadlock).

Uma coisa a se notar é que, como WITH (NOLOCK) não leva em conta o bloqueio de transação da tabela atual, então quando há dados em múltiplas fases de uma transação (por exemplo, uma transação entre múltiplas tabelas – > como um sistema de saque), WITH (NOLOCK) ignora os dados que estão processando o processo de transação...

Para ser direto, ou seja, ao usar o NoLock, ele permite ler dados que foram modificados, mas a transação ainda não foi concluída. Portanto, se você precisa considerar a integridade em tempo real dos dados de transação, deve pensar cuidadosamente em usar WITH (NOLOCK).

Se você não precisar considerar transações, WITH (NOLOCK) pode ser uma referência útil.

Nota 1: COM ( < table_hint > )
Especifica a varredura de tabela, um ou mais índices usados pelo otimizador de consultas,
Ou pelo otimizador de consultas para aproveitar essa tabela de dados e usar o modo de bloqueio para essa instrução.

Nota 2: WITH (NOLOCK) é equivalente a READ UNCOMMITTED

Por fim, vamos falar sobre algumas pequenas diferenças entre nolock e with(nolock):
1: Sinônimos em SQL05, somente com (nolock) é suportado;
2: com (nolock) é escrito muito facilmente e então especifica o índice.
Ao consultar instruções entre servidores, você não pode usar com (nolock), apenas com nolock
Ao consultar no mesmo servidor, tanto com (nolock) quanto com nolock podem ser usados
Como o quê
Código SQL
select * from [IP].a.dbo.table1 com (nolock) Isso vai te pedir o erro select * from a.dbo.table1 com (nolock). Isso vai funcionar




Anterior:C# esconde o dígito do meio do número ID
Próximo:jquery carrega o js com ajax
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com