Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transacciones y Control de
Concurrencia
Agenda
Introduccin
Modelo de Fallos para Transacciones
Transacciones
Propiedades
Primitivas
Historia de Vida
Control de Concurrencia
Transacciones Anidadas
Planificacin de Transacciones
Bloqueos
Control Optimista
Marcas de Tiempo
2
Introduccin
Introduccin
Introduccin
Transacciones
Transacciones, ejemplo
Transaccin T:
a.extrae(100);
b.deposita(100);
c.extrae(200);
b.deposita(200);
Figura 2. Transaccin Bancaria de un Cliente
Transacciones
Propiedades ACID
11
Propiedades ACID
I: Aislamiento
(Isolation):
implica
seriabilidad
de
las
transacciones. Se les permite a las transacciones ejecutarse
concurrentemente si se obtiene el mismo efecto de una
ejecucin secuencial (serialmente equivalentes).
D: Durabilidad (durability)
12
13
Con xito
abreTransaccin
operacin
operacin
abreTransaccin
operacin
operacin
abreTransaccin
operacin
operacin
El servidor aborta
la transaccin
operacin
operacin
cierraTransaccin
abortaTransaccin
ERROR en la
operacin
reportada al
cliente
Suponemos:
Que cada operacin deposita, extrae, obtenBalance y
ponBalance, estn sincronizadas, o sea, sus efectos en la
variable de instancia es atmica.
15
TransaccinU:
balance = b.obtenBalance();
b.ponBalance(balance*1.1);
a.extrae(balance/10)
balance = b.obtenBalance();
b.ponBalance(balance*1.1);
c.extrae(balance/10)
balance = b.obtenBalance();200
balance = b.obtenBalance();200
b.ponBalance(balance*1.1); 220
b.ponBalance(balance*1.1); 220
a.extrae(balance/10)
80
c.extrae(balance/10)
280
18
TransactionW:
unaSucursal.totalSucursal()
100
total = a.obtenBalance()
100
300
EQUIVALENCIA SECUENCIAL
20
EQUIVALENCIA SECUENCIAL
El problema de las actualizaciones perdidas ocurre cuando dos transacciones
leen el valor antiguo de una variable y la utilizan para calcular el nuevo valor.
Esto no puede ocurrir si una transaccin se realiza antes que la otra, porque la
ltima transaccin leer el valor escrito por el anterior. Vase Figura 7.
.
Transaccin T:
balance = b.obtenBalance()
b.ponBalance(balance*1.1)
a.extrae(balance/10)
TransaccinU:
balance = b.obtenBalance()
b.ponBalance(balance*1.1)
c.extrae(balance/10)
80
c.extrae(balance/10)
Figura 7. Un solapamiento de T y U
secuencialmente equivalentes
278
21
EQUIVALENCIA SECUENCIAL
El problema de las recuperaciones inconsistentes ocurre cuando
una transaccin de recuperacin se realiza antes de una
transaccin de actualizacin. Vase Figura 8.
Transaction V:
a.extrae(100);
b.extrae(100)
Transaction W:
unaSucursal.totalSucursal()
a.extrae(100);
100
b.deposita(100)
300
total = a.obtenBalance()
100
total = total+b.obtenBalance()
400
total = total+c.obtenBalance()
...
Figura 8. Un solapamiento de V y W secuencialmente equivalentes
22
EQUIVALENCIA SECUENCIAL
Operaciones Conflictivas
Cuando decimos que un par de operaciones tiene conflictos, queremos decir que su
efecto combinado depende del orden en el que se ejecutan. Consideremos un par de
operaciones read(lee) y write(escribe), se dan las siguientes reglas de conflicto:
read
No
Causa
Porque el efecto de un par de operaciones de lectura no
depende del orden en el que son ejecutadas
read
write
Si
write
write
Si
24
VERSIONES PROVISIONALES
Todas las operaciones de actualizacin realizadas por una
transaccin se hacen sobre versiones provisionales de los
objetos.
Las versiones provisionales son transferidas a los objetos slo
cuando una transaccin se consuma, registrndose tambin en
memoria permanente.
Si una transaccin aborta, sus versiones provisionales se borran.
25
Transacciones Anidadas
(consumar
de
atomicidad
con
la
durabilidad.
Transacciones Anidadas
consumado
T2 :
abreSubTransaccion
T11 :
T12 :
consum. provis
abreSubTransaccion
consum. provis
consum. provis
abreSubTransaccion
T21 :
aborta
openSubTransaction
T211 :
consum. provis
consum. provis
Planificacin de Transacciones
1. Bloqueo Locking
Planificacin de Transacciones
1. Bloqueo Locking
Transaction T:
balance = b.obtenBalance()
b.ponBalance(bal*1.1)
a.extrae(bal/10)
Transaction U:
Operaciones
Operaciones
Bloqueos
balance = b.obtenBalance()
b.ponBalance(bal*1.1)
c.extrae(bal/10)
Bloqueos
abreTransaccion
bal = b.obtenBalance() bloquea B
abreTransaccion
b.ponBalance(bal*1.1)
a.extrae(bal/10)
bloquea A
cierraTransaccion
desbloquea
AyB
de B por T
bloquea B
b.ponBalance(bal*1.1)
c.extrae(bal/10)
bloquea C
cierraTransaccion
desbloquea B y C
29
Planificacin de Transacciones
1. Bloqueo Locking
del
sistema.
Planificacin de Transacciones
1. Bloqueo Locking
objeto
para
cada mquina.
31
Planificacin de Transacciones
1. Bloqueo Locking
Para un objeto
Lock requested
Bloqueo ya activado
read
write
Ninguno
OK
OK
Lectura
OK
Espera
Escritura
Espera
Espera
32
Planificacin de Transacciones
1. Bloqueo Locking
otorgamiento)
(bloqueo
indefinido)
abortos
en
Planificacin de Transacciones
1. Bloqueo Locking
haban
Planificacin de Transacciones
1. Bloqueo Locking
35
Planificacin de Transacciones
1. Bloqueo Locking
36
Planificacin de Transacciones
1. Bloqueo Locking
Desventajas:
El uso de bloqueos puede producir bloqueos indefinidos (deadlock interbloqueos). La prevencin de interbloqueos indefinidos reduce
la concurrencia en forma severa; por tanto, un interbloqueo debe
ser resuelto mediante el uso de timeouts o mediante algoritmos de
deteccin de interbloqueos. Ninguno de ellos es satisfactorio en
aplicaciones interactivas.
Planificacin de Transacciones
2. Control Optimista
Planificacin de Transacciones
2. Control Optimista
Planificacin de Transacciones
2. Control Optimista
Fase de Validacin:
Ante el close_transaction,
a cada transaccin se le asigna un
nmero (secuencial ascendente, i) que define su posicin en el
tiempo.
La validacin se basa en las siguientes reglas (i < j):
Ti
Tj
Regla
write
read
1.
Tj
read
write
2.
Tj
Ti
write
write
3.
Ti
Tj and
Ti
Planificacin de Transacciones
2. Control Optimista
Planificacin de Transacciones
2. Control Optimista
Trabajo
Validacin
Escritura
T1
Transacciones
anteriores commiteed
T2
T3
Transaccin
en validacin
recientes
transacciones
activas
Ti
activa
activa
42
Planificacin de Transacciones
2. Control Optimista
activas
no
Las
validadas.
43
Planificacin de Transacciones
2. Control Optimista
Si Ti no es vlida:
Aplazar la validacin (le ir mejor en el futuro?)
Abortar las activas y consumar Ti
Abortar Ti (qu pasa si alguna de las futuras Tj es abortada?
Trabajo
Validacin
Escritura
T1
Transacciones
anteriores commiteed
T2
T3
Transaccin
en validacin
recientes
transacciones
activas
Ti
activa
activa
44
Planificacin de Transacciones
2. Control Optimista
Desventajas:
Hay posibilidad se inanicin: una transaccin puede
abortar indefinidas
veces y no se contempla
mecanismo
45
Planificacin de Transacciones
3.
(marca de tiempo).
Se trabaja con versiones tentativas.
Cada item de dato tiene asociado:
Un timestamp de escritura (Twrite_commit), un timestamp d
e lectura (Tread) y un conjunto de versiones tentativas con
su propio timestamp.
46
Planificacin de Transacciones
3.
Regla Tj
Ti
1
write read
Condicin
Tj no debe escribir un dato ledo por Ti>Tj
(requiere que Tj >= max(Tread) del dato)
2
write
write Tj no debe escribir un dato escrito por
Ti>Tj (requiere que Tj > max
(Twrite_commit) del dato)
3
read
write
Tj no debe leer un dato escrito por Ti>Tj
(requiere que Tj > Twrite_commit
47
Planificacin de Transacciones
3.
48
Planificacin de Transacciones
3.
(a) T3 write
Before
T2
After
T2
T3
Before T1
T2
After
T2
T1
Clave:
Version Committed
T3
Time
Time
(c)
T3 write
Before
T1
Before
T4
Ti
Version Tentative
object produced
by transaction Ti
(with write timestamp Ti)
(d) T3 write
T4
Ti
Transaction
T1<T2<T3<T4
aborts
After
T1
T3
After
T4
Time
T4
Time
49
Planificacin de Transacciones
3.
50
Planificacin de Transacciones
3.
(a) T3 read
Key:
read
proceeds
T2
Seleccionado
T2
Time
T2
Seleccionado
Ti
Time
Version Committed
Ti
(d) T3 read
(c) T3 read
T1
read
proceeds
T4
Version Tentative
read waits
Seleccionado
T4
Time
Transaction
aborts
object produced
by transaction Ti
(with write timestamp Ti)
T1 < T2 < T3 < T4
Time
51
Bibliografa
52