Вы находитесь на странице: 1из 5

5.1.

Conceptos bsicos Desde el punto de vista del usuario la interaccin con la base de datos se lleva a cabo mediante operaciones con significado en el modelo semntico (por ejemplo, una transferencia de fondos en un banco). Desde el punto de vista de la base de datos estas operaciones pueden estar formadas por varias operaciones elementales (por ejemplo, quitar fondos de una cuenta y aadrselos a otra). Se llama Transaccin a una coleccin de operaciones que forman una unidad lgica de trabajo en una BD realizada por una o ms sentencias SQL estrechamente relacionadas. Una transaccin es una unidad de la ejecucin de un programa que lee y escribe datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transaccin est delimitada por instrucciones de inicio transaccin y fin transaccin (la transaccin consiste en todas las operaciones que se ejecutan entre inicio transaccin y fin transaccin). El concepto de transaccin se desarroll para atender los casos en los que el estado resultante de la base de datos depende del xito completo en una serie de operaciones. Este concepto vio la luz debido a que varias operaciones sucesivas pueden modificar el resultado de operaciones anteriores. En esos casos, si alguna operacin produce un error, el estado resultante puede ser indeterminado. Para solucionar este problema, las transacciones agrupan una serie de operaciones de manera que es posible garantizar la integridad del resultado final. O todas las operaciones se ejecutan con xito y se confirman (se escriben en la base de datos), o toda la transaccin se considera no realizada. La accin de cancelar una transaccin se denomina deshacer la transaccin. Deshacer una transaccin permite anular los cambios y recuperar el estado de la base de datos previo a la transaccin. Por ejemplo, en una transaccin bancaria automatizada, si un banco transfiere dinero desde la cuenta A a la cuenta B, la retirada de fondos de A y el depsito en B deben producirse con xito para procesar los fondos correctamente, de lo contrario la transaccin entera debe cancelarse. Esquematizando el proceso de transacciones tenemos que: O se ejecutan todas las operaciones que componen la transaccin, o no se realiza ninguna.

En SQL xito Begin transacction Instruccin 1 Instruccin 2 ... Commit work End transacction Fracaso Begin transacction Instruccin 1 Instruccin 2 ... Rollback work End transacction

Pgina 1 de 5

5.2. Propiedades de la Transaccin Una unidad lgica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser calificada como transaccin. 1. Atomicity : Una Transaccin (Tx) se ejecuta completamente de otra manera se eliminan los cambios parciales realizados. Begin Transaction - Programa - End Transaction Responsable: El mtodo de recuperacin, de no completar todas las operaciones, devuelve la BD a su estado anterior a empezar esa Tx (rollback). 2. Coherencia: Asegura que los datos que observamos no cambian (por otros usuarios) hasta que acabemos la Transaccin, despus de terminar una transaccin la base de datos no viola ninguna de sus reglas: valores obligatorios, claves nicas, etc. Responsable: los programadores mediante la definicin adecuada de la integridad referencial: check, triggers, primary key, foreign key, 3. Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen, una Transaccin en ejecucin no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar. Ms aun, si varias transacciones, se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado secuencialmente, esto se conoce como seriabilidad debido a que su resultado es la capacidad de volver a cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban despus de realizar transacciones originales. Responsable: el mtodo de concurrencia: mecanismos, reglas, protocolos 4. Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas. Responsable: el mtodo o gestor de recuperacin.

Pgina 2 de 5

Estados y operaciones de una transaccin Control de transacciones en Oracle Inicio de transaccin Cuando no hay ya una transaccin en progreso, y se ejecuta una sentencia LDD o LMD (interactivamente o dentro de una aplicacin) Cada sentencia LDD es tratada como una transaccin No existe sentencia de tipo BEGIN TRANSACTION Fin de transaccin COMMIT: Finaliza la transaccin actual y hace permanentes (confirma) los cambios realizados ROLLBACK: Finaliza la transaccin actual y deshace los cambios realizados Sentencia COMMIT Una sentencia COMMIT marca el final de una transaccin correcta, implcita o definida por el usuario. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transaccin sean parte permanente de la base de datos, y adems, libera los recursos mantenidos por la conexin. Su sintaxis es la siguiente: COMMIT COMMENT 'mensaje' | FORCE 'texto'] COMMENT sirve para comentar la transaccin en un mximo 255 caracteres. FORCE fuera de modo manual una transaccin dudosa y es de uso exclusivo en sistemas distribuidos de base de datos. Sentencia SAVEPOINT Esta sentencia permite crear un punto de restauracin dentro de una transaccin, es decir, un punto al que podremos retroceder deshaciendo todo lo hecho deshaciendo todo lo hecho desde l en adelante. Su sintaxis es la siguiente SAVEPOINT nombrePuntoRestauracin; Sentencia ROLLBACK Seala el final sin xito de una transaccin, elimina todas las modificaciones de datos realizadas desde el inicio de la transaccin y tambin libera los recursos que retiene la transaccin. Su sintaxis es la siguiente: ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauracin | FORCE 'texto'];

