Uploaded by Sistemas Bolivia

Recuperación

advertisement
-
BEGIN TRANSACTION
Select saldo into vsaldo
from cuenta
where nro =12
- Si vsaldo>= 2000
- Update cuenta
set saldo=vsaldo-2000
where nro=12
Estado
inicial
Transfiere 2000 de la cuenta 12
a la cuenta 23
Estado
Intermedio
Recuperación
3000
Falla
-
Update cuenta
set saldo=vsaldo+2000
where nro=23
ELSE ROLLBACK
COMMIT
4000
Estado
Final
-
3000
Recuperación: Transacción
Estado
inicial
Estado
Final
Estados de una transacción:
Inicia T
activa
termina T
Parcialmente
commited Commit T
fallada
rollback T
commited
terminada
Recuperación
Falla
Estado
inicial
Estado
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
inicial
Estado
Final
Es necesario recuperar la base de datos.
¿cómo?
Recuperación (Ejercicio)
rollback
commit
Estado
inicial
Estado
Final
Inventar un algoritmo para recuperar la base de
datos ante la interrupción de una transacción
Técnicas de Recuperación
Estado
inicial
Estado
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ó
en disco
NO se escribió
en disco
Estamos aquí
Se escribió en log
Técnica de Log
Modalidad 3
(Técnica de Checkpoints)
ARCHIVO
LOG
Registro log
CP –
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
(CP)
Falla
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 CPtal 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>  CPtal 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
Sombra
Actual
RAM
.....
DISCO
Recuperación
Técnica de Sombra de Página
Sombra
.....
ESTADO INICIAL
Recuperación
Técnica de Sombra de Página
Sombra
Actual
.....
T SE INICIA:
Recuperación
Técnica de Sombra de Página
Sombra
Actual
x
.....
T : W(x) ¿En qué página está x?
Recuperación
Técnica de Sombra de Página
Sombra
Actual
x
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
Sombra
Actual
x
a
x
.....
T : R(a) ¿qué hacemos?
Buscamos a y leemos
Recuperación
Técnica de Sombra de Página
Actual
z
x
Sombra
a
x
.....
T : W(z) ¿dónde está z?
Recuperación
Técnica de Sombra de Página
Actual
z
x
Sombra
a
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
z
xu
a
xu
z
.....
T : W(u) ¿dónde está u?
¿Qué hacemos?
Sombra
Recuperación
Técnica de Sombra de Página
Actual
z
xu
Sombra
a
xu
z
.....
Como ya existe la copia , modificamos
u en la copia
Recuperación
Técnica de Sombra de Página
Actual
z
xu
a
xu
z
.....
T : commit
¿Qué hacemos?
Sombra
Recuperación
Técnica de Sombra de Página
Sombra
z
xu
a
xu
z
.....
T : commit
Sombra=Actual
Recuperación
Técnica de Sombra de Página
Actual
z
xu
a
xu
z
.....
T : rollback
¿Qué hacemos?
Sombra
Recuperación
Técnica de Sombra de Página
z
xu
a
xu
z
.....
T : rollback
No hacemos nada
Sombra
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
Download