Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transacciones
Tatiana Aparicio
Concurrencia de
Transacciones
2 o más transacciones se están ejecutando al
mismo tiempo
Estado
inicial ¿Podría
ocurrir algún
problema?
Estado Estado
inicial Final
Estado
Final
Concurrencia de Transacciones
Ejercicio
1. Definir una transacción T1 para retirar 2000$ de la
cuenta nro 12 (versión explícita y simplificada)
2. Definir una transacción T2 para retirar 3000$ de la
cuenta nro 12 (versión explícita y simplificada)
3. Si se ejecutan T1 y T2 de manera aislada (una
después de la otra), ¿cuál sería el estado final de la
base de datos?
4. Si se ejecutan T1 y T2 de manera NO aislada ¿cuál
sería el estado final de la base de datos?
Ejercicio (Respuesta)
1. . - BEGIN TRANSACTION
- Select saldo into vsaldo from R(x)
cuenta where nro =12
- Si vsaldo>= 2000
- Update cuenta set W(x)
saldo=vsaldo-2000
where nro=12 COMMIT
- ELSE ROLLBACK
- COMMIT
- BEGIN TRANSACTION
2. . - Select saldo into vsaldo from R(x)
cuenta where nro =12
- Si vsaldo>= 3000
- Update cuenta set W(x)
saldo=vsaldo-3000
where nro=12 COMMIT
- ELSE ROLLBACK
- COMMIT
Ejercicio (Respuesta)
3. -. BEGIN TRANSACTION
- Select saldo into vsaldo R(x)
from cuenta
where nro =12
- Si vsaldo>= 2000
- Update cuenta W(x)
set saldo=vsaldo-2000
where nro=12
COMMIT
- ELSE ROLLBACK
- COMMIT
- BEGIN TRANSACTION
- Select saldo into vsaldo R(x)
from cuenta
where nro =12
- Si vsaldo>= 3000
- Update cuenta W(x)
set saldo=vsaldo-3000
where nro=12
COMMIT
- ELSE ROLLBACK
- COMMIT
Ejercicio (Respuesta)
4. -. BEGIN TRANSACTION
- Select saldo into vsaldo
from cuenta
where nro =12 R1(x)
- Si vsaldo>= 2000
- Update cuenta R2(x)
set saldo=vsaldo-2000
where nro=12 w1(x)
- ELSE ROLLBACK
- COMMIT
- BEGIN TRANSACTION
- Select saldo into vsaldo
from cuenta
where nro =12 W2(x)
- Si vsaldo>= 3000
- Update cuenta
set saldo=vsaldo-3000
where nro=12
- ELSE ROLLBACK
- COMMIT
Concurrencia
Cuando 2 o más transacciones tienen acceso a la
misma BD al mismo tiempo, pueden interferir
entre ellas => pueden producir resultados
incorrectos.
El procesador no puede atender a las 2 transacciones
al mismo tiempo (una operación cada vez) =>
reparte su tiempo de atención a las operaciones de
las transacciones concurrentes (obedeciendo a un
PLAN DE EJECUCIÓN).
Concurrencia
Plan de ejecución: Define el orden cronológico de la
ejecución de las operaciones R/W de las
transacciones que se ejecutan concurrentemente
El problema de
X=50 X=5 X=1 modificación
Y=60 Y=10 Y=2
perdida ocurre
cuando
X=50 X=1 X=5
Y=60 Y=2 Y=10
T1 determina el
valor de x
Tpo t1 t2 t3 t4