Está en la página 1de 23

TÉCNICAS DE RECUPERACIÓN

UTILIZANDO BITÁCORA

Realizado por: Ing. MSc. Luisa Colón


UNEFA
OBJETIVOS QUE SE PERSIGUEN CON ESTA PRESENTACIÓN

- REPASAR LAS OPERACIONES LEER(X) Y ESCRIBIR (X) EN UNA BASE DE DATOS.


- REPASAR ACERCA DE UN PLAN DE TRANSACCIONES CONSISTENTE.
- REPASAR ESTADO INICIAL Y FINAL DE UNA BASE DE DATOS.
- MEMORIA LOCAL DE UNA TRANSACCIÓN Y CONTENIDO DE LA MISMA DURANTE LA
EJECUCIÓN DE LA TRANSACCIÓN.
- DEFINIR EL CONCEPTO DE BITÁCORA Y LAS ENTRADAS QUE SE ESCRIBEN EN LA MISMA.
- DIFERENCIAR ESCRITURA INMEDIATA EN UNA BASE DE DATOS Y ESCRITURA DEFERIDA.
- ESTUDIAR QUE SE TIENE QUE HACER CUANDO UNA TRANSACCIÓN FALLA EN TIEMPO DE
EJECUCIÓN.
- ESTUDIAR COMO SE VUELVE AL ESTADO INICIAL DE LOS VALORES DE UNA BD
(RECUPERACIÓN) CUANDO LA TRANSACCIÓN FALLA.
- REPASAR LOS ESTADOS DE UNA TRANSACCIÓN: ACTIVA, FALLIDA, PARCIALMENTE
COMPROMETIDA Y COMPROMETIDA (EJECUTÓ EL COMMIT)
UNA TRANSACCIÓN ES UN PROGRAMA O CONJUNTO DE INSTRUCCIONES QUE SE
EJECUTAN UNA TRAS OTRA PARA EMITIR O MOSTRAR UNA SALIDA VALIDA. EL EJEMPLO
N°1 CONSTA DE UN PLAN DE TRANSACCIONES COMPUESTO POR LAS TRANSACCIONES T1
Y T2 (la notación para las transacciones es en mayúsculas T1,T2,…). EN ESTE PLAN DE
TRANSACCIONES SE EJECUTA PRIMERO T1 Y LUEGO DE EJECUTA T2. SI LOS VALORES
GUARDADOS EN LA BASE DE DATOS SON CORRECTOS SE GENERA UN ESTADO
CONSISTENTE, LO QUE SIGNIFICA TAMBIEN QUE TODAS LAS TRANSACCIONES QUE
COMPONEN EL PLAN SE EJECUTARON EXITOSAMENTE (EJECUTARON LA INSTRUCCIÓN
COMMIT LO CUAL GARANTIZA QUE TODOS LOS CAMBIOS EN LOS VALORES PRODUCTO DE
LAS OPERACIONES DE LAS TRANSACCIONES SERÁN GRABADOS EN LA BD). HAY QUE
TENER PRESENTE QUE HAY DOS(2) OPERACIONES BÁSICAS EN LAS TRANSACCIONES:
1. LEER(A): LA CUAL CONSISTE EN TRAER EL ELEMENTO A DE LA BASE DE DATOS A LA
MEMORIA LOCAL DE LA TRANSACCIÓN. CADA TRANSACCIÓN TIENE SU PROPIA
MEMORIA LOCAL O LO QUE ES LA MISMO UN SECTOR DA MEMORIA RAM PARA
GUARDAR LOS CALCULOS DE SUS OPERACIONES. ESTA MEMORIA ES EXCLUSIVA DE
CADA TRANSACCIÓN. EN EL CASO DEL EJEMPLO 1 EXISTEN DOS(2) MEMORIAS
LOCALES UNA PARA T1 Y OTRA PARA T2.
2. ESCRIBIR(A): LA CUAL CONSISTE EN GRABAR EL NUEVO VALOR DEL ELEMENTO A EN
LA BASE DE DATOS.
EN EL EJEMPLO 1 EL ESTADO INICIAL DEL PLAN DE TRANSACCIONES CONSISTE EN LOS
VALORES LEIDOS DE LA BASE DE DATOS.
A=10; Y=10; X=20; Sum=50
EJEMPLO DE UN PLAN DE TRANSACCIONES CONSISTENTE (PRIMERO SE EJECUTA T1 Y LUEGO T2)
VALORES INICIALES DE LOS VALORES EN LA
T1 T2 BASE DE DATOS O ESTADO INICIAL

