BD2Tema5 - Aula Virtual

Download Report

Transcript BD2Tema5 - Aula Virtual

Técnicas de
recuperación de
Bases de Datos
BD II: Tema 5
Universitat de València
profesores Esther de Ves y Vicente Cerverón
Índice
1.
2.
3.
4.
5.
Introducción.
Conceptos básicos.
Estructuras de datos y reglas básicas.
Procedimientos de recuperación.
Principales algoritmos de recuperación.
1. Actualización inmediata
2. Actualización diferida
3. Paginación en la sombra
4. Algoritmo de recuperación ARIES
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
2
1. Introducción

Definición de Recuperación de una BD:
restablecimiento de un estado correcto de la BD (consistente)
después que un fallo del sistema haya ocasionado que el
estado actual sea inconsistente.

Principios en los que se fundamenta:
redundancia física de los datos.
(disco-memoria, incluso disco-disco y redundancia múltiple)

¿Quién se encarga de la recuperación?
La recuperación la gestiona el módulo gestor de recuperación
del SGBD.
Todas las ideas de recuperación son independientes del modelo de BD
utilizado; si bien asumiremos que el modelo es relacional.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
3
Tipos de fallos
Durante la ejecución de las transacciones, una BD puede
sufrir diferentes fallos:
 Fallos de transacción:



Errores lógicos: una transacción no puede completarse por
algún error interno a la misma.
Errores del sistema: una transacción es abortada por el SGBD
(p.e. para asegurar la consistencia o evitar el bloqueo mortal).
Fallos catastróficos: que afectan al conjunto


Caída del sistema: la falta de alimentación u otro problema
hardware (excepto de discos) detiene el funcionamiento normal y
produce la pérdida de la información en memoria volátil.
Fallo del disco: se produce una destrucción total o parcial de los
datos almacenados en un disco.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
4
Funcionamiento del módulo de recuperación


Los algoritmos de recuperación son técnicas para
asegurar la consistencia de la BD y la atomicidad de
las transacciones incluso en presencia de fallos.
Para ello, los algoritmos de recuperación tienen dos
procedimientos de actuación:
1. acciones que se realizan durante el
funcionamiento normal para disponer de la
información necesaria en caso de tener que
recuperarse de un fallo;
2. acciones que se realizan para recuperar la base de
datos después de producirse un fallo.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
5
2. Conceptos básicos

El sistema de recuperación se ocupa de que se cumplan dos
de las propiedades ACID de las transacciones:
Atomicidad:
se ejecutan todas las
acciones o ninguna


Durabilidad:
cuando una T se completa
los cambios realizados deben
permanecer en el sistema
Almacenamiento
estable
La atomicidad implica sólo dos posibilidades para las
transacciones:
 abortar (ninguno de sus acciones tiene efecto, y debe reiniciarse).
 confirmar (sus acciones tienen efecto permanente).
Transacción activa: si ha empezado pero no ha alcanzado un
estado final (aborto o confirmación).
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
6
3. Estructuras de datos para la recuperación

El sistema de recuperación se apoya en una serie de
elementos para realizar su función

Realización de copias de seguridad.
 completas

o incrementales
Almacenamiento
estable
Almacenamiento de una traza
 que
guarda las acciones (actualizaciones) realizadas
 (también llamada diario o log )
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
7
Estructuras de datos: copia de seguridad

Copia de seguridad:


es una copia total de la BD realizada en un momento en que
la BD está en un estado consistente.
o es una copia de seguridad incremental, formada sólo por las
modificaciones realizadas desde la última copia de seguridad
incremental.

Se utiliza tras un fallo del medio (fallo catastrófico).

Se puede realizar con la BD parada o en
funcionamiento.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
8
Estructuras de datos: traza




La traza (o diario, o log ) guarda información sobre las
actualizaciones realizadas en la BD (información necesaria
para realizar la recuperación en caso de fallo).
Tiene 4 (o 5) tipos de entradas (registros de la traza):
[Comenzar_Trans, T]
[T, g, BFIM, AFIM]
[Confirmar, T]
[Abortar, T]
BFIM: BeFore IMage
para deshacer
AFIM: AFter IMage
para rehacer
Si se evita la restauración en cascada (lo habitual, ya que se
suele usar bloque en dos fases estricto), no es necesario
registrar traza de las lecturas, excepto para auditoría.
Se usa la escritura anticipada de la traza: la traza de las
acciones se guardan en el disco antes que sus efectos.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
9
Estructuras de datos: traza

