Comprendo che un livello di isolamento di serializzabile è il più restrittivo tra tutti i livelli di isolamento. Sono curioso, però, che tipo di applicazioni richiederebbero questo livello di isolamento o quando dovrei considerare di usarlo?Livello isolamento - Serializzabile. Quando dovrei usare questo?
risposta
Ponetevi la seguente domanda: Sarebbe male se qualcuno inserisse una nuova riga nei dati mentre la transazione è in esecuzione? Questo interferirebbe con i risultati in modo inaccettabile? In tal caso, utilizzare il livello SERIALIZABLE.
Da MSDN regarding SET TRANSACTION ISOLATION LEVEL:
SERIALIZABLE
imposta un blocco intervallo sul set di dati, impedendo altri utenti di aggiornare o inserimento di righe nei dati impostati finché la transazione è stata completata. Questo è il più restrittivo dei livelli di isolamento . Poiché la concorrenza è inferiore, utilizzare questa opzione solo quando necessario. Questa opzione ha lo lo stesso effetto dell'impostazione di HOLDLOCK su tutte le tabelle in tutte le istruzioni SELECT nella transazione .
Così la transazione mantiene tutti i lucchetti per tutta la sua durata, anche quelli normalmente scartati dopo l'uso. Questo fa sembrare che tutte le transazioni siano in esecuzione una alla volta, da qui il nome SERIALIZABLE. Nota da Wikipedia regarding isolation levels:
SERIALIZABLE livello
Questo isolamento specifica che tutte le transazioni avvengono in modo completamente isolato; Ad esempio, come se tutte le transazioni nel sistema avessero eseguite in serie, una dopo l'altra . Il DBMS può eseguire due o più transazioni allo stesso tempo solo se l'illusione dell'esecuzione seriale può essere mantenuta.
Prova contabilità. Le transazioni negli account sono intrinsecamente serializzabili se si desidera avere i valori dell'account appropriati e aderire a cose come i limiti di credito.
- 1. blocco di isolamento della transazione serializzabile
- 2. C# Quando dovrei usare List e quando dovrei usare l'arraylist?
- 3. Quando dovrei usare CompiledQuery?
- 4. Quando dovrei usare AQL?
- 5. Quando dovrei usare ConcurrentSkipListMap?
- 6. come cambiare il livello di isolamento?
- 7. Quando e perché dovrei usare ClassName: questo (null)?
- 8. Quando dovrei usare # in ColdFusion?
- 9. Quando dovrei usare git stash?
- 10. Quando dovrei usare un parser?
- 11. Quando dovrei usare l'Interface Builder?
- 12. Quando dovrei usare metodi statici?
- 13. Quando dovrei usare l'inizializzazione uniforme?
- 14. Usi pratici del livello di Isolamento di Serializzazione?
- 15. Quando dovrei usare setUpClass e quando __init__?
- 16. Quando dovrei usare AutoMapper e quando non lo sono
- 17. Quando (se necessario) dovrei usare Bitmap.recycle()?
- 18. Quando dovrei usare require() e quando usare define()?
- 19. Quando dovrei usare Sql Azure e quando dovrei usare la tabella Storage?
- 20. Quando dovrei usare Import-Package e quando dovrei usare Require-Bundle?
- 21. Quando dovrei usare Option.empty [A] e quando dovrei usare None in Scala?
- 22. Livello di isolamento in Sql Transazione
- 23. Quando dovrei usare React.cloneElement vs this.props.children?
- 24. Quando dovrei usare std :: thread :: detach?
- 25. Quando dovrei usare un delegato in asp.net?
- 26. Quando dovrei usare UIImagePickerControllerSourceTypePhotoLibrary invece di UIImagePickerControllerSourceTypeSavedPhotosAlbum?
- 27. Quando dovrei usare C++ anziché SQL?
- 28. Quando dovrei usare metodi pubblici/privati / statici?
- 29. Quando dovrei usare PowerShell su applicazioni tradizionali?
- 30. Quando dovrei usare @JoinColumn o @JoinTable?
Un riferimento valido e correlato: (isolamento serializzabile vs snapshot) http://blogs.msdn.com/b/craigfr/archive/2007/05/16/serializable-vs-snapshot-isolation-level.aspx –
Ecco il collegamento aggiornato a ['SET TRANSACTION ISOLATION LEVEL' da MSDN] (https://msdn.microsoft.com/en-us/library/ms173763.aspx) –
@AlexYursha Grazie, ho aggiornato il post. –