Inicio A=10; Y=10; X=20; Sum=50


Leer(Sum)=50
NOTA:LOS VALORES DE LAS VARIABLES
Leer(A)=10 X E Y ESTÁN ALMACENADOS EN LA
Los escribir Leer(Y)=10 MEMORIA LOCAL DE T2.
Lee el último valor escrito
modifican los
valores en la BD,
Sum=Sum+A =60 Inicio para Y en T1, en este caso
por lo tanto, Y A=A+2 =12 Leer(Y) =11 11.
cambió del valor VALORES FINALES ESCRITOS EN LA BASE DE
10 a 11 Y=Y+1=11 Leer(X) =20 DATOS O ESTADO FINAL.
Escribir(A)=12 X=X-5 =15
Escribir(Y)=11 Y=Y+5= 16 A=12; Y=16; X=15; Sum=62
Escribir(Sum) =62 Escribir (X) 15 TABLA RESUMEN DE LOS VALORES ESCRITOS EN LA BD
Commit Escribir(Y) =16 POR LAS OPERACIONES WRITE EN T1 Y T2.
NOTA:LOS VALORES DE LAS VARIABLES
A Y X Sum
A Y SUM ESTÁN ALMACENADOS EN LA Commit
MEMORIA LOCAL DE T1 LA CUAL SE T1 12 62
ENCUENTRA EN LA RAM Y
DESAPARECEN O SE LIBERAN CUANDO T2 16 15
SE EJECUTA EXITOSAMENTE T1.
EXPLICACIÓN DEL MANEJO DE LA MEMORIA LOCAL
PARA LAS TRANSACCIONES T1 Y T2 DEL EJEMPLO
DE LA DIAPOSITIVA ANTERIOR. EN ESTE EJEMPLO
LAS ESCRITURAS DE LOS ELEMENTOS DE DATOS SE
REALIZAN DE MANERA INMEDIATA. LUEGO SE LES
EXPLICARÁ EL PROCEDIMIENTO DEL MANEJO DE
LAS ESCRITURAS DIFERIDAS.
EJEMPLO DE UN PLAN DE TRANSACCIONES CONSISTENTE (PRIMERO SE EJECUTA T1 Y LUEGO T2)
VALORES INICIALES DE LOS VALORES EN LA
T1 T2 BASE DE DATOS O ESTADO INICIAL
inicio Inicio
Leer(Sum) Leer(X) A=10; Y=10; X=20; Sum=50
Leer(A) Leer(Y) CADA TRANSACCIÓN DEL PLAN SE LE ASIGNA UNA MEMORIA LA CUAL SE
ENCUENTRA EN UN ESPACIO DE LA MEMORIA RAM. EN EL PLAN EJEMPLO
Leer(Y) X=X-5 EXISTEN DOS MEMORIAS LOCALES UNA PARA T1 Y OTRA PARA T2, LAS CUALES
A=A+2 Y=Y+5 NO INTERFIEREN UNA CON LA OTRA (SON INDEPENDIENTES). POR LO TANTO,
LOS CONTENIDOS DE LA MEMORIA LOCAL PARA AMBAS TRANSACCIONES SON
Y=Y+1 Escribir (X) LOS SIGUIENTES: T1 T2
Sum=Sum+A Escribir(Y) SUM=50 X=20
Escribir(A) Commit VALORES ALMACENADOS
CONTENIDO DE LA A=10 Y=11
Escribir(A) MEMORIA LOCAL
PRODUCTO DE LAS LECTURAS.
Y=10
Escribir(Sum) PARA T1 Y T2
A=12 X=15
Commit
PLAN DE TRANSACCIONES CONSISTENTE. VALORES FINALES PRODUCTO DE LAS
Y=11 Y=16
SE PRODUJO UNA SALIDA CORRECTA OPERACIONES REALIZADAS .
(CONSISTENTE) DE LA EJECUCIÓN EXITOSA SUM=62
DE LAS TRANSACCIONES QUE COMPONEN
EL PLAN. LAS TRANSACCIONES T1 Y T2 VALORES FINALES ESCRITOS EN LA BASE DE
EJECUTARON EL COMMIT. CADA VEZ QUE SE DATOS O ESTADO FINAL.
EJECUTA UN WRITE, LOS CAMBIOS DE LOS
ELEMENTOS DE DATOS (A, SUM, X, Y)
FUERON GRABADOS DE FORMA INMEDIATA
EN LA BD. GANANTIZANDOSE LA PROPIEDAD A=12; Y=16; X=15; Sum=62
DE DURABILIDAD.
A CONTINUACIÓN SE MOSTRARÁ UN EJEMPLO DE RECUPERACIÓN DE LOS
VALORES MODIFICADOS POR LAS OPERACIONES DE UNA TRANSACCIÓN Y
ESCRITOS EN LA BASE DE DATOS, PERO EN LA MISMA SE PRODUCE UN FALLO
ANTES DE EJECUTAR EL COMMIT. ESTO IMPLICA QUE TODAS LAS
MODIFICACIONES HECHAS A LOS ELEMENTOS DE DATOS DEBEN DESHACERSE
O LO QUE ES LO MISMO SE DEBEN DEVOLVER SUS VALORES A SU ESTADO
INICIAL.
ANTES DE EXPLICAR COMO SE REALIZA LA RECUPERACIÓN SE
CONOCERÁ EL CONCEPTO DE BITÁCORA DE TRANSACCIONES, LA
CUAL ES UN ARCHIVO ALMACENADO EN MEMORIA SECUNDARIA,
CUYA FUNCIÓN ES REGISTRAR O GUARDAR TODAS LAS
OPERACIONES QUE LAS TRANSACCIONES REALIZAN CON LOS
ELEMENTOS DE DATOS. A CONTINUACIÓN SE HARÁ UNA
INTRODUCCIÓN AL CONCEPTO DE BITÁCORA Y LAS ENTRADAS
QUE SE REGISTRAN EN LA MISMA PARA GUARDAR LA
INFORMACIÓN DE LAS TRANSACCIONES:
BITÁCORA DE TRANSACCIONES
• Archivo que almacena detalles sobre las operaciones efectuadas como parte
de las transacciones.
• Es conocida también como fichero Log, diario o registro histórico.
• Se mantiene en el disco:
• En un área distinta donde se almacenan los datos de la BD.
• En otras palabras es un archivo donde se respaldan las modificaciones de
los elementos de datos realizados por las transacciones.
• Se suele realizar periódicamente una copia de seguridad de está bitácora
para garantizar las recuperaciones de la BD, en caso de que este
archivo sufra daños irreversibles.
• Cada registro del fichero se denomina entrada, que puede ser de diversos
tipos:
BITÁCORA DE TRANSACCIONES: ENTRADAS.
< INICIAR, T >
• Indica que la transacción T ha comenzado su ejecución.
< LEER, T, X >
- Indica que T leyó el valor del elemento X de la BD.
< ESCRIBIR, T, X, valor_anterior, valor_nuevo >
-Indica que T ha modificado el valor del elemento X.
< COMMIT, T >
• Indica que T finalizó con éxito y su efecto puede ser confirmado en la
BD en disco: los cambios que ha realizado pueden quedar permanentes
en la BD.
Recuperar un fallo de la transacción T consistirá en DESHACER algunas
operaciones, a partir del contenido de la bitácora.
BITÁCORA DE TRANSACCIONES: EJEMPLO DE ENTRADAS.
• Deshacer T implica deshacer cada una de sus operaciones, a partir de las
anotaciones en bitácora.
< ESCRIBIR, T, X, valor_anterior, valor_nuevo >
Deshacer (< ESCRIBIR, T, X, 10, 5 >)  X = 10 en la BD
EXPLICACIÓN: La operación deshacer para el ejemplo significa que el
valor anterior de X en la base de datos es 10, luego por una operación en la
transacción se escribió un nuevo valor de X en la base de datos, el cual es
5. Si la transacción T falla antes de ejecutar el COMMIT se tiene que
devolver el valor de X a su estado inicial. Se busca en la bitácora los
valores anterior y nuevo de X y se vuelve a grabar el valor anterior de X el
cual es igual a 10. Para entender mejor se explicará la recuperación con el
ejemplo anterior; para esto se enumerarán las instrucciones de cada una
de las transacciones y se indicarán las transacciones que ejecutaron el
commit (confirmadas) y cuales quedaron en estado activo o no
confirmadas.
Técnicas de Recuperación de Fallos
Técnica basada en la Actualización Inmediata
•Permite realizar modificaciones de elementos en la base de
datos mientras una transacción está todavía en estado
activo.

