A mia conoscenza, l'unica differenza è la portata degli effetti, come ha detto Strommy. NOLOCK suggerisce su un tavolo e LEGGERE UNCOMMITTED sulla sessione.
Per quanto riguarda i problemi che possono verificarsi, è tutto sulla coerenza. Se ti interessa, tieni presente che potresti ottenere ciò che viene chiamato "dirty read" che potrebbe influenzare altri dati manipolati su informazioni errate.
Personalmente non penso di aver visto alcun problema da questo, ma ciò potrebbe essere dovuto al modo in cui uso nolock. È necessario essere consapevoli del fatto che ci sono scenari in cui sarà OK da usare. Scenari in cui si aggiungono per lo più nuovi dati a una tabella ma si ha un altro processo che viene fornito in retroverno per verificare uno scenario di dati. Questo probabilmente andrà bene poiché il flusso principale non include tornare indietro e aggiornare le righe durante una lettura.
Inoltre, credo che in questi giorni si dovrebbe esaminare in Concurrency Control Multi-versione. Credo che l'abbiano aggiunto nel 2005 e aiuta a impedire agli scrittori di bloccare i lettori dando ai lettori un'istantanea del database da utilizzare. Io includo un link e lascio ulteriori ricerche per il lettore:
MVCC
Database Isolation Levels
fonte
2010-08-23 18:20:38
Considerare 'REPEATABLE READ' invece di 'SERIALIZABLE' se non si preoccupano dei dati fantasma. 'SERIALIZABLE' è VERAMENTE restrittivo e non dovrebbe quasi mai essere usato (ad eccezione, ad esempio, di alcune applicazioni finanziarie critiche). – Kryptos