La traza es un elemento fundamental para la
recuperación, por lo que suele duplicarse o
triplicarse en varios discos para evitar su perdida.

Ejemplo de traza para una planificación P1:
Valores previos: A=2, B=2
P1: T1: lee A, A=A+2,esc(A),lee(B),B=B-1,esc(B),commit
[T1 init][T1,A,2,4][T1,B,2,1][T1 commit] ([pto control])
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
10
Estructuras de datos: traza



Puntos de control (o de sincronismo):
periódicamente se escribe en la traza un registro especial
llamado punto de sincronismo, indicando que en ese
momento el sistema escribe en el disco todos los buffers del
SGBD que han sido modificados en la base de datos por las
transacciones en curso (y que temporalmente estaban en memoria).
El SGBD debe decidir el intervalo entre puntos de
sincronismo (medido en tiempo o número de transacciones).
Realizar un punto de control implica:
Suspensión temporal de la ejecución de transacciones.
Escritura forzada de todos los buffers modificados a disco.
Escribir un registro especial en la traza [punto de control]
Reactivar las transacciones en ejecución.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
11
Reglas básicas de gestión de buffers



En general (por velocidad) los sistemas traen los datos a
memoria principal y realizan las actualizaciones en
memoria (no en disco); para ello existe un conjunto de
buffers en la memoria principal, llamado caché del SGBD.
La función de la gestión de los buffers es del sistema
operativo, pero dada su incidencia en el funcionamiento
de la BD los SGBD participan en la gestión de buffers con
llamadas de bajo nivel al SO.
En la caché del SGBD hay



bloques de datos,
bloques de índices,
bloques de la traza.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
12
Reglas básicas de gestión de buffers

Cuando el SGBD necesita un determinado bloque de
datos:





primero revisa la caché del SGBD para ver si está en ella;
en caso contrario, el elemento se localiza en la BD y se copian
las paginas de disco apropiadas a la caché;
si la caché está llena se hace necesario desalojar una página que
se pueda desalojar, “evacuándola” (a disco) si ha sido modificada
(en el lugar o en la sombra).
los bits de reserva y de página sucia indican si la página está
preparada para ser llevada a disco y si ha sido modificada.
Páginas sucias: páginas actualizadas que no han sido
todavía escritas en disco.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
13
Reglas básicas de gestión de buffers


Para decidir cuando una página sucia puede/debe ser escrita en
disco se puede seguir:
 estrategia no-robar: una página sucia no puede ser escrita ni
desalojada antes de que se confirme la transacción que la
actualizó.
 estrategia robar: una página sucia puede ser escrita y
desalojada cuando sea necesario independientemente de que la
transacción haya llegado a la confirmación.
 estrategia forzar: toda página sucia se escribe a disco cuando se
confirma la transacción que la actualizó (pequeño sobrecoste de escr.).
 estrategia no-forzar: no es necesario forzar la escritura cuando
se confirma, sólo cuando sea necesario por otras causas.
La mayoría de los SGBDs emplean robar/no-forzar para reducir
las necesidades de memoria y agilizar el funcionamiento sin fallos.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
14
Reglas básicas de gestión de buffers

Para garantizar la atomicidad de las transacciones:
 Regla de traza por adelantado: la traza que
contiene información de una actualización debe
escribirse en el disco antes de escribir a disco
dicho objeto actualizado de la BD.
Evita pérdidas de
imagen anterior BFIM
Se asegura la Atomicidad.

BD2 - Tema 5
Regla de confirmación: todos los registros de la
traza correspondientes a una transacción deben
escribirse en el disco antes de que se confirme
dicha transacción.
Evita pérdidas de
imagen posterior AFIM
Se asegura la Durabilidad.
Universitat de València (Esther de Ves, Vicente Cerverón)
15
4. Procedimientos de recuperación




