Contras:
1. Isso produzirá leituras sujas
2. Aplicável apenas a instruções de consulta selecionadas
Prós:
1. Alguns arquivos dizem que a eficiência de consultas SQL com WITH (NOLOCK) pode ser aumentada em 33%.
2. Pode ser usado para instruções de junção interna
Leitura suja: Um usuário faz uma modificação em um recurso, e outro usuário acaba lendo o registro modificado, e então o primeiro usuário entrega a modificação, e os dados retornam à modificação anterior, esses dois resultados diferentes são leitura suja.
Detalhes:
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 Dirty Read.
Por exemplo:
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 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 (por exemplo, transações em múltiplas tabelas – >ex. sistemas 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
|