2. Una colección de operaciones que forman
una única unidad lógica de trabajo.
Unidad de ejecución en un programa que
accede y posiblemente actualiza varios
elementos de datos.
Ejm: Transferencia Bancaria
3. Ejm: Transferencia Bancaria
Inicio Transacción
◦ Cuenta A = A – 10
◦ Cuenta B = B + 10
Fin Transacción
5. Atomicidad:
◦ Todo o nada.
◦ (Gestor de transacciones).
Consistencia:
◦ Ejecución aislada de la transacción conserva la
consistencia de la Bases de Datos.
◦ (programador)
6. Aislamiento:
◦ Ejecuten concurrente para cada par de
transacciones Ti y Tj, se ejecutarán en diferentes
tiempos.
◦ (componente de control de concurrencia)
Durabilidad:
◦ En una transacción exitosa los cambios realizados a la base
de datos permanecen, incluso si hay fallos en el sistema.
◦ (componente de gestión de recuperaciones)
7. Leer(X):
Transfiere el dato X de la base de datos a una
memoria intermedia local perteneciente a la
transacción que ejecuta la operación leer.
Escribir(X):
Transfiere el dato X de la memoria intermedia
local a la base de la transacción que ejecuta la
operación Escribir.
8. Transferencia bancaria de la cuenta A a la cuenta
B:
Ti: Consistencia:
Leer (A) A = 1000, B = 2000
A:=A – 50; A + B = 3000
Escribir (A)
Leer (B)
B:=B + 50; A=950, B=2050
Escribir (B) A + B = 3000
Durabilidad: Terminada la transferencia los
saldos se mantienen.
9. Ti: Atomicidad:
Leer (A) A = 1000, B = 2000
A:=A – 50; A + B = 3000
Escribir (A)
Leer (B)
B:=B + 50; A=950, B=2000
Escribir (B) A + B = 2950
11. Activa:
◦ Estado Inicial y durante su ejecución.
Parcialmente comprometida:
◦ Una vez ejecutada ultima instrucción.
Fallida:
◦ Error, no puede continuar.
Abortada:
◦ Retrocede y vuelve al estado original.
Comprometida:
◦ Transacción exitosa, cambios efectuados.
12.
13. Abortada:
◦ Reiniciar: Error HW, SW.
◦ Cancelar: Error lógico.
Escrituras externas observables.
◦ Solo cuando esta comprometida
Transacciones Compensadoras.
◦ Retiro de dinero en el cajero; restaurar el
saldo.
Transacciones de larga duración
14. El encargado de esto es el componente de
gestión de recuperaciones.
Asume que una transacción está activa en
cada momento y para esto hace copias
sombra de la base de datos.
Asume que la base de datos es un archivo
en disco direccionado por un puntero
llamado (puntero_bd).
15. Puntero_ Puntero_
BD BD
Copia anterior Copia anterior de la Nueva copia
de la base de base de datos de la base
datos (que será borrada) de datos
a) Antes de la Actualización b) Después de la Actualización
16. Ejecuciones concurrentes provocan conflictos
Más sencillo exigir que las transacciones se
ejecuten secuencialmente.
Razones para la concurrencia :
Productividad y utilización de recursos
mejoradas
◦ E/S y uso del CPU en paralelo.
Tiempo de espera reducido
17. Esquemas de control de concurrencia
Planificación: Orden de Ejecución de las
transacciones.
19. A=1000
temp=100
A=900
B=2000
B=2100
A=900
A=950
B=2100
B=2150
A + B = 950+2150
3000
20. A=1000
A=950
A=950
temp=95
A=855
B=2000
B=2050
B=2050
B=2145
A + B = 855+2145
3000
21. A=1000
A=950
A=1000
temp = 100
A=900
B=2000
A=900
A=950
B=2000
B=2050
B=2100
A + B = 950+2100
3050
22. Ejemplo de transacción
◦ Explicar Atomicidad y Durabilidad
◦ Reglas de consistencia
◦ Ejemplo de Error de Aislamiento
Estados de la transacción
◦ Explicar cuando esta en cada uno de los estados
◦ Ejemplo de Escrituras externas observables.
◦ Ejemplo de Transacción Compensadora
Planificación
◦ Ejemplo de planificación secuencial.
◦ Ejemplo de planificación concurrente equivalente.
◦ Ejemplo de planificación concurrente inconsistente.
23. N transacciones, n! planificaciones validas.
Mucho mas de n! planificaciones posibles.
No interesa todo tipo de operación, solo las
de lectura y escritura.
Secuencialidad en cuanto a conflictos
Secuencialidad en cuanto a vistas
24. Dado que tenemos la Planificación P, con
transacciones Ti y Tj.
Dos instrucciones Ii, Ij pertenecientes a Ti y Tj.
Si Ii e Ij se refieren a elementos de datos
diferentes entonces se pueden intercambiar.
Si Ii e Ij se refieren al mismo elemento de datos
entonces el orden de aparición se debe tener
en cuenta para la planificación.
25. Leer (Q), Leer (Q).
◦ No importa, leen el mismo valor
Leer (Q), Escribir(Q).
Escribir(Q), Leer (Q).
◦ Si importa
Escribir(Q), Escribir(Q).
No importa para Ti y Tj, pero si para la
siguiente lectura
Ii e Ij están en conflicto si alguna de ella es
escribir.
26.
27. P3 y P5 son equivalentes en cuanto a
conflictos.
29. P7 no es secuenciable en cuanto a conflictos.
Ya que no es equivalente a T3, T4 o a T4, T3.
30. A=1000 A=1000
A=950 A=950
B=2000 B=2000
B=1990 B=2050
B=1990 B=2050
B=2040 B=2040
A=950 A=950
A=960 A=960
P8 no es secuenciable en cuanto a conflictos.
P8 es equivalente a T1, T3.
31. Dadas dos planificaciones P y P’, son
secuenciables en cuanto a vistas si:
◦ Si Ti lee el valor inicial de Q en P, Ti también lee el
valor inicial de Q en P’.
◦ Si Tj escribe(Q) y Ti lee(Q) en P también Tj
escribe(Q) y Ti lee(Q) en P’.
◦ Si Ti escribe el valor final de Q en P, Ti también
escribe el valor final de Q en P’.
33. P1 SI es equivalente en cuanto a vistas a P3.
Una planificación P es secuenciable en cuanto a
vistas si es equivalente en cuanto a vistas a una
planificación secuencial.
34. Toda planificacion secuenciable en cuanto a
conflictos es secuenciable en cuanto a vistas,
pero no al inverso.
Si una planificacion en secuenciable en cuanto a
vistas y no en cuanto a conflicto tiene escrituras
a ciegas.
35. Atomicidad: Si hay fallo, retroceder
transacción.
Si Tj depende de Ti, Tj también retrocede.
Tj depende de Ti, si Tj lee lo que Ti escribe.
36. Recuperables
◦ Si Tj depende de Ti, Tj se compromete después de Ti.
Sin Casacada
◦ Para todo Ti y Tj, si Tj depende de Ti, Ti se
compromete antes de la lectura de Tj.
37. Esquemas de control de concurrencia
◦ Bloqueo BD.
Planificaciones secuenciales en cuanto a
conflictos o Vistas.
Planificaciones con o sin cascada.
Niveles de Aislamiento.
38. Planificaciones secuenciales en cuanto a
conflictos:
◦ Grafo de precedencia (Arista Ti Tj)
Ti escribe(Q) antes que Tj ejecute leer(Q)
Tj lee(Q) antes que Tj ejecute escribir(Q)
Ti escribe(Q) antes que Tj ejecute escribir(Q)
Si tiene ciclo, no es secuenciable en cuanto a
conflictos
41. Lectura sucia (dirty read):
lee datos no comprometidos modificados por
otra transacción.
Lectura No Repetible (nonrepeatable read):
lee datos dos veces y los resultados son
diferentes.
Lectura fantasma (phantom read):
Realiza una consulta dos veces y el conjunto
de filas devueltas es diferente.
42. Lectura Lectura no Lectura
sucia repetible Fantasma
Read SI SI SI
uncommitted
Read NO SI SI
committed
Repeatable read NO NO SI
Serializable NO NO NO
Read committed (read uncommited)
Serializable (repeatable read)
Repeatable read
43. BEGIN TRANSACTION transaction_mode [, ...]
SET SESSION CHARACTERISTICS AS
TRANSACTION transaction_mode [, ...]
transaction_mode: ISOLATION LEVEL {
SERIALIZABLE | REPEATABLE READ |READ
COMMITTED | READ UNCOMMITTED} READ
WRITE | READ ONLY