Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transacciones
Transacciones
Situación: A veces hay secuencias de instrucciones que son
una unidad única desde el punto de vista del usuario de
BD.
Ejemplo: Transferencia bancaria.
¿En el ejemplo anterior qué pasa si se inicia una
transferencia y se cae el sistema luego de sacar dinero de
una cuenta sin ponerlo en la cuenta de destino?
Transacciones
Planificación 1
Problemas al ejecutar
transacciones concurrentemente
La planificación concurrente de
la izquierda no preserva el valor
de la suma de A + B.
Asumimos que Inicialmente:
A = 400 y B = 300.
Inicialmente A + B = 700
Luego de ejecutar la
planificación:
A = 350 y B = 340
A + B = 690
Por lo tanto el sistema destruyó
10.
Aislamiento
Activa: la transacción
permanece en este estado
mientras se está
ejecutando.
Parcialmente comprome-
tida: después que la
última instrucción ha sido
ejecutada.
Falló: después de
descubrir que la ejecución
normal no puede
continuar.
Estados de una Transacción
Planificación 3
Ejemplos de Planificaciones
La siguiente planificación concurrente no preserva el
valor de la suma de A + B. (Ya lo probamos)
Planificación 4
Secuencialidad
El programador podría proponer una planificación que
aproveche lo más posible la concurrencia.
¿Cómo chequear si esta planificación es secuenciable?
Secuencialidad
El programador podría proponer una planificación que
aproveche lo más posible la concurrencia.
¿Cómo chequear si esta planificación es secuenciable?
Una idea es ir probando las distintas permutaciones de las
transacciones de la planificación
y para cada permutación ver si se cumple la equivalencia con la
planificación propuesta.
Secuencialidad
¿Qué les parece la idea anterior?
Secuencialidad
¿Qué les parece la idea anterior?
Esto es algo muy trabajoso y parece ser complicado. ¿Por
qué?
Puede haber muchas permutaciones de transacciones.
Además nos fijamos muchas veces en las operaciones distintas de
read y write.
Por ejemplo en planificación 4 para ver que no es secuenciable
hacemos eso.
Veremos cómo eliminar esta causa
Secuencialidad
read(A) de T2 .
2
y
Planificación A
T1 T2 T3 T4 T5
read(X)
read(Y)
read(Z)
read(V)
read(W)
read(W)
read(Y)
write(Y)
write(Z)
read(U)
read(Y)
write(Y)
read(Z)
write(Z)
read(U)
write(U)
Grafo de Precedencia de Planificación A
T1 T2
T4
T3
Chequeo de Secuencialidad
por Conflictos