•Los elementos de datos escritos en la BD por las


transacciones que no se confirmaron (no ejecutaron el
commit) deben deshacerse.

•A continuación se desarrollará un ejemplo aplicando esta


técnica.
EJEMPLO EJECUCIÓN DE T1.
T1 T2
ESTADO INICIAL DE LA BASE DE DATOS.
Inicio Inicio
(1) Leer(Sum) (1) Leer(X) A=10; Y=10; X=20; Sum=50
(2) Leer(A) (2) Leer(Y) ESTADO T1:INICIADA
(3) Leer(Y) (3) X=X-5 ANOTACIONES EN BITÁCORA:
(4) A=A+2 (4) Y=Y+5 ...
(5) Y=Y+1 (5) Escribir (X) <INICIAR,T1>
(6) Sum=Sum+A <LEER,T1,SUM>
(6) Escribir(Y) FALLA!! <LEER,T1,A> EN BITÁCORA SOLO SE
(7) Escribir(A) Commit <LEER,T1,Y>
ANOTAN LAS ENTRADAS
INICIO, LEER, ESCRIBIR Y
(8) Escribir(Y) <ESCRIBIR,T1,A, 10, 12> COMMIT. NO SE REFLEJAN
LAS OPERACIONES
(9) Escribir(Sum) <ESCRIBIR,T1,Y, 10, 11> REALIZADAS CON LOS
Commit <ESCRIBIR, T1,SUM,50,62> DATOS.

