Operaciones
Transacciones
Bases de Datos Ingeniera Tcnica en Informtica de Sistemas Ingenier T Inform
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
Introduccin Introducci 2
ndice
Concepto de Transaccin Estados de las Transacciones Transacciones en SQL
Concepto de Transaccin
Transacciones Bases de Datos Ingeniera Tcnica en Informtica de Sistemas Ingenier T Inform 3
Introduccin Introducci
Definicin Definici
Una Transaccin es un unidad de la ejecucin de un programa que accede y, posiblemente, actualiza varios elementos 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)
Propiedades ACID
Propiedades de las transacciones que debe mantener el sistema de base de datos para garantizar la integridad de los datos Atomicidad: O se realizan adecuadamente, en la base de datos, todas las operaciones de la transaccin o no se realiza ninguna de ellas Consistencia: La ejecucin aislada de la transaccin (es decir, sin otra transaccin que se ejecute concurrentemente) conserva la consistencia de la base de datos
Concepto de Transaccin Transacci
Concepto de Transaccin Transacci
Propiedades ACID
Propiedades de las transacciones que debe mantener el sistema de base de datos para garantizar la integridad de los datos Aislamiento: Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza cada transaccin ignora al resto de transacciones (para cada Ti el resto de Tj no ha comenzado o ya ha acabado) Durabilidad: Tras la finalizacin con xito de una transaccin, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema
Ejemplo Propiedades ACID
Sistema Bancario simplificado Constituido por varias cuentas y un conjunto de transacciones que acceden y actualizan dichas cuentas Base de datos residente en disco pero con una porcin de la misma en memoria principal Ti: leer(A); A := A - 50; escribir(A); leer(B); B := B + 50; escribir(B);
Acceso a travs de dos operaciones: leer(X) y escribir(x) (transfiere el dato X desde la Base de Datos/memoria intermedia local de la transaccin a una memoria intermedia local de la transaccin/Base de Datos)
7 Concepto de Transaccin Transacci 8
Concepto de Transaccin Transacci
Ejemplo P-ACID: Atomicidad PAntes de ejecutar Ti: El valor de A es 1000 y el valor de B es 2000
Ti: leer(A); A := A - 50; escribir(A); leer(B); B := B + 50;
Estado Inconsistente
Hay que asegurarse que las inconsistencias no sean visibles en un sistema de base de datos Un sistema puede alcanzar en algn momento un estado inconsistente Incluso si Ti se ejecuta completamente existe un momento en que la base de datos est en estado inconsistente Los estados inconsistentes slo deben aparecen durante la ejecucin de la transacciones La responsabilidad de asegurar la atomicidad es del sistema de base de datos (en concreto del componente de gestin de transacciones)
9 Concepto de Transaccin Transacci 10
Durante la ejecucin de Ti: Se produce un fallo que impide que la transaccin finalice con xito (fallos de alimentacin, fallos de hardware, errores software, etc.) Valores reflejados en la Base de Datos: El valor de A es 950 y el valor de B es 2000
escribir(B);
El estado del sistema deja de reflejar el estado real del mundo que se supone que modela estado inconsistente
Concepto de Transaccin Transacci
Ejemplo P-ACID: Consistencia PEl requisito de consistencia es que la suma de A y B no se vea alterada al ejecutar la transaccin Si una base de datos es consistente antes de ejecutar una transaccin, tiene que seguir sindolo despus de ejecutar dicha transaccin
Ejemplo P-ACID: Aislamiento PIncluso tras asegurar las propiedades de atomicidad y consistencia para cada transaccin pueden ocurrir problemas si varias transacciones concurrentes entrelazaran sus operaciones de modo no deseado (produciendo un estado inconsistente)
Ti: leer(A); A := A - 50; escribir(A); leer(B); B := B + 50;
una segunda transaccin que modifique A y/o B (a porcentaje)
La responsabilidad de asegurar la consistencia es del programador que codifica la transaccin (la comprobacin de las restricciones de integridad puede ayudar)
Concepto de Transaccin Transacci 11
escribir(B);
La Base de Datos puede quedar en un estado inconsistente aunque las dos transacciones terminen
Concepto de Transaccin Transacci 12
Concurrencia
Una solucin al problema de la concurrencia de transacciones es la ejecucin secuencial de estas (pero a costa de rendimiento)
Ejemplo P-ACID: Durabilidad PUna vez que se completa con xito la ejecucin de una transaccin no puede suceder que un fallo del sistema produzca la prdida de datos Las modificaciones realizadas por la transaccin se guardan en disco antes de finalizar la transaccin La informacin guardada en disco de las modificaciones realizadas por transaccin es suficiente para reconstruir dichas modificaciones La responsabilidad de asegurar la durabilidad es del sistema de base de datos (en concreto del componente de gestin de recuperaciones)
13 Concepto de Transaccin Transacci 14
Condi ciones
La responsabilidad de asegurar el aislamiento es del sistema de base de datos (en concreto del componente de control de concurrencias)
Concepto de Transaccin Transacci
Responsabilidades
La responsabilidad de asegurar la atomicidad es del sistema de base de datos (componente de gestin de transacciones) La responsabilidad de asegurar la consistencia es del programador que codifica la transaccin La responsabilidad de asegurar el aislamiento es del sistema de base de datos (componente de control de concurrencias) La responsabilidad de asegurar la durabilidad es del sistema de base de datos (componente de gestin de recuperaciones)
Concepto de Transaccin Transacci 15
Estados de las Transacciones
Transacciones Bases de Datos Ingeniera Tcnica en Informtica de Sistemas Ingenier T Inform
Transaccin Comprometida Transacci
Una transaccin que termina su ejecucin con xito se dice que est comprometida
Transaccin Abortada Transacci
Una transaccin que no termina su ejecucin con xito se dice que est abortada Para asegurar la atomicidad, las transacciones abortadas no deben tener efecto sobre el estado de la base de datos cualquier cambio que haya hecho la transaccin abortada debe deshacerse
Una transaccin comprometida que haya hecho modificaciones transforma la base de datos llevndola a un nueva estado consistente, que permanece incluso si hay fallo en el sistema En ausencia de fallos, todas las transacciones se completan con xito
Estado de las Transacciones 17
Una vez deshechos los cambios de una transaccin abortada se dice que la transaccin se ha retrocedido
Estado de las Transacciones
18
Transaccin Compensadora Transacci
Una vez que una transaccin se ha comprometido no se pueden deshacer sus efectos abortndola slo se pueden invertir sus efectos mediante una transaccin compensadora
Modelo de Transaccin Transacci
Una transaccin debe estar en uno de los siguientes estados: Activa (estado inicial): la transaccin permanece en este estado durante su ejecucin Parcialmente Comprometida: la transaccin pasa a este estado cuando acaba de realizar la ltima instruccin Fallida: la transaccin pasa a este estado tras descubrir que no puede continuar la ejecucin normal Abortada: la transaccin pasa a este estado despus de haber restablecido la base de datos a su estado anterior Comprometida: la transaccin pasa a este estado tras completarse con xito
No siempre se puede crear una transaccin compensadora asociada a cada transaccin a realizar queda a responsabilidad del usuario
Estado de las Transacciones
19
Estado de las Transacciones
20
Diagrama de Estados
Parcialmente Comprometida Comprometida
Escritura Externa Observable
Hay que tener cuidado cuando se trabaja con terminales o impresoras cuando una escritura as tiene lugar no puede borrarse puesto que puede haber sido vista fuera del sistema de base de datos Muchos sistemas slo permiten este tipo de escritura despus de que la transaccin halla llegado al estado comprometida
Activa
transaccin terminada
Fallida
Abortada reiniciar o cancelar
Entonces, si hay una transaccin larga, no se pueden mostrar datos de evolucin? compromete la atomicidad
21 Estado de las Transacciones 22
Estado de las Transacciones
Norma SQL
Transacciones en SQL
Transacciones Bases de Datos Ingeniera Tcnica en Informtica de Sistemas Ingenier T Inform
En la norma SQL el comienzo de una transaccin se especifica explcitamente (usualmente begin/start transaction) Las transacciones terminan con una de las siguientes instrucciones: commit work (compromete la transaccin actual rollback work (provoca que la transaccin aborte la palabra clave work es opcional
Si el programa termina sin ninguna de estas rdenes, los cambios se comprometen o abortan segn indique cada sistema
24
Transacciones en SQL