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

Vista: 27|Resposta: 0

[Gorjetas] Otimização WITH (NOLOCK) para consultas EF Core de alta concorrência

[Copiar link]
Publicado emOntem às 20:48 | | |
Requisitos: Alguns dados permitem leituras sujas, como conteúdo de artigos, visualizações de página, comentários, etc., o que não é tão rigoroso quanto dados financeiros. Para melhorar o desempenho da consulta, transações ReadUncommitted podem ser usadas, mas SqlTransaction e TransactionScope apresentam bugs de nível de isolamento de vazamento que ainda não foram corrigidos, então considere usar a solução WITH (NOLOCK).

Revisar:
Otimização de Consultas do Entity Framework WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# usa SqlScriptDOM para analisar e executar instruções SQL
https://www.itsvse.com/thread-11222-1-1.html

Níveis de isolamento de vazamento do SqlTransaction e do TransactionScope (esse bug existe há 8 anos e ainda não foi corrigido!) Estimo que muitas pessoas possam ser afetadas, mas podem não perceber):O login do hiperlink está visível.

Este artigo precisa referenciar o SqlScriptDOM para analisar instruções SQL e adicionar WITH(NOLOCK). Consulte o projeto open-source:O login do hiperlink está visível.

Citações Nuget da seguinte forma:
Crie um novo recurso AllowDirtyReadAttribute.cs, programe da seguinte forma:
Crie um novo WithNoLockInterceptor para sobrescrever certos métodos no DbCommandInterceptor. O código é o seguinte:
Injete no EF Core com a seguinte configuração:
Use para adicionar acima do método controlador[PermitirLeitura Suja]Poder.

Instrução SQL bruta:
SELECT [o]. [Id],
         [o]. [NomeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Produto]
DE [Ordens] COMO [o]
             JUNÇÃO EXTERNA ESQUERDA
         [Linhas de Ordem] COMO [o0]
         ON [o]. [Id] = [o0]. [OrderId]
ONDE [o]. [ID] = 1
ORDEM POR [o]. [Id];

Instrução gerada após adicionar NOLOCK:
SELECT [o]. [Id],
         [o]. [NomeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Produto]
DE [Ordens] COMO [O] COM (NOLOCK)
         JUNÇÃO EXTERNA ESQUERDA
         [Linhas de Ordem] COMO [OO] COM (NOLOCK)
         ON [o]. [Id] = [o0]. [OrderId]
ONDE [o]. [ID] = 1
ORDEM POR [o]. [Id];




Anterior:(MSSQL) Busca de Texto Completo do SQL Server, Índice de Texto Completo
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