El orden de ejecución es T1 y luego <COMMIT T1>


T2. La transacción T2 falla luego de
ejecutar la instrucción 6, es decir, no
ejecutó el commit.
ESTADO FINAL DE LA BASE DE DATOS.
A=12; Y=16; X=15; Sum=62
ESTADO T1:INICIADA, CONFIRMADA
EJEMPLO Nº 1 EJECUCIÓN DE T2.
T1 T2 ESTADO INICIAL DE LA BASE DE DATOS.
Inicio Inicio A=12; Y=11; X=20; Sum=62
(1) Leer(Sum) (1) Leer(X) ESTADO
... T2:INICIADA IMPORTANTE: PARA
(2) Leer(A) ANOTACIONES EN BITÁCORA: EFECTOS DE
(2) Leer(Y) EVALUACIÓN EN ESTE
(3) Leer(Y) (3) X=X-5 <INICIAR,T1> TIPO DE
(4) A=A+2 (4) Y=Y+5 <LEER,T1,SUM> RECUPERACIÓN, SE
<LEER,T1,A> DEBEN INDICAR LOS
(5) Y=Y+1 (5) Escribir (X) ESTADOS INICIALES Y
<LEER,T1,Y> FINALES DE LA BD PARA
(6) Sum=Sum+A (6) Escribir(Y) FALLA!! <ESCRIBIR,T1,A, 10, 12> CADA EJECUCIÓN DE
(7) Escribir(A) Commit <ESCRIBIR,T1,Y, 10, 11> TRANSACCIÓN, YA QUE
(8) Escribir(Y) <ESCRIBIR, T1,SUM,50,62> CADA EJECUCIÓN
GENERA UN ESTADO
(9) Escribir(Sum) <COMMIT T1> FINAL DEBIDO A LAS
Commit <INICIAR,T2> ESCRITURAS
La transacción T2 falla luego de
<LEER,T2,X> INMEDIATAS; ASÍ COMO
LAS TRANSICIONES DE
ejecutar la instrucción 6, es decir, no <LEER,T2,Y>
LOS ESTADOS DE CADA
ejecutó el commit por lo tanto, todos <ESCRIBIR,T2,X,20,15> TRANSACCIÓN.
los valores nuevos escritos de los <ESCRIBIR,T2,Y,11,16>
valores X e Y en la BD, tienen que ESTADO FINAL DE LA BASE DE DATOS.
ser devueltos a su estado anterior,
ya que la transacción T2 modificó A=12; Y=16; X=15; Sum=62
los mismos en estado activo. ESTADO T1:INICIADA, FALLIDA
PROCESO DE RECUPERACIÓN
COMO LA TRANSACCIÓN T2 FALLÓ DESPUÉS DE EJECUTADA LA
INSTRUCCIÓN 6, LOS VALORES DE X E Y FUERON ESCRITOS EN LA BASE DE
DATOS, YA QUE LOS ESCRIBIR SE EJECUTAN DE FORMA INMEDIATA POR LO
TANTO EL PROCESO DE RECUPERACIÓN SE REALIZA DE LA SIGUIENTE
MANERA:
- SE RECORRE LA BITÁCORA .
- COMO LA TRANSACCIÓN T1 TIENE ENTRADA COMMIT SIGNIFICA QUE SE
EJECUTÓ EXITOSAMENTE. PARA LAS ESCRITURAS INMEDIATAS TODOS
LOS CAMBIOS EN LOS DATOS SE GRABAN SIMULTÁNEAMENTESE EN LA
BITÁCORA Y EN LA BASE DE DATOS. COMO LA TRANSACCIÓN T1 EJECUTÓ
EL COMMIT (FUE CONFIRMADA) NO SE DESAHACE.
- EN CAMBIO LA TRANSACCIÓN T2 NO EJECUTÓ EL COMMIT, POR LO TANTO
NO SE EJECUTÓ CON ÉXITO Y POR ENDE NO TIENE ENTRADA COMMIT;
ENTONCES SE TIENEN QUE DEVOLVER LOS VALORES NUEVOS DE LOS
ESCRIBIR CORRESPONDIENTES A LOS VALORES X E Y A SU ESTADO
ANTERIOR.
ESTADO INICIAL DE LA BASE DE DATOS CUANDO SE COMENZÓ LA EJECUCIÓN DE T2.

