Transacciones Carlos A. Olarte ([email protected]) BDII Carlos A. Olarte ([email protected]) BDII Transacciones Outline 1 Transacciones 2 Ejecuciones Concurrentes 3 Secuencialidad en Cuanto a Conflictos 4 Secuencialidad en Cuanto a Vistas 5 Recuperabilidad 6 Transacciones en SQL Carlos A. Olarte ([email protected]) BDII Transacciones Transacción Definición Una Transacción es un conjunto de operaciones que forman una única unidad lógica de trabajo. Aunque se realicen varias operaciones (actualizaciones, consultas, eliminaciones, etc) desde el punto de vista del usuario la operación es única. Ejemplos: Transferencia de fondos, Registrar un pago, matricularse, etc. La transacción consiste en todas las operaciones que se ejecutan entre las instrucciones Inicio de Transacción y Fin de Transacción Carlos A. Olarte ([email protected]) BDII Transacciones Propiedades ACID Las transacciones deben de cumplir con las siguientes propiedades (ACID) para garantizar la integridad de los datos: Atomicidad: Todas las operaciones se realizan o ninguna Consistencia: Los invariantes de la BD se conservan antes y después de la ejecución de la transacción Aislamiento: No importa que se ejecuten transacciones concurrentemente, desde el punto de vista del usuario lucen secuenciales (unas no afectan la ejecución de las otras) Durabilidad: Los cambios comprometidos perduran en el tiempo Por que es importante garantizar estas propiedades? Quien garantiza su cumplimiento? Carlos A. Olarte ([email protected]) BDII Transacciones Estados de una Transacción Es posible retroceder una transacción comprometida? Carlos A. Olarte ([email protected]) BDII Transacciones Ejecuciones Concurrentes Por qué no permitir solo ejecuciones secuenciales?: Se hace mejor uso de los recursos de computo Aumento de la productividad (transacciones / u.tiempo) Reducción de los tiempos de respuesta Por qué se deben controlar las ejecuciones concurrentes? Quién se encarga de esta tarea? Carlos A. Olarte ([email protected]) BDII Transacciones Conceptos Planificación: Representan el orden cronológico en el que se ejecutan las instrucciones de diferentes transacciones concurrentes. Ej: Ti Leer(A) Tj Leer(B) Escribir(B) Escribir(C) Leer(C) Carlos A. Olarte ([email protected]) BDII Transacciones Planificación Secuencial Una planificación es secuencial si las instrucciones de cada transacción están juntas y solo inician cuando terminan las de la transacción anterior. Ej Ti Leer(A) Escribir(B) Leer(C) Tj Ti Leer(B) Escribir(C) Leer(A) Escribir(B) Leer(C) Tj Leer(B) Escribir(C) Cuantas posibles planificaciones secuenciales se pueden generar a partir de P? Todas las P. secuenciales que se obtienen mantienen la consistencia? Carlos A. Olarte ([email protected]) BDII Transacciones Secuencialidad en Cuanto Conflictos Se dice que dos instrucción Ii ∈ Ti e Ij ∈ Tj están en conflicto si están asociadas al mismo recurso y alguna de ellas es escribir Si una planificación P se puede transformar en P 0 por medio de cambios no conflictivos, se dice que P y P 0 son Equivalentes en Cuanto Conflictos Ej, son P y P 0 equivalente en C.C? P Ti Tj L(A) E(A) E(B) E(C) L(C) Carlos A. Olarte ([email protected]) BDII P0 Ti L(A) E(B) Tj E(A) E(C) L(C) Transacciones Secuencialidad en Cuanto Conflictos Se dice que la planificación P es Secuenciable en Cuanto Conflictos si existe una planificación secuencial P 0 tal que P y P 0 son equivalentes en cuanto conflictos Cuales de las siguientes Planificaciones son SECC? P1 Ti L(A) P2 Tj Ti L(A) E(A) L(B) E(B) L(A) Tj Ti E(A) E(B) E(A) L(B) Carlos A. Olarte ([email protected]) BDII Tk E(B) E(C) L(C) Transacciones P3 Tj Comprobación de la secuencialidad en Cuanto Conflictos Se puede verificar la secuencialidad en cuanto conflictos de una planificación por medio del siguiente algoritmo: Construir el grafo de precedencias (G = hV , Ai) de P, donde V lo conforman el conjunto de transacción y ai = hti , tj i ∈ A si existe un par de instrucciones conflictivas entre ti y tj . Si existe un ciclo en el grafo, P no es secuenciable en cuanto conflictos Si no hay ciclos, el orden de las transacciones lo determina el orden topológico del grafo. Carlos A. Olarte ([email protected]) BDII Transacciones Equivalencia en Cuanto Vistas La siguiente planificación es equivalente en cuanto conflictos? P1 Ti E(A) Tj E(A) E(A) En cuanto al resultado observable, aceptarı́a que P fuera equivalente a la planificación secuencial hTj , Ti i Carlos A. Olarte ([email protected]) BDII Transacciones Continuación Se dice que P es Equivalente en Cuanto a Vistas a P 0 si: 1 Para todo recurso Q si Ti lee el valor inicial de Q en P lo debe hacer en P 0 2 Si Ti lee el valor producido por Tj en P, también lo debe hacer en P 0 3 Si Ti es la última transacción en efectuar E (Q) para cualquier Q en P, en P 0 también la última escritura de Q la debe efectuar Ti Carlos A. Olarte ([email protected]) BDII Transacciones Secuencialidad en cuanto Vistas La planificación P es Secuenciable en Cuanto Vistas si existe una planificación secuencial P 0 tal que P y P 0 son equivalentes en cuanto a vistas Cuales de las siguientes planificaciones son equivalentes en cuanto a vistas? P 3 P1 Ti L(Q) Ti L(Q) P2 Tj Ti L(Q) E(Q) E(B) Carlos A. Olarte ([email protected]) BDII Tk L(M) L(B) E(Q) E(Q) E(Q) Tj Tj E(M) E(Q) E(M) L(Q) E(M) Transacciones Recuperabilidad Definición Una planificación es Recuperable si para todo par de transacciones Ti y Tj tal que Tj lee el valor producido por Ti , la operación de compromiso de Ti debe ser anterior al compromiso de Tj . Por ejemplo P no es recuperable P Ti L(Q) E(Q) Tj L(Q) COMMIT E(B) COMMIT Carlos A. Olarte ([email protected]) BDII Transacciones Planificaciones sin Cascada Se define Retroceso en Cascada cuando el fallo de un transacción provoca retrocesos en otras transacciones Definición P es una Planificación sin Cascada si para toda Ti , Tj tal que Tj lee el valor producido por Ti , la lectura de Tj es posterior al compromiso de Ti Por ejemplo, P es recuperable pero no es una PSC: P Ti E(A) E(B) COMMIT Tj Tk L(A) E(A) L(A) COMMIT COMMIT Carlos A. Olarte ([email protected]) BDII Transacciones Transacciones en SQL Las transacciones se comprometen mediante la sentencia COMMIT Las transacciones se retroceden mediante la sentencia ROLLBACK Carlos A. Olarte ([email protected]) BDII Transacciones