Sie sind auf Seite 1von 57

Tcnicas de recuperacin de Bases de Datos

ndice
1. 2.

3.
4. 5.

Introduccin. Conceptos bsicos. Estructuras de datos y reglas bsicas. Procedimientos de recuperacin. Principales algoritmos de recuperacin. 1. Actualizacin inmediata 2. Actualizacin diferida 3. Paginacin en la sombra 4. Algoritmo de recuperacin ARIES
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

1. Introduccin

Definicin de Recuperacin de una BD:


restablecimiento de un estado correcto de la BD (consistente) despus que un fallo del sistema haya ocasionado que el estado actual sea inconsistente.

Principios en los que se fundamenta:


redundancia fsica de los datos.
(disco-memoria, incluso disco-disco y redundancia mltiple)

Quin se encarga de la recuperacin?


La recuperacin la gestiona el mdulo gestor de recuperacin del SGBD.

Todas las ideas de recuperacin son independientes del modelo de BD utilizado; si bien asumiremos que el modelo es relacional.
BD2 - Tema 5 Universitat de Valncia (Esther de Ves, Vicente Cervern)

Tipos de fallos
Durante la ejecucin de las transacciones, una BD puede sufrir diferentes fallos: Fallos de transaccin:

Errores lgicos: una transaccin no puede completarse por algn error interno a la misma. Errores del sistema: una transaccin es abortada por el SGBD (p.e. para asegurar la consistencia o evitar el bloqueo mortal). Cada del sistema: la falta de alimentacin u otro problema hardware (excepto de discos) detiene el funcionamiento normal y produce la prdida de la informacin en memoria voltil. Fallo del disco: se produce una destruccin total o parcial de los datos almacenados en un disco.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

Fallos catastrficos: que afectan al conjunto

BD2 - Tema 5

Funcionamiento del mdulo de recuperacin

Los algoritmos de recuperacin son tcnicas para asegurar la consistencia de la BD y la atomicidad de las transacciones incluso en presencia de fallos. Para ello, los algoritmos de recuperacin tienen dos procedimientos de actuacin: 1. acciones que se realizan durante el funcionamiento normal para disponer de la informacin necesaria en caso de tener que recuperarse de un fallo; 2. acciones que se realizan para recuperar la base de datos despus de producirse un fallo.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

2. Conceptos bsicos

El sistema de recuperacin 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 slo dos posibilidades para las transacciones: abortar (ninguno de sus acciones tiene efecto, y debe reiniciarse). confirmar (sus acciones tienen efecto permanente). Transaccin activa: si ha empezado pero no ha alcanzado un estado final (aborto o confirmacin).
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

3. Estructuras de datos para la recuperacin

El sistema de recuperacin se apoya en una serie de elementos para realizar su funcin

Realizacin de copias de seguridad.


completas

o incrementales

Almacenamiento estable

Almacenamiento de una traza


que

guarda las acciones (actualizaciones) realizadas (tambin llamada diario o log )

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

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 slo por las modificaciones realizadas desde la ltima copia de seguridad incremental.

Se utiliza tras un fallo del medio (fallo catastrfico).

Se puede realizar con la BD parada o en funcionamiento.


Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

Estructuras de datos: traza

La traza (o diario, o log ) guarda informacin sobre las actualizaciones realizadas en la BD (informacin necesaria para realizar la recuperacin en caso de fallo). Tiene 4 (o 5) tipos de entradas (registros de la traza):
[Comenzar_Trans, T] [Confirmar, T] [T, g, BFIM, AFIM] [Abortar, T]

BFIM: BeFore IMage para deshacer AFIM: AFter IMage para rehacer

Si se evita la restauracin en cascada (lo habitual, ya que se suele usar bloque en dos fases estricto), no es necesario registrar traza de las lecturas, excepto para auditora. Se usa la escritura anticipada de la traza: la traza de las acciones se guardan en el disco antes que sus efectos.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