A=12; Y=11; X=20; Sum=62


ESTADO FINAL DE LA BASE DE DATOS CUANDO SE PRODUJO LA FALLA DE T2.
A=12; Y=16; X=15; Sum=62
LOS VALORES DE X E Y SE DEBEN DESAHACER DE LA SIGUIENTE MANERA:
SE BUSCA EN LA BITÁCORA LAS ENTRADAS ESCRIBIR PARA X E Y EN T2 LAS
CUALES SON: <ESCRIBIR,T2,X,20,15>
<ESCRIBIR,T2,Y,11,16>
VALOR ANTERIOR VALOR NUEVO

-SE CAMBIA EL NUEVO VALOR DE X=15 GRABADO EN LA BASE DE DATOS POR


SU VALOR ANTERIOR X=20.
- SE CAMBIA EL NUEVO VALOR DE Y=16 GRABADO EN LA BASE DE DATOS POR
SU VALOR ANTERIOR Y=11. POR LO TANTO EL ESTADO FINAL DE LA BASE DE
DATOS LUEGO DE LA RECUPERACIÓN ES EL SIGUIENTE:

A=12; Y=11; X=20; Sum=62


CONCLUSIONES
- LA TRANSACCIÓN T1 SE EJECUTÓ EXITOSAMENTE (EJECUTÓ EL COMMIT
FUE CONFIRMADA), POR LO TANTO, LOS CAMBIOS O ESCRITURAS DE LOS
NUEVOS VALORES DE SUM, A e Y EN LA BASE DE DATOS SON
PERMANENTES; ES DECIR, NO SE DESHACEN. CON ESTO SE GARANTIZA LA
PROPIEDAD DE ATOMICIDAD Y CONSISTENCIA. ¿POR QUÉ?
- LA TRANSACCIÓN T2 FALLÓ PERO COMO SE TRATA DE UNA ESCRITURA
INMEDIANTA, ES DECIR, LA EJECUCIÓN DE LA INSTRUCCIÓN WRITE
MODIFICA LOS ELEMENTOS DE DATOS EN LA DE BD ANTES QUE T2
EJECUTE EL COMMIT O SEA CONFIRMADA, POR ENDE MODIFICA LA BASE
DE DATOS EN ESTADO ACTIVO, LO QUE CAUSA QUE TODAS LAS
OPERACIONES ESCRIBIR TENGAN QUE DESHACERSE.
- LA BITÁCORA DE TRANSACCIONES JUEGA UN PAPEL ESENCIAL, YA QUE
REGISTRA O GRABA TODOS LOS VALORES ANTERIORES DE LOS DATOS,
PARA QUE NO SE PIERDAN, EN VISTA QUE SON CAMBIADOS POR LOS
VALORES NUEVOS EN LA BD.
Técnicas de Recuperación de Fallos
Técnica basada en la Actualización Diferida
•La información almacenada en la bitácora asociada a una transacción se utiliza
para la ejecución de las escrituras diferidas, es decir, solo se graban las
actualizaciones (escrituras) de los datos en la bitácora y no en la BD; esto quiere
decir que no se actualiza la base de datos de manera inmediata sino que la
actualización de los valores nuevos de las operaciones escribir se realizarán
posteriormente (al final del día, cada dos días, etc.)
•Si se presenta una falla de transacción, solo las transacciones que ejecutan el
commit actualizan la BD; las operaciones de las transacciones fallidas se ignoran
en el momento de la recuperación.
•Se necesitan solo los valores nuevos de los elementos de datos, ya que los
mismos se rehacen o actualizan sus valores en la BD en el proceso de
actualización diferida o de recuperación ante una falla. Por lo tanto una operación
REHACER consiste en lo siguiente:
Técnicas de Recuperación de Fallos
Técnica basada en la Actualización Diferida

