sql server - read - Nivel de aislamiento-Serializable. ¿Cuándo debería usar esto?
set isolation to dirty read (2)
Intenta contabilizar 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.
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?
Hágase la siguiente pregunta: ¿Sería malo si alguien INSERTAR una nueva fila en sus datos mientras se ejecuta su transacción? ¿Esto interferiría con sus resultados de una manera inaceptable? Si es así, use el nivel SERIALIZABLE.
Desde MSDN con respecto al SET TRANSACTION ISOLATION LEVEL :
SERIALIZABLE
Coloca un bloqueo de rango en el conjunto de datos, lo que impide que otros usuarios actualicen o inserten 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. Como 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 tanto, 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 con respecto a los niveles de aislamiento :
SERIALIZABLE
Este nivel de aislamiento especifica que todas las transacciones ocurren de forma completamente aislada; es decir, como si todas las transacciones en el sistema se hubieran ejecutado en serie, una después de la otra. El DBMS puede ejecutar dos o más transacciones al mismo tiempo solo si se puede mantener la ilusión de la ejecución en serie.