Академический Документы
Профессиональный Документы
Культура Документы
Transacciones
Outline
Transacciones Ejecuciones Concurrentes Secuencialidad en Cuanto a Conictos Secuencialidad en Cuanto a Vistas Recuperabilidad Transacciones en SQL
Transacciones
Transaccin o
Denicin o Una Transaccin es un conjunto de operaciones que forman una o unica unidad lgica de trabajo. Aunque se realicen varias o operaciones (actualizaciones, consultas, eliminaciones, etc) desde el punto de vista del usuario la operacin es unica. o Ejemplos: Transferencia de fondos, Registrar un pago, matricularse, etc. La transaccin consiste en todas las operaciones que se ejecutan o entre las instrucciones Inicio de Transaccin y Fin de Transaccin o o
Transacciones
Propiedades ACID
Las transacciones deben de cumplir con las siguientes propiedades (ACID) para garantizar la integridad de los datos: Atomicidad: Todas las operaciones se realizan o ninguna Consistencia: Los invariantes de la BD se conservan antes y despus de la ejecucin de la transaccin e o o Aislamiento: No importa que se ejecuten transacciones concurrentemente, desde el punto de vista del usuario lucen secuenciales (unas no afectan la ejecucin de las otras) o Durabilidad: Los cambios comprometidos perduran en el tiempo Por que es importante garantizar estas propiedades? Quien garantiza su cumplimiento?
Transacciones
Transacciones
Ejecuciones Concurrentes
Por qu no permitir solo ejecuciones secuenciales?: e Se hace mejor uso de los recursos de computo Aumento de la productividad (transacciones / u.tiempo) Reduccin de los tiempos de respuesta o Por qu se deben controlar las ejecuciones concurrentes? e Quin se encarga de esta tarea? e
Transacciones
Conceptos
Planicacin: Representan el orden cronolgico en el que se o o ejecutan las instrucciones de diferentes transacciones concurrentes. Ej:
Ti Leer(A) Escribir(B)
Tj Leer(B) Escribir(C)
Leer(C)
Transacciones
Planicacin Secuencial o
Una planicacin es secuencial si las instrucciones de cada o transaccin estn juntas y solo inician cuando terminan las de la o a transaccin anterior. Ej o Ti Leer(A) Escribir(B) Leer(C) Tj Ti Tj Leer(B) Escribir(C)
Leer(B) Escribir(C)
Cuantas posibles planicaciones secuenciales se pueden generar a partir de P? Todas las P. secuenciales que se obtienen mantienen la consistencia?
Carlos A. Olarte (carlosolarte@puj.edu.co) BDII Transacciones
Transacciones
Se dice que la planicacin P es Secuenciable en Cuanto o o Conictos si existe una planicacin secuencial P tal que P y P son equivalentes en cuanto conictos Cuales de las siguientes Planicaciones son SECC? P1 Ti L(A) L(B) E(B) Tj E(A) L(A) L(B) Ti L(A) P2 Tj E(B) E(A) L(C) Ti E(A) P3 Tj E(B) E(C)
Tk
Transacciones
Se puede vericar la secuencialidad en cuanto conictos de una planicacin por medio del siguiente algoritmo: o Construir el grafo de precedencias (G = V , A ) de P, donde V lo conforman el conjunto de transaccin y ai = ti , tj A o si existe un par de instrucciones conictivas entre ti y tj . Si existe un ciclo en el grafo, P no es secuenciable en cuanto conictos Si no hay ciclos, el orden de las transacciones lo determina el orden topolgico del grafo. o
Transacciones
La siguiente planicacin es equivalente en cuanto conictos? o P1 Ti E(A) E(A) En cuanto al resultado observable, aceptar que P fuera a equivalente a la planicacin secuencial Tj , Ti o Tj E(A)
Transacciones
Continuacin o
Para todo recurso Q si Ti lee el valor inicial de Q en P lo debe hacer en P Si Ti lee el valor producido por Tj en P, tambin lo debe e hacer en P Si Ti es la ultima transaccin en efectuar E (Q) para cualquier o Q en P, en P tambin la ultima escritura de Q la debe e efectuar Ti
Transacciones
P2 Tj L(B) E(Q)
Ti L(Q)
Tj L(M)
Tk
Transacciones
Recuperabilidad
Denicin o Una planicacin es Recuperable si para todo par de transacciones o Ti y Tj tal que Tj lee el valor producido por Ti , la operacin de o compromiso de Ti debe ser anterior al compromiso de Tj . Por ejemplo P no es recuperable P Ti L(Q) E(Q) E(B) COMMIT Tj L(Q) COMMIT
Transacciones
Tk
Transacciones en SQL
Las transacciones se comprometen mediante la sentencia COMMIT Las transacciones se retroceden mediante la sentencia ROLLBACK
Transacciones