Transacciones

Anuncio
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
Descargar