Está en la página 1de 54

Estado

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

Estados de una transacción:

Inicia T activa termina T Parcialmente


commited
commited Commit T

fallada rollback T terminada


Recuperación
Falla

Estado Estado
inicial Final

Durante la ejecución de una transacción el


sistema puede fallar => la base de datos queda
en un estado inconsistente (no alcanzó su
terminación planeada).
Una Transacción no alcanza su
terminación planeada porque
 Se interrumpe la conexión de red del cliente con
una instancia del motor de base de datos.
 La aplicación cliente falla
 El equipo cliente se bloquea o se reinicia
 Se interrumpe la conexión y la instancia del
motor de base de datos.
 El cliente cierra la aplicación
 Hay un corte de energía
Recuperación

rollback commit

Estado Estado
inicial Final

Es necesario recuperar la base de datos.


¿cómo?
Recuperación (Ejercicio)

rollback commit
Estado Estado
inicial Final

Inventar un algoritmo para recuperar la base de


datos ante la interrupción de una transacción
Técnicas de Recuperación

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)

Modificar la BD cada cierto tiempo:


 Grabar modificaciones en log y postergar
las escrituras en la BD hasta el checkpoint
 Cada vez que se hacen las modificaciones
en la BD crear un registro <checkpoint>
Técnica de Log
Modalidad 3
(Técnica de Checkpoints)
T5
T4
T3
T2
T1
tpo
Ya se escribió NO se escribió
en disco en disco
Estamos aquí
Se escribió en log
Técnica de Log
Modalidad 3
(Técnica de Checkpoints)
ARCHIVO
LOG

CP –
Registro log
Ya se escribió en disco

Registro Checkpoint CP+


NO se escribió en disco
Técnica de Log
Modalidad 3
(Técnica de Checkpoints - EJERCICIOS)

1.- ¿Cuántos registros chekpoint pueden


haber en un archivo log?
2.- En caso de que ocurriera una falla,
¿Cómo se utilizaría el archivo log para
recuperar la base de datos? (hacer un
algoritmo de recuperación)
Técnica de Log
Modalidad 3 (Técnica de Checkpoints)
Ante una falla pueden darse los siguientes casos:

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)

Recorriendo sólo el CP+ identifico


las transacciones a rehacer y a deshacer
d) continuacion
Recuperación
Técnica de Sombra de Página
BD está lógicamente dividida en páginas.
En un archivo se tienen punteros a las páginas
que conforman la base de datos
Recuperación
Técnica de Sombra de Página
Mantener dos tablas de páginas durante la
vida de una transacción:
1) Tabla actual: en RAM
Cambia cada vez que T escribe
2) Tabla sombra: en DISCO
No cambia durante la vida de la T
Recuperación
Técnica de Sombra de Página
1) Tabla actual: en RAM
Cambia cada vez que T escribe
Guarda el estado actual de la BD que
eventualmente será el estado final
Tabla sombra: en DISCO
No cambia durante la vida de la T
Guarda el estado inicial de la BD
Recuperación
Técnica de Sombra de Página
Actual Sombra

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

.....

T : W(x) ¿En qué página está x?


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

.....

T : R(a) ¿qué hacemos?


Buscamos a y leemos
Recuperación
Técnica de Sombra de Página
Actual Sombra
z
x

.....

T : W(z) ¿dónde está z?


Recuperación
Técnica de Sombra de Página
Actual Sombra
z
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
.....

T : W(u) ¿dónde está u?


¿Qué hacemos?
Recuperación
Técnica de Sombra de Página
Actual Sombra
z
xu

xu

z
.....

Como ya existe la copia , modificamos


u en la copia
Recuperación
Técnica de Sombra de Página
Actual Sombra
z
xu

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

Demasiada fragmentación del disco

También podría gustarte