Estructuras de datos: traza

La traza es un elemento fundamental para la recuperacin, por lo que suele duplicarse o triplicarse en varios discos para evitar su perdida. Ejemplo de traza para una planificacin 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 Valncia (Esther de Ves, Vicente Cervern)

10

Estructuras de datos: traza

Puntos de control (o de sincronismo): peridicamente 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 nmero de transacciones). Realizar un punto de control implica:

Suspensin temporal de la ejecucin 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 ejecucin.
BD2 - Tema 5 Universitat de Valncia (Esther de Ves, Vicente Cervern)

11

Reglas bsicas de gestin 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 funcin de la gestin de los buffers es del sistema operativo, pero dada su incidencia en el funcionamiento de la BD los SGBD participan en la gestin 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.


Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

12

Reglas bsicas de gestin 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 pgina que se pueda desalojar, evacundola (a disco) si ha sido modificada (en el lugar o en la sombra). los bits de reserva y de pgina sucia indican si la pgina est preparada para ser llevada a disco y si ha sido modificada.

Pginas sucias: pginas actualizadas que no han sido todava escritas en disco.
BD2 - Tema 5 Universitat de Valncia (Esther de Ves, Vicente Cervern)

13

Reglas bsicas de gestin de buffers

Para decidir cuando una pgina sucia puede/debe ser escrita en disco se puede seguir: estrategia no-robar: una pgina sucia no puede ser escrita ni desalojada antes de que se confirme la transaccin que la actualiz. estrategia robar: una pgina sucia puede ser escrita y desalojada cuando sea necesario independientemente de que la transaccin haya llegado a la confirmacin. estrategia forzar: toda pgina sucia se escribe a disco cuando se confirma la transaccin que la actualiz (pequeo sobrecoste de escr.). estrategia no-forzar: no es necesario forzar la escritura cuando se confirma, slo cuando sea necesario por otras causas. La mayora de los SGBDs emplean robar/no-forzar para reducir las necesidades de memoria y agilizar el funcionamiento sin fallos.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

14

Reglas bsicas de gestin de buffers

Para garantizar la atomicidad de las transacciones: Regla de traza por adelantado: la traza que contiene informacin de una actualizacin debe escribirse en el disco antes de escribir a disco dicho objeto actualizado de la BD. Evita prdidas de imagen anterior BFIM Se asegura la Atomicidad.

Regla de confirmacin: todos los registros de la traza correspondientes a una transaccin deben escribirse en el disco antes de que se confirme dicha transaccin. Evita prdidas de imagen posterior AFIM Se asegura la Durabilidad.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

15

4. Procedimientos de recuperacin

Procedimiento de recuperacin: 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. Cmo?
Deshacer actualizacin: escribir en BD la imagen anterior desde la traza Rehacer actualizacin: escribir en BD la imagen posterior desde la traza

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

16

Procedimientos de recuperacin

Tipos de procedimientos de recuperacin: Recuperacin normal: tras una parada de la BD sin fallos, si el punto de control es el ltimo registro de la traza. Recuperacin 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 segn las diferentes tcnicas. Recuperacin en fro: 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.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

17

Algoritmos de recuperacin

Conceptualmente, podemos distinguir dos tcnicas principales para recuperarse frente a fallos no catastrficos: Actualizacin diferida Actualizacin inmediata Las tcnicas de actualizacin diferida no actualizan la BD hasta llegar al punto de confirmacin. En las tcnicas de actualizacin inmediata las operaciones de una transaccin modifican la BD antes de que la transaccin confirme. Estudiaremos cuatro algoritmos que se basan en combinar acciones de las tcnicas anteriores.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

18

5. Algoritmos de recuperacin

Todos estos algoritmos se describen segn realizan las siguientes acciones:


begin(t): introduce la transaccin t en el gestor de transacciones. leer(t,p,b): la transaccin t lee la pgina p en el bfer b. esc(t,b,p): la transaccin t escribe el bfer b en la pgina p. confirma(t): se confirma la transaccin t. aborta(t): se aborta la transaccin t. rearranca(): realiza la recuperacin 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 accin begin(t) es idntica:
void begin( transac t) { inserta_en_lista(La,t); }

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

19

Algoritmo no deshacer/rehacer

Con esta tcnica, basada en la actualizacin diferida, nunca es necesario deshacer una transaccin despus de un fallo del sistema, porque no han llegado a tener efecto. Por ello, no es necesario guardar las imgenes anteriores en la traza. La escritura en disco de las pginas actualizadas se difiere hasta llegar al punto de confirmacin de la transaccin. Abortar transacciones es muy barato. Slo es prctico para transacciones cortas y que actualicen poco.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

20

Algoritmo no deshacer/rehacer

Si se produce un fallo, las transacciones deben rehacerse. En esta tcnica no es necesario guardar el valor anterior (BFIM), ya que nunca se deshace. Siempre (en todas las tcnicas) hay que escribir la traza en disco antes de las propias actualizaciones. Durante el proceso de recuperacin despus de una cada una transaccin debe rehacerse si y slo si la traza contiene ambas marcas de inicio y de confirmacin de dicha transaccin. En todas las tcnicas las operaciones deben ser idempotentes, porque puede fallar durante la recuperacin.
BD2 - Tema 5 Universitat de Valncia (Esther de Ves, Vicente Cervern)

21

Algoritmo no deshacer/rehacer

Si la traza en tres instantes de tiempo al fallar es:

la recuperacin en cada caso es como sigue Caso (a): no se debe rehacer ninguna transaccin 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 Valncia (Esther de Ves, Vicente Cervern)

22

Algoritmo no deshacer/rehacer
Los algoritmos para las diferentes funciones con esta tcnica 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 gestin de buffers se produce segn lo indicado en el apartado correspondiente, trayendo de disco a cach cuando se necesita, sin necesidad de indicarlo explcitamente en los algoritmos.
BD2 - Tema 5 Universitat de Valncia (Esther de Ves, Vicente Cervern)

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 Valncia (Esther de Ves, Vicente Cervern)

24

Algoritmo no deshacer/rehacer
Ejemplo:
Guarda imagen posterior