Rehacer T implica rehacer cada uno de los valores nuevos de las operaciones
escribir de las transacciones con entrada COMMIT solamente, a partir de las
anotaciones en bitácora empezando por la primera. Ejemplo:

< ESCRIBIR, T, X, valor_anterior, valor_nuevo >

Rehacer (< ESCRIBIR, T, X, 10, 5 >)  Se cambia el valor de X=10 por el


valor de X = 5 en la BD.

A continuación se desarrollará el ejemplo anterior aplicando esta técnica.


EJEMPLO EJECUCIÓN DE T1.
T1 T2
ESTADO INICIAL DE LA BASE DE DATOS.
Inicio Inicio
(1) Leer(Sum) (1) Leer(X) A=10; Y=10; X=20; Sum=50
(2) Leer(A) (2) Leer(Y) ESTADO T1:INICIADA
(3) Leer(Y) (3) X=X-5 ANOTACIONES EN BITÁCORA:
(4) A=A+2 (4) Y=Y+5 ...
(5) Y=Y+1 (5) Escribir (X) <INICIAR,T1>
(6) Sum=Sum+A <LEER,T1,SUM>
(6) Escribir(Y) FALLA!! <LEER,T1,A>
(7) Escribir(A) Commit <LEER,T1,Y>
(8) Escribir(Y) <ESCRIBIR,T1,A, 10, 12>
(9) Escribir(Sum) <ESCRIBIR,T1,Y, 10, 11>
Commit <ESCRIBIR, T1,SUM,50,62>
El orden de ejecución es T1 y luego <COMMIT T1>
T2. La transacción T1 se ejecutó
exitosamente (ejecutó el commit), El estado final es igual
los valores Y, A y SUM se van a al estado inicial, ya
actualizar en la BD en el proceso de ESTADO FINAL DE LA BASE DE DATOS.
que no se actualizan
recuperación. (Se Rehacen tales A=10; Y=10; X=20; Sum=50 los valores Y, A y SUM
valores en la BD) en la BD sino en la
ESTADO T1:INICIADA, CONFIRMADA
Bitácora.
EJEMPLO Nº 1 EJECUCIÓN DE T2.
T1 T2 ESTADO INICIAL DE LA BASE DE DATOS.
Inicio Inicio A=10; Y=10; X=20; Sum=50
(1) Leer(Sum) (1) Leer(X) ESTADO
... T2:INICIADA
(2) Leer(A) (2) Leer(Y) ANOTACIONES EN BITÁCORA:
(3) Leer(Y) (3) X=X-5 <INICIAR,T1>
(4) A=A+2 (4) Y=Y+5 <LEER,T1,SUM>
(5) Y=Y+1 <LEER,T1,A>
(5) Escribir (X)
(6) Sum=Sum+A <LEER,T1,Y>
(6) Escribir(Y) FALLA!! <ESCRIBIR,T1,A, 10, 12>
(7) Escribir(A) Commit <ESCRIBIR,T1,Y, 10, 11>
(8) Escribir(Y) <ESCRIBIR, T1,SUM,50,62>
(9) Escribir(Sum) <COMMIT T1>
Commit <INICIAR,T2>
La transacción T2 falla luego de <LEER,T2,X>
ejecutar la instrucción 6, es decir, no <LEER,T2,Y>
ejecutó el commit por lo tanto, los <ESCRIBIR,T2,X,20,15>
valores nuevos de las operaciones <ESCRIBIR,T2,Y,11,16> El estado final es igual
escribir serán ignorados al momento al estado inicial, ya
de la actualización diferida o durante ESTADO FINAL DE LA BASE DE DATOS. que no se actualizan
el proceso de recuperación cuando A=10; Y=10; X=20; Sum=50 los valores X e Y en la
se presenta una falla. ESTADO T1:INICIADA, FALLIDA BD sino en la Bitácora.
PROCESO DE RECUPERACIÓN
- LA TRANSACCIÓN T1 EJECUTÓ EL COMMIT (ESTADO CONFIRMADA), POR
ENDE LOS NUEVOS VALORES ESCRITOS EN BITÁCORA DE Y=11, A=12 Y
SUM=62 SERÁN ACTUALIZADOS EN LA BD.
- LA TRANSACCIÓN T2 NO ESJECUTÓ EL COMMIT (ESTADO FALLIDA), POR
ENDE LOS NUEVOS VALORES ESCRITOS EN BITÁCORA DE Y=16 e X=15 NO
SERÁN ACTUALIZADOS EN LA BD.
POR LO TANTO EL PROCESO DE RECUPERACIÓN SE REALIZA DE LA
SIGUIENTE MANERA:
- SE RECORRE LA BITÁCORA. COMO LA TRANSACCIÓN T1 TIENE ENTRADA
COMMIT SIGNIFICA QUE SE EJECUTÓ EXITOSAMENTE. TODOS LOS
VALORES NUEVOS DE LAS ESCRITURAS SERÁN ACTUALIZADOS EN LA BD.
SE APLICA LA OPERACIÓN REHACER(A,Y,SUM).
- EN CAMBIO LA TRANSACCIÓN T2 RESULTÓ FALLIDA, POR LO TANTO, LOS
NUEVOS VALORES DE X e Y DE LAS OPERACIONES ESCRIBIR NO TENDRÁN
NINGÚN EFECTO EN LA BD (SERÁN IGNORADAS). A CONTINUACIÓN SE
MOSTRARÁ TAL PROCESO:
ESTADO INICIAL DE LA BASE DE DATOS CUANDO SE COMENZÓ LA EJECUCIÓN DEL PLAN.
A=10; Y=10; X=20; Sum=50
LOS VALORES DE A, Y, SUM SE DEBEN REHACER DE LA SIGUIENTE MANERA:
SE BUSCA EN LA BITÁCORA LAS ENTRADAS ESCRIBIR PARA A, Y, SUM EN T1
LAS CUALES SON: <ESCRIBIR,T1,A, 10, 12>
<ESCRIBIR,T1,Y, 10, 11>
<ESCRIBIR, T1,SUM,50,62>
VALOR ANTERIOR VALOR NUEVO

