Administración de transacciones, problemas, candados e interbloqueos

29
PROBLEMAS QUE SE PRESENTAN. Actualización perdida Dependencia no confirmada (lectura no confirmada) Análisis incoherente(lectura no repetible) Lecturas fantasma

Transcript of Administración de transacciones, problemas, candados e interbloqueos

Page 1: Administración de transacciones, problemas, candados e interbloqueos

PROBLEMAS QUE SE PRESENTAN.

Actualización perdidaDependencia no confirmada (lectura no confirmada)Análisis incoherente(lectura no repetible)Lecturas fantasma

Page 2: Administración de transacciones, problemas, candados e interbloqueos

ACTUALIZACIÓN PERDIDA

Una actualización se puede perder cuando una transacción sobrescribe los cambios de otra transacción.

Por ejemplo: dos usuarios pueden actualizar la misma información, pero sólo la última modificación queda reflejada en la base de datos.

Page 3: Administración de transacciones, problemas, candados e interbloqueos

Una dependencia no confirmada ocurre cuando una transacción lee los datos sin confirmar de otra transacción. La transacción puede hacer cambios según datos que no son correctos o que no existen.

DEPENDENCIA NO CONFIRMADA (LECTURA NO CONFIRMADA)

Page 4: Administración de transacciones, problemas, candados e interbloqueos

Un análisis incoherente ocurre cuando una transacción lee la misma fila varias veces y cuando, entre las dos (o más) lecturas, otra transacción modifica esa fila.

ANÁLISIS INCOHERENTE (LECTURA NO REPETIBLE)

Page 5: Administración de transacciones, problemas, candados e interbloqueos

Las lecturas fantasma pueden ocurrir cuando las transacciones no están aisladas unas de otras.

Por ejemplo: se podría hacer una actualización en todos los registros de una región al mismo tiempo que otra transacción inserta un nuevo registro de esa región. La próxima vez que la transacción lea los datos, aparecerá un registro adicional.

LECTURAS FANTASMA

Page 6: Administración de transacciones, problemas, candados e interbloqueos

ADMINISTRACIÓN DE TRANSACCIONES

BLOQUEOS

Los bloqueos impiden los conflictos de actualización. Los usuarios no pueden leer o modificar los datos que están en proceso de modificación por parte de otros usuarios.

Page 7: Administración de transacciones, problemas, candados e interbloqueos

BLOQUEOSEJEMPLO:

En un sistema de reservas de una línea aérea los bloqueos aseguran que sólo se asigne un asiento concreto a una persona.

Page 8: Administración de transacciones, problemas, candados e interbloqueos

III ADMINISTRACION DE TRANSACCIONES6. CANDADOS

Page 9: Administración de transacciones, problemas, candados e interbloqueos

COMPARTIDOS

BLOQUEOS BÁSICOS

EXCLUSIVOS

- LOS DATOS NO SE PUEDEN MODIFICAR- LIBERA EL REGISTRO,CUANDO SE LEE EL SIG.

- MODIFICACION DE DATOS (INSERT, UPDATE Y DELETE)

- SOLO UNA TRANSACCIÓN PUEDE CONSEGUIR UN BLOQUEO EXCLUSIVO SOBRE UN

RECURSO

Page 10: Administración de transacciones, problemas, candados e interbloqueos

BLOQUEOS PARA SITUACIONES ESPECIALES

BLOQUEOS DE INTENCIÓN• MINIMIZAR LOS CONFLICTOS DE BLOQUEO

OTRAS TRANSACCIONES NO PUEDAN ADQUIRIR BLOQUEOS, EN NIVELES MAS INCLUYENTES QUE

OTROS EXISTENTES.

Page 11: Administración de transacciones, problemas, candados e interbloqueos

BLOQUEOS PARA SITUACIONES ESPECIALES

BLOQUEOS DE ACTUALIZACIÓN

ANTES DE MODIFICAR, AUMENTA EL NIVEL DE BLOQUEO DE ACTUALIZACIÓN DE PÁGINA A

BLOQUEO DE PÁGINA EXCLUSIVO PARA IMPEDIR CONFLICTOS DE BLOQUEO.

Page 12: Administración de transacciones, problemas, candados e interbloqueos

BLOQUEOS PARA SITUACIONES ESPECIALESBLOQUEOS DE ESQUEMA

• ESTABILIDAD DEL ESQUEMA: ASEGURA

QUE NO SE ELIMINARÁ UN RECURSO.

• MODIFICACIÓN DEL ESQUEMA: ASEGURA

QUE OTRAS SESIONES NO HAGAN REFERENCIA

A UN RECURSO QUE ESTÁ SIENDO MODIFICADO.

Page 13: Administración de transacciones, problemas, candados e interbloqueos

BLOQUEOS PARA SITUACIONES ESPECIALESBLOQUEOS DE ACTUALIZACIÓN