Procedimiento de recuperación: operaciones necesarias
para arrancar la BD tras finalizar de modo normal o fallo.
Utiliza las estructuras de datos estudiadas: traza o copia de
seguridad, dependiendo del tipo de fallo.
El objetivo es alcanzar un estado consistente de la BD
minimizando el trabajo perdido.
¿Cómo?
Deshacer actualización:
escribir en BD la
imagen anterior desde
la traza
BD2 - Tema 5
Rehacer actualización:
escribir en BD la
imagen posterior desde
la traza
Universitat de València (Esther de Ves, Vicente Cerverón)
16
Procedimientos de recuperación

Tipos de procedimientos de recuperación:
 Recuperación normal: tras una parada de la BD sin fallos,
si el punto de control es el último registro de la traza.
 Recuperación en caliente: tras un fallo del sistema, si el
último registro de la traza no es un punto de control.
 Busca el último punto de sincronismo en la traza.
 Localiza las transacciones confirmadas y las
transacciones abortadas (o interrumpidas).
 Deshace o rehace transacciones según las diferentes
técnicas.
 Recuperación en frío: se usa tras un fallo del medio que
no haya afectado a la traza. Se toma una imagen
consistente a partir de una copia de seguridad y se
procesa la traza desde el punto de sincronismo asociado a
la copia de seguridad.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
17
Algoritmos de recuperación




Conceptualmente, podemos distinguir dos técnicas
principales para recuperarse frente a fallos no
catastróficos:
 Actualización diferida
 Actualización inmediata
Las técnicas de actualización diferida no actualizan
la BD hasta llegar al punto de confirmación.
En las técnicas de actualización inmediata las
operaciones de una transacción modifican la BD
antes de que la transacción confirme.
Estudiaremos cuatro algoritmos que se basan en
combinar acciones de las técnicas anteriores.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
18
5. Algoritmos de recuperación

Todos estos algoritmos se describen según realizan las siguientes
acciones:








begin(t): introduce la transacción t en el gestor de transacciones.
leer(t,p,b): la transacción t lee la página p en el búfer b.
esc(t,b,p): la transacción t escribe el búfer b en la página p.
confirma(t): se confirma la transacción t.
aborta(t): se aborta la transacción t.
rearranca(): realiza la recuperación tras un fallo del sistema.
Estos algoritmos mantienen tres listas de transacciones:
 tr.activas (La), tr.abortadas (Lb), tr.confirmadas (Lc).
