You are on page 1of 4

Protocolo de compromisos

Para garantizar la atomicidad, es preciso que todas las localidades en las que se haya ejecutado la transacción T coincidan en el resultado final de la ejecución. T debe quedar ejecutada o abortada en todas las localidades. Para garantizar esta propiedad, el coordinador de transacciones encargado de T debe ejecutar un protocolo de compromiso. Compromiso de dos-fases Sea T una transacción que se inicio en la localidad Li, y sea Ci, el coordinador de transacciones de esa localidad. El protocolo de compromiso Cuando T termina de ejecutarse, es decir, cuando todas las localidades en las que se ejecuto T informan a Ci que T llegó a su término, Ci inicia el protocolo de compromiso de dos-fases.

• Fase1 . Ci añade el registro < preparar T> a la bitácora y la graba en memoria estable. Una vez hecho esto envía un mensaje de preparar T a todas las localidades en las que se ejecutó T. Al recibir el mensaje, el gestor de transacciones de cada una de esas localidades determina si esta dispuesto a ejecutar la parte de t que le correspondió. Si no está dispuesto, éste añade un registro < no T> la bitácora y a continuación enviará un mensaje abortar T a Ci. Si la respuesta es afirmativa agregará un registro < T lista > a la bitácora y grabará todos los registros de bitácora que corresponden a T en memoria estable. Una vez hecho esto, responderá a Ci con el mensaje T lista .

• Fase2 . Una vez que todas las localidades hayan respondido al mensaje preparar T enviado a Ci, o después de un intervalo de tiempo, previamente especificado, Ci puede determinar si la transacción T puede ejecutarse o abortarse. Si Ci recibió el mensaje Tlista de todas las localidades que participan, la transacción T puede ejecutarse. En caso contrario, la transacción T debe abortarse. Según haya sido el veredicto, se agregará un registro < ejecutar T> o < abortar T> a la bitácora y se grabará en memoria estable. En este punto, el destino de la transacción se habrá sellado. A continuación, el coordinador enviará un mensaje < ejecutar T> o < abortar T> a todas las localidades participantes. Al recibir este mensaje, cada una de las localidades lo registra en la bitácora.

Según [Elmasri / Navathe] Para fines de recuperación, el sistema necesita mantenerse al tanto de cuándo la transacción se inicia, termina y se confirma o aborta. Así pues, el gestor de recuperación se mantiene al tanto de las siguientes operaciones:

en este punto puede ser necesario verificar si los cambios introducidos por la transacción se pueden aplicar permanentemente a la base de datos (confirmar) o si la transacción debe abortarse porque viola el control de concurrencia o por alguna otra razón. • REHACER: Ésta especifica que ciertas operaciones de transacción de deben repetir (rehacer) para asegurar que todas las operaciones de una transacción confirmada se hayan aplicado con éxito a la base de datos. • FIN_DE_TRANSACCIÓN : Ésta especifica que las operaciones de LEER y ESCRIBIR de la transacción han terminado y marca el límite de la ejecución de la transacción. La figura 3. Una transacción entra en un . • LEER o ESCRIBIR : Éstas especifican operaciones de lectura o escritura de elementos de la base de datos que se efectúan como parte de una transacción.18 muestra el diagrama de transición de estados que describe el paso de una transacción por sus estados de ejecución. Además de las anteriores. algunas técnicas de recuperación requieren operaciones adicionales como las siguientes: • DESHACER: Similar a revertir. • CONFIRMAR _ TRANSACCIÓN: Ésta señala que la transacción terminó con éxito y que cualesquier cambios (actualizaciones) ejecutadas por ella se pueden confirmar sin peligro en la base de datos y que no se cancelarán. pero se aplica a una sola operación y no a una transacción completa. • REVERTIR (o ABORTAR) : Ésta indica que la transacción terminó sin éxito y que cualesquier cambios o efectos que pueda haber aplicado a la base de datos se deben cancelar. Sin embargo.• INICIO_DE_TRANSACCIÓN : Ésta marca el principio de la ejecución de la transacción.

Las transacciones fallidas o abortadas pueden reiniciarse posteriormente. en este punto puede ser necesario verificar si los cambios introducidos por la transacción se pueden aplicar permanentemente a la base de datos (confirmar) o si la transacción debe abortarse porque viola el control de concurrencia o por alguna otra razón. algunas técnicas de recuperación requieren operaciones adicionales como las siguientes: • DESHACER: Similar a revertir. En este punto. el gestor de recuperación se mantiene al tanto de las siguientes operaciones: • INICIO_DE_TRANSACCIÓN : Ésta marca el principio de la ejecución de la transacción. Resumen Para fines de recuperación. y ahí puede emitir operaciones LEER y ESCRIBIR. se dice que la transacción ha llegado a su punto a su punto de confirmación y pasa al estado confirmado. Sin embargo. • CONFIRMAR _ TRANSACCIÓN: Ésta señala que la transacción terminó con éxito y que cualesquier cambios (actualizaciones) ejecutadas por ella se pueden confirmar sin peligro en la base de datos y que no se cancelarán. ya sea en forma automática o después de reintroducirse como transacciones nuevas. Una vez que una transacción esta en el estado confirmado. termina y se confirma o aborta. Así pues. Sin embargo. el sistema necesita mantenerse al tanto de cuándo la transacción se inicia. El estado terminado corresponde al abandono del sistema por parte de la transacción. pero se aplica a una sola operación y no a una transacción completa. ha concluido con éxito su ejecución. algunas técnicas de control de concurrencia requieren que se efectúen ciertas verificaciones para garantizar que la transacción no interfiera otras transacciones en ejecución. Cuando la transacción termina. • REVERTIR (o ABORTAR) : Ésta indica que la transacción terminó sin éxito y que cualesquier cambios o efectos que pueda haber aplicado a la base de datos se deben cancelar. • LEER o ESCRIBIR : Éstas especifican operaciones de lectura o escritura de elementos de la base de datos que se efectúan como parte de una transacción. . una transacción puede pasar al estado fallido si una de las verificaciones falla o si la transacción se aborta mientras está en el estado activo. Una vez realizadas con éxito las verificaciones. Además de las anteriores.estado activo inmediatamente después de que inicia su ejecución. • FIN_DE_TRANSACCIÓN : Ésta especifica que las operaciones de LEER y ESCRIBIR de la transacción han terminado y marca el límite de la ejecución de la transacción. para al estado parcialmente confirmado.

• REHACER: Ésta especifica que ciertas operaciones de transacción de deben repetir (rehacer) para asegurar que todas las operaciones de una transacción confirmada se hayan aplicado con éxito a la base de datos. .