Entiendo que un nivel de aislamiento de Serializable es el más restrictivo de todos los niveles de aislamiento. Tengo curiosidad, sin embargo, ¿qué tipo de aplicaciones requerirían este nivel de aislamiento, o cuando debería considerar usarlo?Nivel de aislamiento - Serializable. ¿Cuándo debería usar esto?
Respuesta
Hazte la siguiente pregunta: ¿Sería malo si alguien INSERTARA una nueva fila en tus datos mientras se ejecuta tu transacción? ¿Esto interferiría con sus resultados de una manera inaceptable? Si es así, use el nivel SERIALIZABLE.
De MSDN regarding SET TRANSACTION ISOLATION LEVEL:
SERIALIZABLE
coloca un bloqueo rango en el conjunto de datos, prevenir que otros usuarios actualicen o insertar filas en el conjunto de datos hasta que se complete la transacción. Este es el más restrictivo de los cuatro niveles de aislamiento. Debido a que la concurrencia es menor, use esta opción solo cuando sea necesario. Esta opción tiene el mismo efecto que establecer HOLDLOCK en todas las tablas en todas las declaraciones SELECT en una transacción.
Por lo que su transacción mantiene todos los bloqueos a lo largo de su vida útil, incluso los que normalmente se descartan después de su uso. Esto hace que parezca que todas las transacciones se ejecutan de a una por vez, de ahí el nombre SERIALIZABLE. Nota de Wikipedia regarding isolation levels:
SERIALIZABLE nivel
Este aislamiento se especifica que todas las transacciones se realizan de una manera completamente aislada ; es decir, como si todas las transacciones del sistema tuvieran ejecutadas en serie, una después de la otras. El DBMS puede ejecutar dos o más transacciones al mismo tiempo solo si se puede mantener la ilusión de la ejecución serial .
Probar contabilidad. Las transacciones en las cuentas son intrínsecamente serializables si desea tener valores de cuenta adecuados Y adherirse a cosas como los límites de crédito.
- 1. ¿Cuándo debería usar std_logic_vector y cuándo debería usar otros tipos de datos?
- 2. ¿MySQL/InnoDB implementa un verdadero aislamiento serializable?
- 3. ¿Cuándo debería usar _aligned_malloc()?
- 4. ¿Cuándo debería usar semáforos?
- 5. ¿Cuándo debería usar ConcurrentSkipListMap?
- 6. ¿Cuándo debería usar GC.SuppressFinalize()?
- 7. ¿Cuándo debería usar CompiledQuery?
- 8. Cuándo debería usar SynchronousQueue
- 9. Lectura de snapshot VS Nivel de aislamiento de instantáneas
- 10. ¿Cuándo debería usar Silverlight y cuándo XNA?
- 11. ¿Cuándo debería usar TCP_NODELAY y cuándo TCP_CORK?
- 12. C#: ¿Cuándo debería usar TryParse?
- 13. ¿Cuándo debería usar # en ColdFusion?
- 14. ¿Cuándo debería usar marcos HTML?
- 15. ¿Cuándo debería usar html5 sessionStorage?
- 16. ¿Cuándo debería usar git add?
- 17. ¿Cuándo debería usar los parámetros?
- 18. ¿Cuándo debería usar un analizador?
- 19. ¿Cuándo usar esto en javascript OO?
- 20. Ámbitos de nivel de aislamiento de transacciones
- 21. Nivel de aislamiento en Sql Transacción
- 22. ¿Cuál es el nivel de aislamiento predeterminado de ADO.NET?
- 23. ¿Cuándo debería usar require() y cuándo usar define()?
- 24. En Objective-C, ¿cuándo debería usar métodos de clase y cuándo debería usar métodos de instancia?
- 25. cuándo usar Bean de respaldo Serializable en JSF?
- 26. ¿Cuándo debería usar el generador de interfaz?
- 27. ¿Cuándo debería usar AUTOLOAD de Perl? En
- 28. ¿Cuándo debería usar un gestor de scripts?
- 29. ¿Cuándo debería usar stdClass y cuándo debería usar una matriz en php oo?
- 30. En SQL Server, ¿cuándo debería usar GO y cuándo debería usar punto y coma?
Una buena referencia relacionada: (serializable vs aislamiento de instantáneas) http://blogs.msdn.com/b/craigfr/archive/2007/05/16/serializable-vs-snapshot-isolation-level.aspx –
Aquí está el enlace actualizado a ['SET TRANSACTION ISOLATION LEVEL' de MSDN] (https://msdn.microsoft.com/en-us/library/ms173763.aspx) –
@AlexYursha Gracias, actualicé la publicación. –