1 METODOS DE RECOVERY

Anuncio
1 METODOS DE RECOVERY
1.1 SHADOW PAGING
Una alternativa a las técnicas basadas en logs es shadow-paging. Esta técnica es esencialmente una
mejora sobre la técnica shadow-copy. En ciertas circunstancias, shadow paging puede requerir
menos accesos a disco que los métodos basados en logs. Sin embargo, existen algunas desventajas
del método shadow-paging, las cuales veremos a continuación. Por ejemplo, es pesado extender
shadow-paging para permitir múltiples transacciones ejecutadas concurrentemente.
Como antes, la base de datos es particionada en algún número de bloques de largo fijo, los cuales
son referenciados como pages. El término page (página) está tomado de sistemas operativos, donde
se utiliza un esquema de paging para manejo de memoria. Luego, asumimos que hay n páginas,
numeradas del 1 al n (en la práctica n pueden ser cientos o miles). Estas páginas no necesitan ser
almacenadas en ningún orden particular en disco.
La idea clave detrás de la técnica de shadow-paging es mantener dos páginas (tablas de páginas)
durante la vida de una transacción: la tabla de páginas actual y la tabla de páginas escondida
(shadow page table).
Cuando comienza la transacción, ambas tablas de páginas son idénticas. La tabla de páginas
escondida no cambia mientras dura la transacción.
La tabla de páginas actual puede cambiar cuando la transacción realiza una operación WRITE(X), y
X reside en la página i-ésima. La operación WRITE es ejecutada como sigue:
1. Si la i-ésima página (que es la página en que reside cada X) aun no está en memoria
principal, entonces, hacer INPUT(X).
7
2. Si ésta es la primera escritura realizada sobre la página i-ésima por esta transacción,
entonces se modifica la tabla de páginas actual, como sigue:
a) Encontrar en disco una página no usada. Típicamente, el sistema de BD tiene
acceso a una lista de páginas no usadas (libres).
b) Borrar a página encontrada en el paso anterior (2.a) desde la lista de páginas libres.
c) Modificar la tabla de páginas actual tal que la i-ésima entrada apunte a la página
encontrada en el punto anterior (2.a).
3. Asignar el valor de Xj a X es la página de buffer .
La Fig.1 muestra un ejemplo de tablas de páginas, mientras, la Fig.2 muestra las tablas de páginas
actual y shadow para una transacción realizando un WRITE sobre la cuarta página de una base de
datos consistente de 10 páginas.
1
1
2
3
4
5
... ...
n
Tabla de páginas
Páginas de disco
Fig.1: Ejemplo de tablas de páginas
La Fig.1 muestra un ejemplo de tablas de páginas, mientras, la Fig.2 muestra las tablas de páginas
actual y shadow para una transacción realizando un WRITE sobre la cuarta página de una base de
datos consistente de 10 páginas.
1
2
3
4
5
6 ...
7
8
9
10
1
2
3
4
5
6 ...
7
8
9
10
Tabla de páginas shadow
Tabla de páginas actual
Páginas de disco
Fig.2: Ejemplo de tablas de páginas para una transacción
Intuitivamente, el planteamiento de shadow-page para recuperación es almacenar la tabla de
páginas shadow en un espacio no volátil, entonces, el estado de la base de datos previo a la
ejecución de la transacción, puede ser recuperado en caso de un accidente o transacción abortada.
2
Cuando la transacción termina, la tabla de páginas actual se escribe en un espacio de
almacenamiento no volátil. Luego, la tabla de páginas actual pasa a ser la nueva tabla de páginas
shadow.
La tabla de páginas actual puede ser guardada en memoria principal (almacenamiento volátil).
Nosotros no cuidamos si se pierde o no la tabla de páginas actual en un crash, puesto que la
recuperación del sistema se hace usando la tabla de páginas shadow.
Una recuperación exitosa requiere que encontremos la tabla de páginas shadow en disco después de
un crash. Una forma simple de encontrarla es elegir una posición (localización) fija en espacio de
almacenamiento estable que contenga la dirección de la tabla de páginas shadow.
Cuando el sistema vuelve a levantarse después de un crash, copiamos la tabla de páginas shadow
en la memoria principal, y la usamos para procesar transacciones subsecuentes. Esto porque de
nuestra definición de operación WRITE, podemos garantizar que la tabla de páginas shadow
apuntará a las páginas de la BD correspondientes al estado de la BD previo a cualquier transacción
que estuviera activa al momento del crash. A diferencia de los esquemas basados en logs, no se
necesita invocar operaciones UNDO.
Al finalizar una transacción, debemos hacer lo siguiente:
1) Asegurar que todas las páginas de buffer en memoria principal que hayan sido modificadas por
la transacción sean enviadas a disco. (Notar que las operaciones de salida no debieran cambiar
las páginas de la BD apuntadas por alguna entrada en la tabla de páginas shadow).
2) Enviar la tabla de páginas actual a disco. Notar que no podremos sobrescribir la tabla de
páginas shadow, puesto que podríamos necesitarla para recuperar el sistema de un crash.
3) Enviar la dirección de disco de la tabla de páginas actual a la localización fija en el espacio de
almacenamiento estable conteniendo la dirección de la tabla de páginas shadow. Esta acción
sobrescribe la dirección de la tabla de páginas shadow antigua. Por lo tanto, la tabla de páginas
actual pasará a ser la tabla de páginas shadow, y la transacción está terminada.
•
•
Si un crash ocurre antes de completar el paso 3), podremos volver al estado justo antes de la
ejecución de la transacción.
Si el crash ocurre después de completado el paso 3), los efectos de la transacción se
preservarán. No es necesario invocar operaciones REDO.
VENTAJAS Y DESVENTAJAS
Shadow-paging ofrece las siguientes ventajas sobre las técnicas basadas en logs:
El overhead de la salida de los registros de logs se elimina.
La recuperación desde crashes es significativamente más rápida (puesto que no se necesitan
operaciones UNDO y REDO).
Algunas ventajas de la técnica se enumeran a continuación:
Commit overhead (sobrecosto de finalización).
La finalización de una sola transacción usando shadow-paging requiere múltiples bloques
para terminar: los bloques de datos actuales, la tabla de páginas actual y la dirección de
3
disco de la tabla de páginas actual. Los esquemas basados en logs sólo necesitan los
registros de logs para terminar, los cuales, para transacciones pequeñas típicas se ajustan a
un bloque.
Fragmentación de datos.
Shadow-paging produce que las páginas de la BD cambien de localización cuando son
actualizadas. Como resultado, o perdemos la propiedad de localidad de las páginas (que
permite una transferencia más rápida de los datos) o bien, debemos reordenar esquemas
complejos y altamente sobrecargados para manejo de almacenamiento físico.
Garbage collector.
Cada vez que finaliza una transacción, las páginas de la BD que contenían la antigua
versión de los datos cambia pasando a ser inaccesibles para la transacción. En la Fig. 2, la
página que apunta a la 4a entrada de la tabla de páginas shadow pasará a ser inaccesible una
vez que la transacción del ejemplo finalice.
Tales páginas son consideradas garbage, puesto que puesto que no son parte del espacio
libre y no contienen información usable. También se genera garbage como efecto de los
crashes. Periódicamente es necesario encontrar todas las páginas garbage, y agregarlas a la
lista de páginas libres. Este proceso, llamado garbage collector, agrega sobrecosto y
complejidad al sistema.
4
Descargar