-SE CAMBIA EN LA BD EL NUEVO VALOR DE A=10 GRABADO EN LA BITÁCORA


POR A=12.
- SE CAMBIA EN LA BD EL NUEVO VALOR DE Y=10 GRABADO EN LA BITÁCORA
POR Y=11.
- SE CAMBIA EN LA BD EL NUEVO VALOR DE SUM=50 GRABADO EN LA
BITÁCORA POR SUM=62. SE OMITEN LOS CAMBIOS REALIZADOS POR T2, POR
LO TANTO EL ESTADO FINAL DE LA BASE DE DATOS LUEGO DE LA
RECUPERACIÓN ES EL SIGUIENTE:
A=12; Y=11; X=20; Sum=62
CONCLUSIONES
- LA TRANSACCIÓN T1 SE EJECUTÓ EXITOSAMENTE (EJECUTÓ EL COMMIT
FUE CONFIRMADA), POR LO TANTO, LOS CAMBIOS O ESCRITURAS DE LOS
NUEVOS VALORES DE SUM, A e Y EN LA BITÁCORA SERÁN ACTUALIZADOS
EN LA BASE DE DATOS; ES DECIR, SE REHACEN. CON ESTO SE GARANTIZA
LA PROPIEDAD DE ATOMICIDAD, CONSISTENCIA Y DURABILIDAD.
- LOS CAMBIOS REGISTRADOS EN BITÁCORA POR LA TRANSACCIÓN T2
SERÁN IGNORADOS O LO QUE ES LO MISMO, NO TENDRÁN EFECTO EN LA
BASE DE DATOS.
- LAS TRANSACCIONES QUE FUERON INTERRUMPIDAS POR UN FALLO
PUEDEN REINICIARSE DESPUÉS DE RECUPERADO EL SISTEMA, YA QUE EL
MANEJADOR DE TRANSACCIONES POSEE REGISTROS QUE GUARDAN
INFORMACIÓN DE LAS TRANSACCIONES QUE NO SE EJECUTARON CON
ÉXITO.

También podría gustarte