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