Pgina 3 de 5

5.3. Grados de consistencia Consistencia es un trmino ms amplio que el de integridad. Podra definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad tambin se pierde la consistencia. Pero la consistencia tambin puede perderse por razones de funcionamiento. Una transaccin finalizada (confirmada parcialmente) puede no confirmarse definitivamente (consistencia). Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos. Si se anula los cambios que ha efectuado son deshechos. La ejecucin de una transaccin debe conducir a un estado de la base de datos consistente (que cumple todas las restricciones de integridad definidas). Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos. Si se anula los cambios que ha efectuado son deshechos. Una transaccin que termina con xito se dice que est comprometida (commited), una transaccin que haya sido comprometida llevar a la base de datos a un nuevo estado consistente que debe permanecer incluso si hay un fallo en el sistema. En cualquier momento una transaccin slo puede estar en uno de los siguientes estados. Activa (Active): el estado inicial; la transaccin permanece en este estado durante su ejecucin. Parcialmente comprometida (Uncommited): Despus de ejecutarse la ltima transaccin. Fallida (Failed): tras descubrir que no se puede continuar la ejecucin normal. Abortada (Rolled Back): despus de haber retrocedido la transaccin y restablecido la base de datos a su estado anterior al comienzo de la transaccin. Comprometida (Commited): tras completarse con xito. Aspectos relacionados al procesamiento de transacciones Los siguientes son los aspectos ms importantes relacionados con el procesamiento de transacciones: Modelo de estructura de transacciones. Es importante considerar si las transacciones son planas o pueden estar anidadas. Consistencia de la base de datos interna. Los algoritmos de control de datos semntico tienen que satisfacer siempre las restricciones de integridad cuando una transaccin pretende hacer un commit. Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicacin entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las Pgina 4 de 5

transacciones. As tambin, se requieren protocolos para la recuperacin local y para efectuar los compromisos (commit) globales. Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecucin de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas. Protocolos de control de rplicas. El control de rplicas se refiere a cmo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA). 5.4. Niveles de aislamiento Las transacciones especifican un nivel de aislamiento que define el grado en que se debe aislar una transaccin de las modificaciones de recursos o datos realizadas por otras transacciones. Los niveles de aislamiento se describen en cuanto a los efectos secundarios de la simultaneidad que se permiten, como las lecturas desfasadas o ficticias. Control de los niveles de aislamiento de transaccin: Controla si se realizan bloqueos cuando se leen los datos y qu tipos de bloqueos se solicitan. Duracin de los bloqueos de lectura. El nivel de aislamiento para una sesin SQL establece el comportamiento de los bloqueos para las instrucciones SQL. El estndar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en funcin de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son: Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podra usarse una versin anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento. Lectura norepetible. Una transaccin vuelve a leer datos que previamente haba ledo y encuentra que han sido modificados o eliminados por una transaccin cursada. Lectura fantasma. Una transaccin vuelve a ejecutar una consulta, devolviendo un conjuto de registros que satisfacen una condicin de bsqueda y encuentra que otros registro que satisfacen la condicin han sido insertadas por otra transaccin cursada. Los niveles de aislamiento SQL son definidos basados en si ellos permiten a cada uno de los eventos definidos anteriormente. Es interesante notar que el estndar SQL no impone un esquema de cierre especfico o confiere por mandato comportamientos particulares, pero ms bien describe estos niveles de aislamiento en trminos de estos teniendo muchos mecanismos de cierre/coincidencia, que dependen del evento de lectura.

Pgina 5 de 5

Вам также может понравиться