Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 27|Risposta: 0

[Consigli] CON (NOLOCK) ottimizzazione per query EF Core ad alta concorrenza

[Copiato link]
Pubblicato suIeri alle 20:48 | | |
Requisiti: Alcuni dati permettono letture sporche, come contenuti di articoli, visualizzazioni di pagina, commenti, ecc., che non sono rigorosi come i dati finanziari. Per migliorare le prestazioni delle query, si possono utilizzare transazioni ReadUncommit, ma SqlTransaction e TransactionScope presentano bug a livello di isolamento di perdita che non sono ancora stati risolti, quindi considera l'uso della soluzione WITH (NOLOCK).

Recensione:
Ottimizzazione delle query del Entity Framework WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# utilizza SqlScriptDOM per analizzare ed eseguire istruzioni SQL
https://www.itsvse.com/thread-11222-1-1.html

Livelli di isolamento delle fughe di SqlTransaction e TransactionScope (questo bug esiste da 8 anni e non è ancora stato risolto!) Stimo che molte persone potrebbero essere colpite, ma potrebbero non rendersene conto):Il login del link ipertestuale è visibile.

Questo articolo deve fare riferimento a SqlScriptDOM per analizzare le istruzioni SQL e aggiungere WITH(NOLOCK). Fai riferimento al progetto open-source:Il login del link ipertestuale è visibile.

Citazioni Nuget come segue:
Crea una nuova funzione AllowDirtyReadAttribute.cs, codifica come segue:
Crea un nuovo WithNoLockInterceptor per sovrascrivere certi metodi in DbCommandInterceptor. Il codice è il seguente:
Iniettare in EF Core con la seguente configurazione:
Usare per aggiungerlo sopra il metodo controller[PermettiDirtyRead]Potere.

Dichiarazione SQL grezza:
SELECT [o]. [Id],
         [o]. [NomeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Prodotto]
DA [Ordini] COME [o]
             GIUNZIONE ESTERNA SINISTRA
         [Linee d'Ordine] COME [o0]
         ON [o]. [Id] = [o0]. [OrderId]
DOVE [o]. [Id] = 1
ORDINARE PER [o]. [Id];

Istruzione generata dopo l'aggiunta di NOLOCK:
SELECT [o]. [Id],
         [o]. [NomeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Prodotto]
DA [Ordini] COME [O] CON (NOLOCK)
         GIUNZIONE ESTERNA SINISTRA
         [Linee d'Ordine] COME [OO] CON (NOLOCK)
         ON [o]. [Id] = [o0]. [OrderId]
DOVE [o]. [Id] = 1
ORDINARE PER [o]. [Id];




Precedente:(MSSQL) Ricerca in testo intero SQL Server, Indice di testo completo
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com