[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 lee A A=A+2 esc A commit

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

25

Algoritmo deshacer/no rehacer

Con esta tcnica, basada en la actualizacin inmediata, nunca es necesario rehacer una transaccin despus de un fallo del sistema. Por ello, no es necesario guardar las imgenes posteriores en la traza. Las pginas actualizadas se escriben en disco cada vez que se actualizan elementos, sin esperar a la confirmacin de la transaccin. Abortar transacciones puede ser caro (hay que deshacer las actualizaciones ya escritas en disco). En la prctica no resulta lo ms eficiente.

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

26

Algoritmo deshacer/no rehacer


Los algoritmos para las diferentes funciones con esta tcnica 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 Valncia (Esther de Ves, Vicente Cervern)

27

Algoritmo deshacer/no rehacer


void rearranque() { transac t; for (t = La ; t!= NULL; t = t->sig) aborta(t); //donde deshace }

Slo 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 Valncia (Esther de Ves, Vicente Cervern) BD2 - Tema 5

Algoritmo deshacer/no rehacer

Ejemplo:
[T1 init][T1,A,2][T1 commit][T2 init][T2,B,3]!FALLO! init lee B B=B+3

Guarda imagen anterior

esc B

T2
A=2 B=3 4 6

FALLO

T1
init lee A A=A+2 esc A commit

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

29

Algoritmo deshacer/rehacer

Esta tcnica, basada en la actualizacin inmediata, combina la habilidad de rehacer con la de deshacer. Las pginas 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 ms costoso. El procedimiento de rearranque ms costoso. Es el ms comnmente empleado por los SGBDs.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

30

Algoritmo deshacer/rehacer

Es imprescindible que los registros de la traza se escriban a disco antes que los datos actualizados. Procedimientos de recuperacin:

Con las transacciones que en la traza tengan registrado el inicio pero no la confirmacin, se Deshace la transaccin, yendo hacia atrs en la traza desde el ltimo registro de la transaccin, restaurando las BFIM. Con las transacciones que tengan registrados en la traza el inicio y la confirmacin, se Rehace la transaccin, yendo hacia delante en la traza, desde el primer registro de la transaccin, estableciendo las AFIM. Las operaciones deben ser idempotentes. Se realizan primero las operaciones de Deshacer y luego las de Rehacer
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

31

Algoritmo deshacer/rehacer

Si la traza en tres instantes de tiempo al fallar es:

la recuperacin 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 Valncia (Esther de Ves, Vicente Cervern)

32

Algoritmo deshacer/rehacer
Uso de los Puntos de control (checkpoints)

Los puntos de control, tanto en deshacer/rehacer como en los dems algoritmos, evitan tener que recorrer toda la traza para la recuperacin, lo que resultara muy costoso y realizara acciones innecesarias. Cuando se realiza (y registra) un punto de control, se escriben toda la informacin a disco y se guarda la informacin de las transacciones activas en ese momento. <checkpoint La>

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

33

Algoritmo deshacer/rehacer
Uso de los Puntos de control (checkpoints)

Cuando el sistema se recupera de una cada se inicializan undo-list y redo-list vacas, se va recorriendo la traza hacia atrs 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 atrs hasta encontrar todos los <Tu start> de las Tu que estn la La, deshaciendo los pasos de las Tu, se avanza en la traza hasta el punto de control ms 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 Valncia (Esther de Ves, Vicente Cervern)

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 Valncia (Esther de Ves, Vicente Cervern)

35

Algoritmo deshacer/rehacer
Los algoritmos para las diferentes funciones con esta tcnica 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 Valncia (Esther de Ves, Vicente Cervern)

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 Valncia (Esther de Ves, Vicente Cervern)

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 lee A A=A+2 esc A commit

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

38

Algoritmo no deshacer/no rehacer

Existen dos tcnicas bsicas de actualizacin: actualizacin en el sitio, en la cual cuando es necesario escribir en disco se sobreescriben los objetos de la BD en su posicin original. Se utiliza en todos los algoritmos de recuperacin vistos anteriormente. El sombreado (paginacin en la sombra) escribe las pginas actualizadas en una nueva posicin, y mantiene (provisionalmente) las pginas originales en su ubicacin original. La nueva pgina slo es visible cuando la transaccin se confirma. Esta tcnica permite los algoritmos no deshacer/no rehacer.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

39

Algoritmo no deshacer/no rehacer


La paginacin en la sombra es una alternativa a la recuperacin basada en la traza (si no hay concurrencia de transacciones ni siquiera se necesita traza). En ejecuciones serializadas Se mantienen dos tablas de pginas, la tabla de pginas actual y la tabla de pginas en la sombra. Cuando se inicia una transaccin se copia la tabla de pginas actual en la tabla sombra. Cuando se actualiza una pgina, se escribe la pgina actualizada en una pgina no usada, y se actualiza la tabla actual para apuntar a sta (dejando la sombra sin modificar) Cuando se confirma la transaccin, 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 Valncia (Esther de Ves, Vicente Cervern)

40

Algoritmo no deshacer/no rehacer paginacin en la sombra

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

41

Algoritmo no deshacer/no rehacer Inconvenientes


Se debe guardar y copia la tabla de pginas entera. En cualquier caso hay que gestionar la recoleccin de basura de pginas obsoletas despus de la confirmacin de una transaccin. Los datos de la BD quedan fragmentados. En caso de ejecuciones concurrentes, hay que guardar y utilizar informacin en la traza y la recuperacin se complica mucho respecto a las planificaciones serializadas. En conjunto, la tcnica supone un sobrecoste de operaciones que la hace ineficiente en la prctica.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

42

Algoritmo no deshacer/no rehacer


Los algoritmos especficos con esta tcnica 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 Valncia (Esther de Ves, Vicente Cervern)

43

Algoritmo de recuperacin ARIES

Se trata de un mtodo de recuperacin real empleado (con diversas optimizaciones) en la mayora de los SGBD actuales. ARIES utiliza una estrategia robar/no forzar para las escrituras en disco. El algoritmo se basa en tres conceptos:

escritura anticipada en la traza. repeticin de la historia (para reconstruir el estado de la BD en el momento de la cada, con rehacer y deshacer). anotacin en el diario de las modificaciones durante el deshacer (para evitar repeticiones de deshacer si se produce un fallo durante la recuperacin).
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

44

Algoritmo de recuperacin ARIES

El procedimiento de recuperacin consiste en tres pasos principales:

Anlisis
Identifica las pginas sucias y el conjunto de transacciones activas en el momento de la cada y el punto de la traza apropiado para empezar la operacin REHACER

Rehacer
En la fase REHACER se replican las operaciones de la traza, si bien slo se aplican las operaciones necesarias.

Deshacer

Se recorre la traza hacia atrs y se deshacen las transacciones activas en el momento de la cada, o iniciadas despus, de las que no se ha encontrado confirmacin.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

45

Algoritmo de recuperacin ARIES


ARIES utiliza diferentes estructuras de datos: mantiene un Nmero Secuencial de Diario (NSD) incremental para identificar cada entrada del diario; en la traza se guarda informacin adicional, el algoritmo emplea una tabla de transacciones y una tabla de pginas sucias, que mantiene el gestor de transacciones,

cuando se produce una cada, estas tablas se recrean en la fase de anlisis.

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

46

Entradas de la traza para ARIES:


ltimo NSD donde id_t modific Identificador de transaccin

entre otras: imagen anterior imagen posterior

NSD

LTIMO_NSD

ID_TRAN

TIPO

ID_PAG

OTRA_INF

Nmero secuencial

Tipo de operacin

Identificador de pgina

Se escribe un registro para las siguientes acciones:


Escribir Confirmar Abortar Deshacer Finalizar


Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

47

Durante la recuperacin:

Tabla de transacciones Tabla de pginas sucias

Se construyen durante el anlisis

Entradas de tabla de transacciones:


ID_TRANSACCIN LTIMO NSD ESTADO

Entradas de la tabla de pginas sucias:


ID_PGINA NSD

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

48

Los puntos de control implican las siguientes operaciones:

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 aaden tambin en la traza los contenidos de la tabla de transacciones y de pginas sucias) Escribir el NSD del registro de inicio de pto. de control en un fichero especial.

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

49

Recuperacin ARIES. Fase de anlisis: Se accede al fichero especial para localizar el ltimo punto de control adecuado. Comienza la fase de anlisis desde dicho punto de control; la tabla de transacciones activas y la tabla de pginas sucias se recrean mediante la traza.

Si se alcanza un fin de transaccin, dicha transaccin deja de estar entre las activas. Si se encuentra en la traza una entrada correspondiente a una transaccin, se modifica la tabla de transacciones cambiando el LTIMO_NSD para esa transaccin, incluyndola si no estaba. Si el registro de la traza es un cambio de una pgina P y sta no estaba en la tabla de pginas sucias, se crea una nueva entrada en la tabla de pginas sucias.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

50

Recuperacin ARIES. Fase REHACER: Para reducir el trabajo innecesario, se empieza desde un punto donde se sabe que los cambios previos a las pginas sucias ya estn aplicados a la BD en disco. Para ello se localiza el NSD ms pequeo (M) de la tabla de pginas sucias (todo lo anterior ya est escrito en disco). Se empieza en ese registro M de la traza y se avanza, rehaciendo slo lo que sea necesario:

si un cambio de una pgina P no est en la tabla de pginas sucias no tiene que ser rehecho; si para un cambio de una pgina P con un NSD N dado dicha pgina tiene una entrada en la tabla de pginas NSD(P)>N entonces ese cambio ya ha sido aplicado.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

51

Recuperacin ARIES. Fase DESHACER:

Una vez finalizada la fase REHACER, la BD est en el estado del momento de la cada. Teniendo en cuenta la tabla de transacciones activas y no confirmadas (la undo-list) contina hacia atrs 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 Fase de anlisis DESHACER

Traza

REHACER

BD2 - Tema 5

Universitat de Valncia (Esther de Ves, Vicente Cervern)

52

Ejemplo de recuperacin ARIES:

En una planificacin con tres transacciones recin iniciadas {T1: update(C), T2: update(B); T1: commit, pto.control, T3: update(A), T2: update(C), T2: commit, FALLO } Cmo sera el funcionamiento normal y la recuperacin?
Traza disponible
NSD 1 2 3 4 LTIMO_NSD 0 0 1 ini_control ID_TRAN T1 T2 T1 TIPO Act Act Conf ID_PAG C B OTRA_INF .... .... ....

5
6 7 8

fin_control
0 2 7 LTIMO_NSD 3 2 T3 T2 T2 TIPO Conf en prog Act Act Conf ID_PAG C B NSD 1 2 A C

InfoTablas
.... .... ....

Tablas guardadas en el pto. de control


BD2 - Tema 5

ID_TRAN T1 T2

Universitat de Valncia (Esther de Ves, Vicente Cervern)

53

Ejemplo de recuperacin ARIES:

En la fase de ANLISIS partimos de las tablas guardadas en el punto de control y las recreamos.
Tablas reconstruidas en la fase de anlisis
ID_TRAN LTIMO_NSD TIPO ID_PAG NSD

T1 T2 T3

3 8 6

Conf Conf en prog

C B A

1 2 6

En la fase REHACER, empezando desde el mnimo NSD en la tabla de pginas 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 Valncia (Esther de Ves, Vicente Cervern)

54

Soporte para la recuperacin del medio

La informacin necesaria para la recuperacin en fro se encuentra en la copia de seguridad, el ltimo punto de sincronismo y las imgenes posteriores de la traza. Por lo tanto, aquellos algoritmos que no soportan el procedimiento de rehacer en la recuperacin en caliente, deben hacerlo en la recuperacin en fro. La base de datos completa y la traza se guardan peridicamente en un medio de almacenamiento ms econmico como las cintas. Ante un fallo catastrfico, se recupera en fro desde la cinta. La traza se respalda con ms frecuencia que la BD completa.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

55

Bibliografa

Ramez A. Elmasri, Shamkant B. Navathe, Fundamentos de Sistemas de Bases de Datos. Addison Wesley (tercera edicin, captulo 21) Silberschatz, A.; Korth, H.F.; Sudarshan, S. Fundamentos de Bases de Datos. McGraw Hill (captulo 17) R. Ramakrishnan, J. Gehrke Database Management Systems. McGraw Hill (cap.18)
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

56

Cuestiones y ejercicios

Dada la siguiente planificacin, donde se indica el punto de fallo, simular el comportamiento (normal y recuperacin) de diferentes algoritmos de recuperacin

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 cul sera el comportamiento de las diferentes tcnicas de control de concurrencia con esta planificacin. Para ARIES, asumid que la cach slo tiene espacio para 5 pginas. Estudiad diferentes comportamientos si el fallo se produjese en otros momentos.
Universitat de Valncia (Esther de Ves, Vicente Cervern)

BD2 - Tema 5

57