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

Vista: 11079|Resposta: 1

[Fonte] MSSQL COM LEITURA SUJA (SEM BLOQUEIO)

[Copiar link]
Postado em 03-04-2020 às 10:06:04 | | |
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





Anterior:A latência mestre-escravo do banco de dados leva a uma resolução imprecisa de consultas
Próximo:Resolveu o problema de que o Fiddler não conseguia rastrear localhost local, solicitações de rede 127.0.0.1
Postado em 05-04-2020 às 14:21:36 |
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