Uso SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
la maggior parte delle mie query SQL generali, principalmente perché questo mi è stato approfondito durante l'apprendimento della lingua.
Secondo la mia comprensione, questo livello di isolamento agisce nello stesso modo che WITH (NO LOCK)
comunque io tendo sempre a usare SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- C'è sempre un momento che dovrei usare
WITH (NO LOCK)
sopraSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
. - Impedisce ad
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
altri utenti di essere bloccato fuori dalle tabelle che sto leggendo? - Se
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
viene utilizzato per arrestare i blocchi, ma sto solo leggendo i dati, a che serve usarli? Sono solo le query a uso intensivo del sistema a generare blocchi? Vale la pena usarlo quando si eseguono query che tornerebbero ad esempio in 5-10 secondi? - Mi è stato detto di non utilizzare
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
durante la lettura di dati che sarebbero stati utilizzati negli aggiornamenti, presumibilmente per evitare l'aggiornamento di dati sporchi. Questa sarebbe l'unica ragione? - Con il tipo di database su cui sto lavorando, esiste un ambiente di produzione e test. Molto raramente eseguiremo query sull'ambiente di produzione, ma quando ne avrò bisogno, utilizzerò generalmente la
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
mia query. Capisco che letture sporche sono possibili con questo. A parte la ricezione di dati che potrebbero non finire per essere impegnati nel database (e quindi scartare i miei risultati) quali altri tipi di "letture sporche" potrebbero essere possibili?
Ci scusiamo per le domande di massa.
READ UNCOMMITTED
ovunque, esattamente come non usereiWITH (NOLOCK)
ovunque (sono essenzialmente la stessa cosa) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere