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

Vista: 11079|Risposta: 1

[Fonte] MSSQL CON (NOLOCK) lettura sporca

[Copiato link]
Pubblicato il 3-04-2020 10:06:04 | | |
Contro:

1. Produrrà letture sporche

2. Applicabile solo a istruzioni di query selezionate

Pro:

1. Alcuni file indicano che l'efficienza delle query SQL con WITH (NOLOCK) può essere aumentata del 33%.

2. Può essere usato per istruzioni interne join

Lettura sporca: Un utente modifica una risorsa, e un altro utente legge il record modificato, poi il primo utente rinuncia alla modifica e i dati tornano alla modifica precedente; questi due risultati diversi sono letture sporche.

Dettagli:

Per migliorare le prestazioni delle query SQL, in generale, la prima considerazione è creare un indice. Infatti, oltre all'istituzione degli indici, quando inseriamo comandi SQL, aggiungere una sezione WITH (NOLOCK) alla sintassi può migliorare il fenomeno dei dataset LOCKATI in un ambiente con un gran numero di query online, migliorando così le prestazioni delle query.

Tuttavia, una cosa da notare è che SQL SELECT con (NOLOCK) può causare lettura sporca.

Per esempio:

Oltre al semplice SELECT, puoi anche usare la sintassi SELECT con JOIN. Ma DELETE, INSERT, UPDATE e altri comandi che richiedono transazioni non sono buoni...


Alcuni file indicano che l'efficienza delle query SQL può essere aumentata del 33% con WITH (NOLOCK).
Aggiungendo WITH (NOLOCK) SQL Server si dice che il nostro comando SELECT non deve considerare lo stato del blocco delle transazioni della tabella corrente, quindi le prestazioni miglioreranno significativamente e il fenomeno del lock del sistema di database sarà notevolmente ridotto (incluso il deadlock).

Una cosa da notare è che, poiché WITH (NOLOCK) non tiene conto del blocco delle transazioni della tabella corrente, quindi quando ci sono dati in più fasi (ad esempio transazioni su più tabelle - >ad esempio sistemi di prelievo), WITH (NOLOCK) ignora i dati che stanno attualmente elaborando il processo di transazione...

Per dirla in modo diretto, cioè, quando si usa NoLock, è possibile leggere dati modificati ma la transazione non è ancora stata completata. Pertanto, se devi considerare l'integrità in tempo reale dei dati delle transazioni, dovresti pensare attentamente all'uso di WITH (NOLOCK).

Se non devi considerare le transazioni, WITH (NOLOCK) potrebbe essere un riferimento utile.

Nota 1: CON ( < table_hint > )
Specifica la scansione della tabella, uno o più indici utilizzati dall'ottimizzatore delle query,
Oppure tramite l'ottimizzatore di query per sfruttare questa tabella dati e usare la modalità lock per questa istruzione.

Nota 2: WITH (NOLOCK) equivale a READ UNCOMMITTED





Precedente:La latenza master-slave del database porta a una risoluzione imprecisa delle query
Prossimo:Risolto il problema che Fiddler non riusciva a scansionare localhost locale, richieste di rete 127.0.0.1
Pubblicato il 5-4-2020 14:21:36 |
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