SQL Server aplica bloqueos para
prevenir distintosproblemas que
se pueden ocasionar si dos o
más sesiones trabajan con el
mismo dato al mismo tiempo.
Problemas
Comunes en la
Concurrencia
Actualizaciones
Perdidas
Dos o más transacciones actualizan el
mismo dato en base al valor original del
mismo. La última actualización en
procesarse le “gana” a las anteriores
Dependencia no confirmada
(lectura no actualizada)
También llamada lectura sucia, sucede
cuando una segunda transacción lee
datos modificados por una transacción
que todavía no ha sido confirmada.
Análisis incoherente
(lectura irrepetible)
Se produce cuando una transacción lee el mismo DATO
dos veces (o más) y una segunda transacción modifica el
dato luego de la primera lectura, por lo que la primera
lectura es distinta de la segunda, por ende, no se puede
repetir la lectura.
Lecturas fantasmas
Ocurre cuando una transacción accede a un rango de datos más
de una vez y una segunda transacción inserta o elimina filas en
medio de dos lecturas de la primera transacción.
Niveles de Aislamiento
Es una forma sencilla de
garantizar el aislamiento entre
transacciones, pero no es la
mejor solución en algunas
situaciones.
Tipos
READ COMMITTED
Nivel de aislamiento default. Todos los lectores
en esta sesión podrán leer solo modificaciones
de datos que han sido confirmadas.
READ UNCOMMITTED
Este nivel de aislamiento permite a los lectores leer datos que
no han sido confirmados. Es decir, remueve el bloqueo
compartido que adquieren las sentencias SELECT para que los
lectores ya no sean bloqueados por los escritores