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

Vista: 44050|Risposta: 3

[Fonte] Ottimizzazione delle query del Entity Framework WITH(NOLOCK)

[Copiato link]
Pubblicato il 6-1-2021 14:52:16 | | | |
Prima di tutto, questo articolo eNon aggiungendo WITH(NOLOCK) per migliorare le prestazioni delle queryInvece, i dati vengono letti attraverso il meccanismo di isolamento della transazione.

Nei database SQL Server, quando la stessa tabella del database viene frequentemente letta e scritta contemporaneamente, si verifica un problema di blocco, cioè non si può leggere fino al completamento della precedente transazione di inserimento, aggiornamento e cancellazione, e bisogna attendere che l'operazione sia completata prima di poter eseguire l'operazione di selezione, al fine di prevenire operazioni concorrenti e leggere dati sporchi.

istruzione SELECT con WITH (NOLOCK) per risolvere il deadlock bloccante.

Nota:Usare WITH(NOLOCK) comporterà una lettura dei dati sporca

ef visualizza le istruzioni SQL generate
https://www.itsvse.com/thread-3813-1-1.html
Il codice di prova è il seguente:

Usa Func delegate per impacchettare il codice come segue:

L'istruzione SQL risultante è la seguente:

2021-01-06 14:32:09.9505 [thread] DEBUG DEBUG LogCenter - istruzione sql: SELECT TOP (1)
    [Estensione 1]. [ID] COME [ID],
    [Estensione 1]. [Nome] COME [Nome]
    DA [dbo]. [Itsvse] COME [Estensione1]
    DOVE ([Estensione1].[ Nome] = @p__linq__0) OPPURE (([Estensione1].[ Name] È NULLO) E (@p__linq__0 È NULL))
2021-01-06 14:32:09.9515 [thread] DEBUG DEBUG LogCenter - istruzione sql:

2021-01-06 14:32:09.9525 [thread] DEBUG DEBUG LogCenter - istruzione sql: -- p__linq__0: 'itsvse.com' (tipo = stringa, dimensione = 4000)

2021-01-06 14:32:09.9525 [thread] DEBUG DEBUG LogCenter - istruzione sql: -- In esecuzione al 2021-01-06 14:32:09 +08:00

2021-01-06 14:32:09.9545 [thread] DEBUG DEBUG LogCenter - istruzione sql: -- completato in 1 ms con risultato: SqlDataReader

2021-01-06 14:32:09.9555 [thread] DEBUG DEBUG LogCenter - istruzione sql:

2021-01-06 14:32:09.9555 [thread] DEBUG DEBUG LogCenter - istruzione sql: Connessione chiusa al 2021-01-06 14:32:09 +08:00
Selezione Query non include la parola chiave nolock.

(Fine)





Precedente:.NET/C# implementa una semplice registrazione basata su BlockingCollection
Prossimo:Specifica del linguaggio pubblico .NET (CLS)
 Padrone di casa| Pubblicato il 6-1-2021 14:53:17 |
Utilizza: Aggiungi la seguente istruzione al Application_Start() del Global.cs, e il SQL generato aggiungerà automaticamente with(nolock)
//ef命令拦截器
DbInterception.Add(nuovo WithNoLockInterceptor());
Se l'istruzione SQL deve essere bloccata, aggiungi la seguente estensione


1. Risolto il problema degli errori delle espressioni regolari fornite su Internet in circostanze particolari

 Padrone di casa| Pubblicato il 10-1-2021 10:27:32 |
Test degli script SQL:

Risultati del test:

Nessuna transazione viene aggiunta di default e il livello di isolamento predefinito è corretto:



Durata: 17561 millisecondi

IsolationLevel.ReadUncommitted livello di isolamento, come mostrato nell'immagine seguente:



Tempo: 519 ms

Fonte:



 Padrone di casa| Pubblicato il 2023-5-2 11:45:35 |
ADO.NET impostazioni permettono letture sporcheReadUncommitted, il codice è il seguente:


C'è un altro modo per scriverlo, il codice dapper è il seguente:

Non ci sono problemi con entrambi i test di scrittura,Si consiglia di usare direttamente il primo!!!


Altri modi di scrivere:



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