Qual è la differenza tra l'utilizzo di "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" e NOLOCK? Uno è migliore dell'altro?NOLOCK rispetto al livello di isolamento della transazione
risposta
Sono la stessa cosa, solo l'ambito in modo diverso. NOLOCK è posto su una base per tabella e SET Transaction...
può essere inserito come blocco.
grazie per la conferma! – Jason
equivale a mettere il nolock in tutte le tabelle in sql in esecuzione? –
NOLOCK è un suggerimento di query e come tale si applica solo alla tabella specifc all'interno della query in cui è specificata.
L'impostazione del livello di isolamento della transazione si applica a tutto il codice eseguito quindi avanti all'interno della connessione corrente o finché non viene esplicitamente modificato.
Per chiarire, dal punto di vista funzionale il livello di isolamento sul lavoro è lo stesso, tuttavia l'ambito coperto potrebbe non esserlo.
Vedere that answer da qualche ora fa, alla domanda SQL Server SELECT statements causing blocking.
Citando Remus Rusanu:
SELECT può bloccare gli aggiornamenti. Un modello dati e una query correttamente progettati causeranno solo un blocco minimo e non costituiranno un problema. Il 'solito' con il suggerimento di NOLOCK è quasi sempre la risposta sbagliata. La risposta corretta è sintonizzare la query in modo che non esegua la scansione di tabelle enormi.
Se la query è impossibili da sintonizzare allora si dovrebbe prima prendere in considerazione il livello Isolamento dello snapshot, secondo si dovrebbe considerare l'utilizzo di snapshot di database e ultima opzione dovrebbe essere letture sporche (ed è meglio cambiare il livello di isolamento piuttosto che utilizzare l'hint NOLOCK). Nota che le letture sporche, come afferma chiaramente il nome, restituiranno dati incoerenti (ad esempio il tuo foglio totale potrebbe essere sbilanciato).
Le altre risposte possono essere d'aiuto.
Solo la mia opinione ma il riferimento qui fornito non risponde alla domanda posta. –
Non proprio, sì, ma ho pensato che potesse essere d'aiuto, dal momento che confronta NOLOCK con altri metodi di isolamento. –
Hanno lo stesso effetto, solo uno viene utilizzato come suggerimento di blocco (nolock) e l'altro è utilizzato per un ambito di connessione.
Fai attenzione a uno di questi: le letture sporche possono essere una cosa molto brutta a seconda della tua app. Leggere lo stesso record due volte o perdere un record a causa del movimento della pagina può essere una cosa molto confusa per gli utenti ...
- 1. Livello di isolamento in Sql Transazione
- 2. blocco di isolamento della transazione serializzabile
- 3. Come posso modificare il LIVELLO DI ISOLAMENTO DELLA TRANSAZIONE predefinito in SQL Server 2005?
- 4. Impostazione del livello di isolamento della transazione per H2 tramite un DataSource
- 5. Come si può vedere quale livello di isolamento della transazione sta usando una sessione oracle arbitraria
- 6. Come si imposta il livello di isolamento della transazione in SQLAlchemy per PostgreSQL?
- 7. Come disinserire/ripristinare un livello di isolamento della transazione per SQL Server?
- 8. Qual è il livello di isolamento della transazione predefinito per SQL Server con ADO.NET?
- 9. come cambiare il livello di isolamento?
- 10. imposta il livello di isolamento per le stored procedure postgresql
- 11. Snapshot transazione di isolamento interrotta a causa di aggiornare conflitto
- 12. Qual è il livello di isolamento ADO.NET predefinito?
- 13. Livelli di isolamento in oracolo
- 14. Usi pratici del livello di Isolamento di Serializzazione?
- 15. READ livello di isolamento del database COMMESSO in oracle
- 16. Funzioni di transazione DOP rispetto a istruzioni di transazione MySQL?
- 17. "IMPOSTAZIONE LIVELLO ISOLAMENTO TRANSAZIONE LEGGERE NON CORRETTO" non sta prendendo? O sto guardando nel modo sbagliato?
- 18. Alcuni chiarimenti su diversi livelli di isolamento nella transazione del database?
- 19. Livello di isolamento di ibernazione con Postgres 9.0
- 20. Livello isolamento - Serializzabile. Quando dovrei usare questo?
- 21. Transazioni gestite in primavera, EclipseLink JPA, livello isolamento personalizzato
- 22. Do scrive nel livello di isolamento SNAPSHOT blocco scrive in un'altra transazione snapshot in SQL Server 2008 R2
- 23. Pro e contro di applicazione della chiave esterna a livello di programmazione rispetto al database
- 24. livello di isolamento predefinito nella struttura di primavera
- 25. Posso impostare il livello di isolamento nella stringa di connessione?
- 26. con (nolock) o (nolock) - C'è una differenza?
- 27. Calcolo della differenza rispetto al record precedente
- 28. Qual è la relazione tra livello di blocco, blocco e isolamento?
- 29. Livelli di isolamento delle transazioni variabili su richiesta
- 30. A NOLOCK o NOT a NOLOCK, questa è la domanda
Si noti che l'hint 'NOLOCK' è deprecato in MSSQL 2012, da sostituire con l'equivalente 'READUNCOMMITTED' suggerimento . [Fonte] (http://msdn.microsoft.com/en-us/library/ms187373.aspx). – Jeroen
L'origine suggerita dice: 'Il supporto per l'uso dei suggerimenti READUNCOMMITTED e NOLOCK nella clausola FROM che si applicano alla tabella di destinazione di un'istruzione UPDATE o DELETE verrà rimosso in una versione futura di SQL Server. '. Non dice che 'NOLOCK' è deprecato. Attualmente sono disponibili sia i suggerimenti 'NOLOCK' e' READUNCOMMITTED' che credo. – RBT