Procesamiento de Transacciones
Procesamiento de Transacciones
Procesamiento de Transacciones
Las opciones de procesamiento de transacciones son las mismas para SQL que para PL/SQL. Las operaciones para manejo de transacciones son: SET TRANSACTION inicializa una transaccin y define las caractersticas clave. COMMIT Finaliza la transaccin actual salvando los cambios en la base de datos e iniciando una nueva transaccin. ROLLBACK Finaliza la transaccin actual, descartando los cambios realizados en la base de datos. SAVEPOINT Define un punto intermedio para que la transaccin pueda realizar rollbacks parciales. SET TRANSACTION Este comando es utilizado para definir el inicio de una transaccin. Alguno de los efectos que se puede lograr con el set transaction es que la transaccin pueda ser definida de solo lectura (readonly). Ejemplos del uso del comando son: SET TRANSACTION READ ONLY;
SET TRANSACTION READ WRITE; COMMIT Este comando representa el punto del tiempo donde el usuario ha realizado una serie de cambio lgicos que se han agrupado y que dado que no ha habido errores, el usuario est listo para salvar su trabajo. De forma implcita se inicia una nueva transaccin luego del COMMIT.
Es importante saber que cuando el usuario sale de SQL*Plus se ejecuta un COMMIT automtico, de igual forma cuando ejecuta un comando de definicin de datos. COMMIT;
COMMIT WORK; ROLLBACK Si el usuario se diera cuenta en cualquier punto de la transaccin que cometi un error, puede descartar los cambios hechos en la base de datos utilizando el ROLLBACK. Luego del ROLLBACK, se inicia una nueva transaccin. Siempre se ejecuta un rollback cuando ocurre un error en la ejecucin o bien cuando el comando es finalizado con CTRL.+C.
ROLLBACK;
ROLLBACK WORK; SAVEPOINT En algunos casos tenemos transacciones muy grandes o que envuelven la modificacin de muchos datos, y no se desea reversar la misma por haber tenido un pequeo error en la ejecucin del ltimo comando. Los savepoints permiten dividir el trabajo de la transaccin diferentes segmentos. De esta forma el usuario puede ejecutar rollbacks para un savepoint solamente, dejando los cambios previos intactos. Veamos un ejemplo: UPDATE spanky.products SET quantity = 55 WHERE product# = 59495; SAVEPOINT A1; UPDATE spanky.products SET quantity = 504; ROLLBACK TO SAVEPOINT A1; COMMIT; En el anterior ejemplo los cambios realizado por el segundo UPDATE no son salvados cuando se realiza el COMMIT, dado que el ROLLBACK anterior a este los revierte.
Recuerde que la base de datos provee de los mecanismos de bloqueo para que solo un usuario pueda modificar a la vez un registro de la base de datos. Otro aspecto importante, para el caso de PL/SQL, es que el inicio de un bloque no define el inicio de una transaccin.
Transaccin Una transaccin es una unidad lgica de trabajo, la cual no necesariamente consta de una sola operacin en la base de datos; ms bien, es en general una secuencia de varias de esas operaciones mediante la cual un estado consistente de la base de datos se transforma en otro estado consistente, sin conservar por fuerza la consistencia en todos los puntos intermedios. El punto importante aqu es asegurar que la base de datos regresa a un estado consistente al fin de la ejecucin de una transaccin. Una transaccin es tambin la invocacin a un procedimiento remoto (RPC) que ejecuta un conjunto de operaciones sobre una base de datos bajo el principio de todo o nada.
El concepto fundamental aqu es la nocin de ?ejecucin consistente? o ?procesamiento confiable? asociada con el concepto de una consulta. El concepto transaccin es usado dentro del dominio de la base de datos como una unidad bsica de cmputo consistente y confiable.
Ejemplo 3.1: Considere la siguiente consulta en SQL para implementar el 10% del presupuesto del proyecto ?CAD/CAM? de la base de datos ?J?.
UPDATE J
WHEREJNOMBRE = ?CAD/CAM?
Esta consulta puede ser especificada, usando la notacin de SQL, como una transaccin otorgndole un nombre:
Begin_transaction ACTUALIZA_PRESUPUESTO
begin
UPDATE J
WHEREJNOMBRE = ?CAD/CAM?
End.
Ejemplo 3.2: Considere una agencia de reservaciones para lneas areas con las siguientes relaciones.
Una versin simplificada de una reservacin tpica puede ser implementada mediante la siguiente transaccin:
Begin_transaction RESERVACION
begin
EXEC SQL
UPDATE FLIGHT
SETSTSOLD = STSOLD + 1
WHEREFNO = flight_no
ANDDATE = date
EXEC SQL
INSERT
End.
TIPOS DE TRANSACCIONES Transacciones simples. Todas las operaciones se llevan acabo en el mismo nivel dentro de una T
La Transaccin empieza con un begin_transaction y termina ya sea con un commit_transaction o abort_transaction. Toda la transaccin es indivisible.
En un principio las Transacciones simples fueron suficientes por su sencillez y por su adaptacin a operaciones bancarias breves. Actualmente las Transacciones han incursionado en todas las facetas de la computacin pero no han resultado lo ms adecuado, ya que tienen un comportamiento:
Frgil: En transacciones de negocios que se extienden por perodos largos. Dbil: En procesamiento por lotes. Nulo:Situaciones que requieren dar marcha atrs.
Una Transaccin simple no dura ms de dos o tres segundo para evitar monopolizar recursos crticos del sistema como candados sobre la base de datos. As que los programas OLTP se dividen en transacciones breves ejecutadas una tras otra para producir resultados. Transacciones simples distribuidas. Una T simple puede correr en sitios mltiples y actualizar recursos localizados dentro de administradores de recursos mltiples. Transacciones encadenadas (syncpoint, encadenadas y sagas). Un syncpoint es un punto de sincronizacin que permite el guardado peridico del trabajo acumulado dentro de una transaccin, permitiendo de esta forma dar marcha atrs al trabajo sin, abortar la transaccin. Sin embargo este trabajo no es almacenado permanentemente, por lo que si el sistema se colapsa el trabajo se pierde. Las transacciones encadenadas son una variacin de los syncpoint que convierten en durable el trabajo acumulado. Las sagas extienden las transacciones encadenadas a fin de dar marcha atrs a una cadena entera si es necesario. Transacciones anidadas. Ofrecen la posibilidad de definir transacciones dentro de otras transacciones. cada subtransaccin puede emitir una grabacin o retroceso para las piezas de trabajo asignadas. TIPOS DE PROCESAMIENTO DE TRANSACCIONES Existe una clasificacin para el procesamiento de transacciones: TP ligero (TP lite) el cual se limita a integrar monitores TP a los administradores de BD. TP pesado (TP heavy) en donde los monitores TP extienden la nocin de transaccin a todos los recursos usados para el procesamiento de transacciones.