MASIVA

PERMITEN PROCESOS DE COPIA MASIVA SIMULTANEOS EN LA MISMA TABLA, A LA VEZ QUE IMPIDEN QUE OTROS PROCESOS QUE NO HACEN COPIAS MASIVAS TENGAN ACCESO A

LA TABLA

TABLOCK

Page 14: Administración de transacciones, problemas, candados e interbloqueos

COMPATIBILIDAD

Page 15: Administración de transacciones, problemas, candados e interbloqueos

NIVEL DE AISLAMIENTO DE LAS TRANSACCIONES

Establecer niveles de aislamiento de transacción permite a los programadores aceptar un riesgo mayor de problemas de integridad a cambio de un mayor acceso simultáneo a los datos. Cuanto mayor sea el nivel de aislamiento, durante más tiempo se mantienen los bloqueos y más restrictivos son éstos.

Page 16: Administración de transacciones, problemas, candados e interbloqueos

NIVEL DE AISLAMIENTO DE LAS TRANSACCIONES

El nivel de aislamiento de la sesión se puede suplantar en instrucciones individuales mediante una especificación de bloqueo.

También se puede utilizar la instrucción DBCC USEROPTIONS para especificar el aislamiento de la transacción en una instrucción.

Page 17: Administración de transacciones, problemas, candados e interbloqueos
Page 18: Administración de transacciones, problemas, candados e interbloqueos
Page 19: Administración de transacciones, problemas, candados e interbloqueos

TIEMPO DE ESPERA PARA LOS BLOQUEOS

Con la opción SET LOCK_TIMEOUT, se puede establecer la cantidad máxima de tiempo que permite que una transacción espere la liberación de un recurso bloqueado.

Page 20: Administración de transacciones, problemas, candados e interbloqueos

OPCIONES DE BLOQUEO DE TABLA

Page 21: Administración de transacciones, problemas, candados e interbloqueos

Interbloqueos (Deadlocks)

Page 22: Administración de transacciones, problemas, candados e interbloqueos

El interbloqueo, es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.

Page 23: Administración de transacciones, problemas, candados e interbloqueos

Un interbloqueo se produce cuando dos o más tareas se bloquean entre sí permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas intentan bloquear

Page 24: Administración de transacciones, problemas, candados e interbloqueos

La transacción A tiene un bloqueo compartido de la fila 1.

La transacción B tiene un bloqueo compartido de la fila 2.

La transacción A ahora solicita un bloqueo exclusivo de la fila 2 y se bloquea hasta que la transacción B finalice y libere el bloqueo compartido que tiene de la fila 2.

La transacción B ahora solicita un bloqueo exclusivo de la fila 1 y se bloquea hasta que la transacción A finalice y libere el bloqueo compartido que tiene de la fila 1.

La transacción A no puede completarse hasta que se complete la transacción B, pero la transacción B está bloqueada por la transacción A.

Esta condición también se llama dependencia cíclica: la transacción A tiene una dependencia de la transacción B y la transacción B cierra el círculo teniendo una dependencia de la transacción A.

A B

11

22

Page 25: Administración de transacciones, problemas, candados e interbloqueos

A pesar de que los interbloqueos no se pueden evitar totalmente, si se siguen ciertas convenciones de codificación se

puede reducir su generación. La minimización de los interbloqueos

puede aumentar el rendimiento de las transacciones y reducir la sobrecarga

del sistema, debido a que:Se revierten menos transacciones, al

deshacer todo el trabajo que realiza la transacción.

Minimizar los interbloqueos

Page 26: Administración de transacciones, problemas, candados e interbloqueos

Utilice los recursos en la misma secuencia para todas transacciones. Por ejemplo, si es posible, haga referencia a las tablas en el mismo orden en todas las transacciones que hagan referencia a más de una tabla.

Abrevie las transacciones minimizando el número de pasos. Abrevie la duración de las transacciones evitando las consultas que afecten a muchas filas

Page 27: Administración de transacciones, problemas, candados e interbloqueos
Page 28: Administración de transacciones, problemas, candados e interbloqueos

Aunque no surja una situación de interbloqueo, las demás transacciones que obtienen acceso a los mismos recursos se bloquean mientras esperan a que la transacción finalice.

Evite escribir transacciones que incluyan la intervención del usuario. De esta forma, se degrada el rendimiento del sistema, ya que los bloqueos que mantiene la transacción sólo se liberan cuando se confirma o se revierte la transacción.

Page 29: Administración de transacciones, problemas, candados e interbloqueos

Un interbloqueo se produce cuando dos transacciones tienen bloqueos sobre objetos diferentes y cada transacción solicita un bloqueo sobre el objeto bloqueado por la otra transacción.

Las dos transacciones tienen que esperar a que la otra libere el bloqueo.