Domanda

Prima di tutto io non sto chiedendo se NOLOCK dovrebbe o non dovrebbe essere utilizzato. Andiamo passato che.

Credo che la domanda si riduce a come SQL Server scrive i dati? È un'intera riga scritta in una sola volta o lo fa scrivere una colonna alla volta?

Mi sto chiedendo perché l'hint NOLOCK viene presa in considerazione. Una lettura sporco è bene fintanto che l'intera riga viene restituita (o non restituita). righe parzialmente scritte non sono accettabili.

È stato utile?

Soluzione

No. le operazioni di modifica dei dati come inserimenti, aggiornamenti ed eliminazioni sono protetti da un basso livello fisico chiusure . Tutte le operazioni di accesso ai dati, inclusi SELEZIONA senza blocchi, hanno l'obbligo di conformarsi al protocollo di aggancio. Il risultato è che le scritture parziali non sono mai visti da qualsiasi lettore.

Altri suggerimenti

No, non tornerà righe parzialmente scritte. NOLOCK significa solo che questa query non crea nuove serrature. Ciò non significa che non onorerà serrature esistenti, e di SQL Server non farà nulla che scrive dati senza aver prima ottenuto un blocco.

Che cosa si potrebbe fare è righe di ritorno che non sono aggiornati o non più rilevanti perché qualcosa altro ha scritto a una riga che normalmente sono stati bloccati da questa query.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top