En todos los algoritmos la acción begin(t) es idéntica:
void begin( transac t)
{
inserta_en_lista(La,t);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
19
Algoritmo no deshacer/rehacer





Con esta técnica, basada en la actualización
diferida, nunca es necesario deshacer una
transacción después de un fallo del sistema, porque
no han llegado a tener efecto.
Por ello, no es necesario guardar las imágenes
anteriores en la traza.
La escritura en disco de las páginas actualizadas se
difiere hasta llegar al punto de confirmación de la
transacción.
Abortar transacciones es muy barato.
Sólo es práctico para transacciones cortas y que
actualicen poco.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
20
Algoritmo no deshacer/rehacer





Si se produce un fallo, las transacciones deben rehacerse.
En esta técnica no es necesario guardar el valor anterior
(BFIM), ya que nunca se deshace.
Siempre (en todas las técnicas) hay que escribir la traza en
disco antes de las propias actualizaciones.
Durante el proceso de recuperación después de una caída
una transacción debe rehacerse si y sólo si la traza contiene
ambas marcas de inicio y de confirmación de dicha
transacción.
En todas las técnicas las operaciones deben ser
idempotentes, porque puede fallar durante la recuperación.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
21
Algoritmo no deshacer/rehacer

Si la traza en tres instantes de tiempo al fallar es:
la recuperación en cada caso es como sigue
 Caso (a): no se debe rehacer ninguna transacción
 Caso (b): se debe rehacer T0 (y se ignoran los registros de T1)
 Caso (c): se debe rehacer T0 y T1
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
22
Algoritmo no deshacer/rehacer
Los algoritmos para las diferentes funciones con esta
técnica son:
void lee( transac t, pagina p, buffer b)
{
if (esta_actualizada_por(p,t) )
lee_img_post_en_buffer(p,b);
else
lee_pagina_en_buffer(p,b);
}
void esc( transac t,pagina p, buffer b)
{
esc_img_post_buffer_traza(p);
}
La gestión de buffers se produce según lo indicado en el apartado
correspondiente, trayendo de disco a caché cuando se necesita, sin
necesidad de indicarlo explícitamente en los algoritmos.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
23
Algoritmo no deshacer/rehacer
void rearranque()
{
transac t;
for (t = La ; t!= NULL; t = t->sig)
if( esta_en_lista(Lc,t)
confirma(t); //donde rehace
else aborta(t); //pero no necesita deshacer
}
Aborta y
confirma
void confirma( transac t)
{ pagina p; //recorre la traza hacia delante
for (p=pagina_actualizada(t); p!=NULL; p=pagina_sig(t,p))
escribe_post_imag_traza_en_disco(p); //rehace
inserta_en_lista(Lc,t);
elimina_de_lista(La,t);
}
void aborta( transac t)
{ pagina p;
buffer b;
inserta_en_lista(Lb,t);
elimina_de_lista(La_t);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
24
Algoritmo no deshacer/rehacer
Guarda imagen
posterior
Ejemplo:
[T1 init][T1,A,4][T1 commit][T2 init][T2,B,6][T2 commit]!FALLO!
init
lee B
B=B+3
esc B
commit
T2
A=2
B=3
4
6
FALLO
T1
init
BD2 - Tema 5
lee A
A=A+2 esc A
commit
Universitat de València (Esther de Ves, Vicente Cerverón)
25
Algoritmo deshacer/no rehacer




Con esta técnica, basada en la actualización
inmediata, nunca es necesario rehacer una
transacción después de un fallo del sistema.
Por ello, no es necesario guardar las imágenes
posteriores en la traza.
Las páginas actualizadas se escriben en disco cada
vez que se actualizan elementos, sin esperar a la
confirmación de la transacción.
Abortar transacciones puede ser caro (hay que
deshacer las actualizaciones ya escritas en disco).
En la práctica no resulta lo más eficiente.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
26
Algoritmo deshacer/no rehacer
Los algoritmos para las diferentes funciones con esta
técnica son:
void lee( transac t,pagina p, buffer b)
{
lee_pagina_en_buffer(p,b);
}
void esc( transac t,pagina p, buffer b)
{
inserta_imag_ant_buffer_traza(p);
escribe_buffer_en_pagina(p,b);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
27
Algoritmo deshacer/no rehacer
void rearranque()
{
transac t;
for (t = La ; t!= NULL; t = t->sig)
aborta(t); //donde deshace
Sólo aborta
transaccione
s
}
void confirma( transac t)
{ pagina p;
for (p=pagina_actualizada(t); p!=NULL; p=pagina_sig(t,p))
escribe_en_disco(p);
inserta_en_lista(Lc,t);
elimina_de_lista(La,t);
}
void aborta( transac t)
{ pagina p;
buffer b;
inserta_en_lista(Lb,t);
for(p=pagina_actualizada(t); p!=NULL; P=pagina_sig(t,p))
escribe_en disco_imagen_ant_de_p_desde_traza(); //deshace
elimina_de_lista(La,t);
}
28
Universitat de València (Esther de Ves, Vicente Cerverón)
BD2 - Tema 5
Algoritmo deshacer/no rehacer
Ejemplo:
Guarda imagen
anterior
[T1 init][T1,A,2][T1 commit][T2 init][T2,B,3]!FALLO!
init
lee B
B=B+3
esc B
T2
A=2
B=3
4
6
FALLO
T1
init
BD2 - Tema 5
lee A
A=A+2
esc A commit
Universitat de València (Esther de Ves, Vicente Cerverón)
29
Algoritmo deshacer/rehacer






Esta técnica, basada en la actualización inmediata,
combina la habilidad de rehacer con la de deshacer.
Las páginas sucias se vuelcan a disco en cualquier
momento que sea necesario, aunque correspondan a
transacciones no confirmadas (se ocupa el gestor de buffers).
Se optimiza el funcionamiento normal
(sin abortos ni fallos).
El procedimiento de abortar es más costoso.
El procedimiento de rearranque más costoso.
Es el más comúnmente empleado por los SGBDs.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
30
Algoritmo deshacer/rehacer


Es imprescindible que los registros de la traza se
escriban a disco antes que los datos actualizados.
Procedimientos de recuperación:




Con las transacciones que en la traza tengan registrado el
inicio pero no la confirmación, se Deshace la transacción,
yendo hacia atrás en la traza desde el último registro de la
transacción, restaurando las BFIM.
Con las transacciones que tengan registrados en la traza el
inicio y la confirmación, se Rehace la transacción, yendo
hacia delante en la traza, desde el primer registro de la
transacción, estableciendo las AFIM.
Las operaciones deben ser idempotentes.
Se realizan primero las operaciones de Deshacer
y luego las de Rehacer
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
31
Algoritmo deshacer/rehacer

Si la traza en tres instantes de tiempo al fallar es:
la recuperación en cada caso es como sigue
 Caso (a): se deshace T0, restaurando A=1000 y B=2000
 Caso (b): se deshace T1 y se rehace T0, restaurando C=700 y
estableciendo A=950 y B=2050
 Caso (c): se rehace T0 y T1, poniendo A=950, B=2050, C=600
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
32
Algoritmo deshacer/rehacer
Uso de los Puntos de control (checkpoints)


Los puntos de control, tanto en deshacer/rehacer
como en los demás algoritmos, evitan tener que
recorrer toda la traza para la recuperación, lo que
resultaría muy costoso y realizaría acciones
innecesarias.
Cuando se realiza (y registra) un punto de control, se
escriben toda la información a disco y se guarda la
información de las transacciones activas en ese
momento. <checkpoint La>
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
33
Algoritmo deshacer/rehacer
Uso de los Puntos de control (checkpoints)

Cuando el sistema se recupera de una caída
 se inicializan undo-list y redo-list vacías,
 se va recorriendo la traza hacia atrás hasta un punto de control,
 si se encuentra <Ti commit> se incluye Ti en la redo-list,
 si se encuentra <Tj start> y Tj no está en la redo-list se incluye Tj
en la undo-list,
 al llegar a un <checkpoint La>, si se encuentra Tk en La y Tk no
está en la redo-list se incluye en la undo-list,
 se sigue la traza hacia atrás hasta encontrar todos los <Tu start>
de las Tu que estén la La, deshaciendo los pasos de las Tu,
 se avanza en la traza hasta el punto de control más reciente,
 se sigue avanzando en la traza rehaciendo todas las operaciones
registradas correspondientes a las Ti en la redo-list.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
34
Algoritmo deshacer/rehacer
Uso de los Puntos de control (checkpoints)

Ejercicio: deshacer/rehacer con la siguiente traza:
<T0 start>
<T0, A, 0, 10>
<T0 commit>
<T1 start>
/* Scan at step 1 comes up to here */
<T1, B, 0, 10>
<T2 start>
<T2, C, 0, 10>
<T2, C, 10, 20>
<checkpoint {T1, T2}>
<T3 start>
<T3, A, 10, 20>
<T3, D, 0, 10>
<T3 commit>
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
35
Algoritmo deshacer/rehacer
Los algoritmos para las diferentes funciones con esta
técnica son:
void lee( transac t,pagina p, buffer b)
{
if ( esta_actualizada_por(p,t) )
lee_img_post_en_buffer(p,b);
else
lee_pagina_en_buffer(p,b);
}
void esc( transac t,pagina p, buffer b)
{
inserta_imag_ant_buffer_traza(p);
inserta_imag_post_buffer_traza(p);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
36
Algoritmo deshacer-rehacer
void rearranque()
{
transac t;
for (t = La ; t!= NULL; t = t->sig)
Aborta y
if( esta_en_lista(Lc,t)
confirma(t);
confirma
else aborta(t);
}
void confirma( transac t)
{ pagina p;
inserta_en_lista(Lc,t);
for (p=pagina_actualizada(t); p!=NULL; p=pagina_sig(t,p))
if (esta_sucia(p))
escribe_post_imag_traza_en_disco(p); //rehace
elimina_de_lista(La,t);
}
void aborta( transac t)
{ pagina p;
bufer b;
inserta_en_lista(Lb,t);
for (p=pagina_actualizada(t); p!=NULL; p=pagina_sig(t,p))
lee_en_buffer_img_ant_de_p_desde_traza(p,b); //deshace
elimina_de_lista(La_t);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
37
Algoritmo deshacer/rehacer
Guarda imagen
posterior y anterior
Ejemplo:
[T1 init][T1,A,2,4][T1 commit][T2 init][T2,B,3,6][T2 commit]!FALLO!
init
lee B
B=B+3
esc B
commit
T2
A=2
B=3
4
6
FALLO
T1
init
BD2 - Tema 5
lee A
A=A+2 esc A commit
Universitat de València (Esther de Ves, Vicente Cerverón)
38
Algoritmo no deshacer/no rehacer

Existen dos técnicas básicas de actualización:
 actualización en el sitio, en la cual cuando es
necesario escribir en disco se sobreescriben los
objetos de la BD en su posición original. Se
utiliza en todos los algoritmos de recuperación
vistos anteriormente.
 El sombreado (paginación en la sombra) escribe
las páginas actualizadas en una nueva posición, y
mantiene (provisionalmente) las páginas
originales en su ubicación original. La nueva
página sólo es visible cuando la transacción se
confirma. Esta técnica permite los algoritmos no
deshacer/no rehacer.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
39
Algoritmo no deshacer/no rehacer
La paginación en la sombra es una alternativa a la recuperación
basada en la traza (si no hay concurrencia de transacciones ni siquiera se
necesita traza).
En ejecuciones serializadas
 Se mantienen dos tablas de páginas, la tabla de páginas actual y la
tabla de páginas en la sombra.
 Cuando se inicia una transacción se copia la tabla de páginas actual
en la tabla “sombra”.
 Cuando se actualiza una página, se escribe la página actualizada en
una página no usada, y se actualiza la tabla actual para apuntar a
ésta (dejando la “sombra” sin modificar)
 Cuando se confirma la transacción, se descarta la tabla “sombra”.
 Si se produce un fallo, la tabla “sombra” se copia en la “actual”.
 No es necesario ni rehacer ni deshacer

BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
40
Algoritmo no deshacer/no rehacer
paginación en la sombra
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
41
Algoritmo no deshacer/no rehacer
Inconvenientes





Se debe guardar y copia la tabla de páginas entera.
En cualquier caso hay que gestionar la “recolección de
basura” de páginas “obsoletas” después de la
confirmación de una transacción.
Los datos de la BD quedan fragmentados.
En caso de ejecuciones concurrentes, hay que guardar y
utilizar información en la traza y la recuperación se
complica mucho respecto a las planificaciones
serializadas.
En conjunto, la técnica supone un sobrecoste de
operaciones que la hace ineficiente en la práctica.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
42
Algoritmo no deshacer/no rehacer
Los algoritmos específicos con esta técnica son:
void confirma( transac t)
{ pagina p;
for (p=pagina_actualizada(t); p!=NULL; p=pagina_sig(t,p))
if (esta_sucia(p))
escribe_post_imag_traza_en_disco(p);
elimina_de_lista(La,t);
}
void rearranque()
{
transac t;
for (t = La ; t!= NULL; t = t->sig)
aborta(t);
}
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
43
Algoritmo de recuperación ARIES



Se trata de un método de recuperación “real”
empleado (con diversas optimizaciones) en la
mayoría de los SGBD actuales.
ARIES utiliza una estrategia robar/no forzar para
las escrituras en disco.
El algoritmo se basa en tres conceptos:



BD2 - Tema 5
escritura anticipada en la traza.
repetición de la historia (para reconstruir el estado de la
BD en el momento de la caída, con rehacer y deshacer).
anotación en el diario de las modificaciones durante el
deshacer (para evitar repeticiones de deshacer si se
produce un fallo durante la recuperación).
Universitat de València (Esther de Ves, Vicente Cerverón)
44
Algoritmo de recuperación ARIES

El procedimiento de recuperación consiste en
tres pasos principales:

Análisis
Identifica las páginas sucias y el conjunto de transacciones
activas en el momento de la caída y el punto de la traza
apropiado para empezar la operación REHACER

Rehacer
En la fase REHACER se replican las operaciones de la
traza, si bien sólo se aplican las operaciones necesarias.

BD2 - Tema 5
Deshacer
Se recorre la traza hacia atrás y se deshacen las
transacciones activas en el momento de la caída, o iniciadas
después, de las que no se ha encontrado confirmación.
Universitat de València (Esther de Ves, Vicente Cerverón)
45
Algoritmo de recuperación ARIES
ARIES utiliza diferentes estructuras de datos:
 mantiene un Número Secuencial de Diario (NSD)
incremental para identificar cada entrada del diario;
 en la traza se guarda información adicional,
 el algoritmo emplea una tabla de transacciones y una
tabla de páginas sucias, que mantiene el gestor de
transacciones,

BD2 - Tema 5
cuando se produce una caída, estas tablas se recrean en la
fase de análisis.
Universitat de València (Esther de Ves, Vicente Cerverón)
46

Entradas de la traza para ARIES:
último NSD
donde id_t
modificó
NSD
ÚLTIMO_NSD
Número
secuencial

Identificador
de transacción
ID_TRAN
TIPO
Tipo de
operación
entre otras:
imagen anterior
imagen posterior
ID_PAG
OTRA_INF
Identificador
de página
Se escribe un registro para las siguientes acciones:





BD2 - Tema 5
Escribir
Confirmar
Abortar
Deshacer
Finalizar
Universitat de València (Esther de Ves, Vicente Cerverón)
47

Durante la recuperación:



Tabla de transacciones
Tabla de páginas sucias
Entradas de tabla de transacciones:
ID_TRANSACCIÓN

Se construyen
durante el análisis
ÚLTIMO NSD
ESTADO
Entradas de la tabla de páginas sucias:
ID_PÁGINA
BD2 - Tema 5
NSD
Universitat de València (Esther de Ves, Vicente Cerverón)
48

Los puntos de control implican las siguientes
operaciones:



BD2 - Tema 5
Escribir en la traza un registro de inicio de punto de
control.
Escribir en la traza un registro de fin de punto de control
(se añaden también en la traza los contenidos de la tabla
de transacciones y de páginas sucias)
Escribir el NSD del registro de inicio de pto. de control
en un fichero especial.
Universitat de València (Esther de Ves, Vicente Cerverón)
49
Recuperación ARIES. Fase de análisis:
 Se accede al fichero especial para localizar el último
punto de control adecuado.
 Comienza la fase de análisis desde dicho punto de
control; la tabla de transacciones activas y la tabla de
páginas sucias se “recrean” mediante la traza.



BD2 - Tema 5
Si se alcanza un fin de transacción, dicha transacción deja
de estar entre las activas.
Si se encuentra en la traza una entrada correspondiente a
una transacción, se modifica la tabla de transacciones
cambiando el ÚLTIMO_NSD para esa transacción,
incluyéndola si no estaba.
Si el registro de la traza es un cambio de una página P y
ésta no estaba en la tabla de páginas sucias, se crea una
nueva entrada en la tabla de páginas sucias.
Universitat de València (Esther de Ves, Vicente Cerverón)
50
Recuperación ARIES. Fase REHACER:
 Para reducir el trabajo innecesario, se empieza desde
un punto donde se sabe que los cambios previos a
las páginas sucias ya están aplicados a la BD en
disco.
 Para ello se localiza el NSD más pequeño (M) de la
tabla de páginas sucias (todo lo anterior ya está
escrito en disco).
 Se empieza en ese registro M de la traza y se avanza,
rehaciendo sólo lo que sea necesario:


BD2 - Tema 5
si un cambio de una página P no está en la tabla de
páginas sucias no tiene que ser rehecho;
si para un cambio de una página P con un NSD N dado
dicha página tiene una entrada en la tabla de páginas
NSD(P)>N entonces ese cambio ya ha sido aplicado.
Universitat de València (Esther de Ves, Vicente Cerverón)
51
Recuperación ARIES. Fase DESHACER:


Una vez finalizada la fase REHACER, la BD está en
el estado del momento de la caída.
Teniendo en cuenta la tabla de transacciones activas
y no confirmadas (la undo-list) continúa hacia atrás
desde el final de la traza deshaciendo las operaciones
de esas transacciones hasta llegar al principio de
cada una de ellas
Fin de la traza
Último pto. de control
Tiempo
Traza
REHACER
Fase de análisis
DESHACER
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
52

Ejemplo de recuperación ARIES:
En una planificación con tres transacciones recién iniciadas
{T1: update(C), T2: update(B); T1: commit, pto.control,
T3: update(A), T2: update(C), T2: commit, FALLO }
¿Cómo sería el funcionamiento normal y la recuperación?
Traza
disponible
Tablas
guardadas
en el pto. de
control
BD2 - Tema 5
NSD
ÚLTIMO_NSD
ID_TRAN
TIPO
ID_PAG
OTRA_INF
1
0
T1
Act
C
....
2
0
T2
Act
B
....
3
1
T1
Conf
4
ini_control
5
fin_control
6
0
T3
Act
A
....
7
2
T2
Act
C
....
8
7
T2
Conf
....
InfoTablas
....
ID_TRAN
ÚLTIMO_NSD
TIPO
ID_PAG
NSD
T1
3
Conf
C
1
T2
2
en prog
B
2
Universitat de València (Esther de Ves, Vicente Cerverón)
53

Ejemplo de recuperación ARIES:
En la fase de ANÁLISIS partimos de las tablas guardadas en
el punto de control y las recreamos.
Tablas
reconstruidas
en la fase de
análisis
ID_TRAN
ÚLTIMO_NSD
TIPO
ID_PAG
NSD
T1
3
Conf
C
1
T2
8
Conf
B
2
T3
6
en prog
A
6
En la fase REHACER, empezando desde el mínimo NSD en
la tabla de páginas sucias (min(NSD)=1)) se rehacen las
actualizaciones de la traza (en este caso NSD=1, 2, 6, 7)
En la fase DESHACER, se deshacen las actualizaciones de la
traza de las transacciones no confirmadas (T3) (i.e. NSD=6)
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
54
Soporte para la recuperación del medio





La información necesaria para la recuperación en frío se
encuentra en la copia de seguridad, el último punto de
sincronismo y las imágenes posteriores de la traza.
Por lo tanto, aquellos algoritmos que no soportan el
procedimiento de rehacer en la recuperación en caliente, deben
hacerlo en la recuperación en frío.
La base de datos completa y la traza se guardan periódicamente
en un medio de almacenamiento más económico como las cintas.
Ante un fallo catastrófico, se recupera en frío “desde la cinta”.
La traza se respalda con más frecuencia que la BD completa.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
55
Bibliografía



Ramez A. Elmasri, Shamkant B. Navathe,
“Fundamentos de Sistemas de Bases de Datos”.
Addison Wesley (tercera edición, capítulo 21)
Silberschatz, A.; Korth, H.F.; Sudarshan, S.
“Fundamentos de Bases de Datos”.
McGraw Hill (capítulo 17)
R. Ramakrishnan, J. Gehrke “Database
Management Systems”. McGraw Hill (cap.18)
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
56
Cuestiones y ejercicios

Dada la siguiente planificación, donde se indica el punto de
fallo, simular el comportamiento (normal y recuperación) de
diferentes algoritmos de recuperación




T1 init, T1 lee X, T1 esc X, T2 init, T2 lee Y, T2 esc Y, T1 lee Z,
T1 esc Z, T1 commit , T2 lee Z, T2 esc Z, T3 init, T3 lee R,
T3 esc R, T3 lee X, pto. control, T3 esc X, T4 init, T2 fin,
T4 lee Z, T4 esc Z, T4 lee W, T4 esc W, T5 init, T5 lee U,
T5 esc U, T5 commit, FALLO
Estudiad primero cuál sería el comportamiento de las diferentes
técnicas de control de concurrencia con esta planificación.
Para ARIES, asumid que la caché sólo tiene espacio para 5 páginas.
Estudiad diferentes comportamientos si el fallo se produjese en
otros momentos.
BD2 - Tema 5
Universitat de València (Esther de Ves, Vicente Cerverón)
57