Manejo de Transacciones, Bloqueos y Control de Concurencia
Manejo de Transacciones, Bloqueos y Control de Concurencia
CONTROL DE CONCURRENCIA
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
EVIDENCIA AA10-3
o SQL Server utiliza mecanismos como los bloqueos para aislar las
conexiones unas de otras y que al final, idealmente, todo hubiera
ocurrido como si todas las operaciones se hubieran producido una
detrás de otra. Los bloqueos impiden que se produzcan los conflictos,
pero impiden también que se puedan ejecutar varias operaciones al
mismo tiempo desde distintas conexiones (disminuyen la
concurrencia).
La cantidad y fuerza y duración de los bloqueos está en función del
nivel de aislamiento de las transacciones. Cuanto más aislamiento,
más bloqueos, más consistencia, pero menos concurrencia. En SQL
Server hay varios niveles de aislamiento: READ UNCOMMITED,
READ COMMITED, READ COMMITED SNAPSHOT, REPEATABLE
READ, SERIALIZABLE y SNAPSHOT. Existen otros mecanismos
para controlar los conflictos de concurrencia, en vez de impedirlos a
priori, se detectan a positeriori, y cuando se detectan se deshace la
transacción. Esto se llama bloqueo optimista, no sé por qué se llama
bloqueo, ya que no se bloquea pero sí sé por qué se llama optimista:
porque se piensa que existe una baja probabilidad de que se produzca
un conflicto.