Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Recuperación
inicial
Transfiere 2000 de la cuenta 12
a la cuenta 23
- BEGIN TRANSACTION
Intermedio
- Select saldo into vsaldo
from cuenta
where nro =12 3000
Estado
- Si vsaldo>= 2000
- Update cuenta
set saldo=vsaldo-2000
where nro=12
Falla
- Update cuenta
4000
set saldo=vsaldo+2000
Estado
where nro=23 3000
Final
- ELSE ROLLBACK
- COMMIT
Recuperación: Transacción
Estado Estado
inicial Final
Estado Estado
inicial Final
rollback commit
Estado Estado
inicial Final
rollback commit
Estado Estado
inicial Final
Estado Estado
inicial Final
• Técnica de Log
• Técnica de Checkpoints
• Técnica de Sombra de Página
Técnica de Log
Mantener archivo de registros log para
poder deshacer modificaciones.
2 tipos de registros log:
1.- <Transacción, item, old, new>
2.- <Transacción, evento significativo>
evento significativo= start/commit
¿En qué tipo de almacenamiento debería estar
este archivo log?
Técnica de Log
Cuando una transacción Ti se inicia
=> ?
Cuando una transacción Ti realiza R(x)
=> ?
Cuando una transacción Ti realiza W(x)
?
Cuando una transacción Ti termina (está
parcialmente commited)
=> ?
Técnica de Log
Cuando una transacción Ti se inicia
=> Creo el registro <Ti,start>
Cuando una transacción Ti realiza R(x)
=> No hago nada
Cuando una transacción Ti realiza W(x)
=> Creo el registro <Ti, x, old, new>
Cuando una transacción Ti termina (está
parcialmente commited)
=> Creo el registro <Ti,commit>
Técnica de Log
Modalidad 1
Modificar la BD en diferido:
Grabar toda modificación en log pero postergar las
escrituras en la BD hasta que la transacción esté
parcialmente commited (haya terminado)
Cuando Ti inicia, escribir en log <Ti,start>
Cuando Ti W(x), escrbir en log <Ti,x,old,new> (NO
modificar LA BD)
Cuando Ti termina, escribir en log <Ti, pre-commit> e
iniciar actualización de modificaciones en la BD.
Cuando el DBMS termina de hacer las modificaciones en
la BD, escribir en log <Ti,commit>.
Técnica de Log
Modalidad 1: Recuperación
Ante una falla, buscar en el archivo LOG:
Rehacer: item=new
<Ti,pre-commit> LOG
<Ti, commit> LOG
Deshacer: No es necesario porque no se
escribió nada en la BD
Técnica de Log: Modalidad 1
Algoritmo modalidad 1: modif. diferido
Técnica de Log
Modalidad 2
Modificar la BD de inmediato:
Grabar las modificaciones en el archivo log y
en la BD mientras la transacción está activa.
Cuando Ti inicia, escribir en log <Ti,start>
Cuanto Ti W(x), se hace el cambio en la BD
y escribir en log <Ti,x,old,new>
Cuando Ti termina, escribir en log
<Ti,commit>
Técnica de Log
Modalidad 2: Recuperación
Ante una falla buscar en el archivo LOG:
Rehacer: nada
Deshacer: item=old
<Ti,start> LOG
<Ti,commit> LOG
Algoritmo modalidad 2: modif. inmediata
Técnica de Log
Modalidad 3
(Técnica de Checkpoints)
CP –
Registro log
Ya se escribió en disco
T5
T4
T3
T2
T1
TPO
Chekpoint Falla
(CP)
Técnica de Log
Modalidad 3 (Técnica de Chekpoints)
Ante una falla pueden darse los siguientes casos:
Transacciones que terminan antes del CP (T5)
Transacciones que terminan después del CP (T4)
Transacciones que empezaron y terminaron después del
CP (T2)
Transacciones que empezaron antes del CP pero no
terminaron (T3)
Transacciones que empezaron después del CP pero no
terminaron (T1)
Técnica de Log Modalidad 3
(Técnica de Chekpoints)
Ante una falla buscar en el archivo LOG:
Rehacer:
Para cada registro <Ti,item,old,new> de CP+
tal que <Ti,commit> CP+
hacer: item=new
Deshacer:
Para cada registro <Ti,item,old,new> de CP-
tal que <Ti,start> CP- y <Ti,commit> log
hacer: item=old
Técnica de Log Modalidad 3
(Técnica de Chekpoints)
Ante una falla buscar en el archivo LOG:
Rehacer:
Para cada registro <Ti,item,old,new> CP+
tal que <Ti,commit> CP+ (casos 4,2)
do item=new (en la bd)
Deshacer:
Para cada registro <Ti,item,old,new> CP-
tal que <Ti,start> CP-
<Ti,commit> LOG (caso 3)
do item=old (en la bd)
Ejercicios
Como se modificaria el algoritmo anterior si
consideramos que hay 2 checkpoints en el archivo
log?
Como se modificaria el algoritmo anterior si
consideramos que hay 3 checkpoints en el archivo
log?
Como se modificaria el algoritmo antrior si
consideramos que hay n checkpoints en el archivo
log?
Respuesta
El algoritmo sigue siendo el mismo, es por
eso que solo consideramos el ultimo
checkpoint.
Suponiendo que hubo un corte de
luz y se tiene el sgte archivo log.
Indicar cual es el estado de la BD:
a) antes de que el DBMS
aplique recuperación
b) después de que el DBMS
aplicó recuperación
c) Hacer un algoritmo de
recuperación
d) Hacer un algoritmo de
recuperación suponiendo
que en el chekpoint se
guardan las transacciones
activas
Suponiendo que hubo un corte de luz y que se tiene el
sgte archivo log. Indicar cual es el estado de la BD:
a) a=10 b=20 c=10 d=5
e=9 f=1 g=1 h=9 i=10
j=8
b) Rehacer: T3,T2 (solo las
operaciones que están en
CP+)
Deshacer: T5 (solo las
operaciones que están en
CP-)
a=10 b=20 c=10 d=20
e=10 f=2 g=1 h=3 i=7
j=8
c)
c) continuacion
d)
RAM
.....
DISCO
Recuperación
Técnica de Sombra de Página
Sombra
.....
ESTADO INICIAL
Recuperación
Técnica de Sombra de Página
Actual Sombra
.....
T SE INICIA:
Recuperación
Técnica de Sombra de Página
Actual Sombra
x
.....
.....
•Se crea una copia de la página de x
•Se modifica la copia
•Se actualiza la tabla Actual
Recuperación
Técnica de Sombra de Página
Actual Sombra
x
.....
.....
z
.....
•Se crea una copia de la página de z
•Se modifica la copia
•Se actualiza la tabla Actual
Recuperación
Técnica de Sombra de Página
Actual Sombra
z
xu
xu
z
.....
xu
z
.....
xu
z
.....
T : commit
¿Qué hacemos?
Recuperación
Técnica de Sombra de Página
Sombra z
xu
xu
z
.....
T : commit
Sombra=Actual
Recuperación
Técnica de Sombra de Página
Actual Sombra
z
xu
xu
z
.....
T : rollback
¿Qué hacemos?
Recuperación
Técnica de Sombra de Página
Sombra
z
xu
xu
z
.....
T : rollback
No hacemos nada
Ventajas
Técnica Sombra de Página
• La operación rehacer es simple
• La operación deshacer no es necesaria
Desventajas
Técnica Sombra de Página