Giustifica NON usare l'hint (nolock) in ogni query


23

Hai mai dovuto giustificare di NON utilizzare un suggerimento per le query?

Sto vedendo WITH (NOLOCK)in ogni singola query che colpisce un server molto occupato. È al punto che gli sviluppatori pensano che dovrebbe essere attivo per impostazione predefinita perché odiano vederlo nel loro codice migliaia di volte.

Ho cercato di spiegare che sta permettendo letture sporche e alla fine finiranno con dati errati, ma credono che ne sia valsa la pena il compromesso delle prestazioni. (Il loro database è un disastro; non c'è da stupirsi che abbiano problemi di prestazioni.)

Se hai un chiaro esempio di come presentare il caso contro questo abuso del NOLOCKsuggerimento, sarebbe apprezzato.

Risposte:


17

Scegli le tue battaglie e battaglie come questa non possono essere vinte facilmente. Abbiamo un sistema in cui ogni DML è accennato con il suggerimento ROWLOCK (indipendentemente dalla modifica di una riga o di diverse migliaia di righe). Ho mostrato diversi esempi per cui fa davvero male alle prestazioni, ma poiché il sistema sta già funzionando, c'è resistenza al cambiamento. Si noti che li ho convinti abbastanza da NON utilizzare questo andando avanti comunque.

NOLOCK ha il suo posto, ma posso consigliare alcuni buoni riferimenti che mostrano i problemi di utilizzo:



9

Devi spiegare ai tuoi colleghi l'importanza di comprendere i livelli di isolamento. Mostra loro esempi. La spiegazione più semplice e facile che ho trovato su Little Kendra poster dei livelli di isolamento di . Chiedi loro perché pensano di aver bisogno del suggerimento di Nolock. Perché non usano le istruzioni "imposta il livello di isolamento delle transazioni ..."? Chiedi qual è esattamente la situazione che vogliono risolvere, forse hanno deadlock, bloccando ... ecc. Se semplicemente non vogliono tenere i blocchi potrebbero prendere in considerazione il livello di isolamento dell'istantanea.

Solo chiedendo loro puoi avere un'immagine chiara.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.