Documente Academic
Documente Profesional
Documente Cultură
Agenda
Transacciones y control de concurrencia
Propiedades Estados Programacin de transacciones
Modelo Transaccional Simple Test de Secuencialidad Protocolos de bloqueo de dos fases Protocolo basado en marcas temporales Protocolos basados en grafos Protocolos de rbol Protocolos basado en validacin Granularidad Mltiple
Transaccin Es una unidad de la ejecucin de un programa. Puede consistir en varias operaciones de acceso a la base de datos. Est delimitada por constructuras como begin-transaction y end-transaction
Transaccin
Aislamiento: para cada par de transacciones que puedan ejecutarse concurrentemente Ti y Tj, se cumple que para los efectos de Ti: Tj: ha terminado antes que comience Ti Tj ha comenzado despus que termine Ti. Las transacciones son independientes entre s.
Niveles de aislamiento Lectura no comprometida Lectura comprometida. Lectura repetible Secuenciable. Comportamiento concurrente transacciones
Lectura sucia Lectura no repetible Lectura fantasma
de
las
Tiempo
1 2 3 4 5 6 7 8
T1
T2
Begin_transaction Read(balx) Balx=balx +100
Balx
100 100 100 200 200 100 190 190
Write(balx) Rollback
Tiempo
1 2 3 4 5 6
T1
Begin_transaction Read(balx) Balx=balx -10 Write(balx) commit
T2
Begin_transaction Read(balx) Balx=balx +100 Write(balx) commit
Balx
100 100 100 200 90 90
Comportamiento permitido Nivel de aislamiento Lectura sucia Lectura no repetible Si Si Lectura fantasma Si Si
Lectura repetible
Secuenciable
No
No
No
No
Si
No
Modelo transaccional simple Una transaccin es una secuencia de instrucciones LOCK y UNLOCK. LOCK asume una lectura de un elemento y UNLOCK una escritura. La secuencialidad en este modelo simple implica secuencialidad en modelos ms complejos.
Semntica de transacciones
Es el significado de la ejecucin de la transaccin (qu hace). Para disear protocolos y planificadores es necesario relacionar la semntica (informal) de las transacciones con un test que determine si una secuencia de pasos de transacciones entrelazadas es secuenciable.
Primero: ver que la semntica es apropiada (conservadora: puede prohibir planificaciones que sean secuenciables pero no permite las que no lo sean).
Segundo: se hace corresponder la semntica con un grafo de ejecucin que permite decidir si una planificacin es secuenciable.
Control de concurrencia El proceso de gestionar una serie de operaciones simultneas en la base de datos de modo que ests no interfieran unas con otras. Sin este tipo de mecanismos, pueden producirse los problemas de la actualizacin perdida, de la dependencia no confirmada y del anlisis incoherente
Problemas de concurrencia
La ejecucin concurrente de transacciones puede dar lugar a problemas: Problema de la actualizacin perdida
sucia)
Problema del resumen incorrecto
Problemas de concurrencia
Sol. trivial: cada transaccin se ejecuta en exclusin mutua. Cul sera la granularidad? BD? Tabla? Tupla? Atributo? La solucin trivial no es vlida: muy restrictiva Se supone que las BDs se pensaron para que varios usuarios/aplicaciones accedieran a la vez
Hay que intercalar acciones pero que el resultado sea como en exclusin mutua
Tiempo
1 2 3 4 5 6
T1
Begin_transaction Read(balx) Balx=balx -10 Write(balx) commit
T2
Begin_transaction Read(balx) Balx=balx +100 Write(balx) commit
Balx
100 100 100 200 90 90
Tiempo
1 2 3 4 5 6
T1
T2
Begin_transaction Read(balx) Balx=balx +100
Balx
100 100 100 200 200 100 190 190
Write(balx) roolback
Serializabilidad y recuperabilidad
El objetivo de un protocolo de control de concurrencia es planificar las transacciones de forma tal que se evite cualquier interferencia entre ellas, impidindose as que aparezcan los tipos de problemas descritos. Planificacin: una secuencia de las operaciones realizadas por un conjunto de transacciones concurrentes que preservan el orden de las operaciones en cada una de las transacciones individuales.
Planificaciones
Planificacin: una secuencia de las operaciones realizadas por un conjunto de transacciones concurrentes que preservan el orden de las operaciones en cada una de las transacciones individuales.
Planificacin en serie: una planificacin en la que cada una de las operaciones de cada transaccin se ejecutan consecutivamente sin que se entrelacen operaciones de otras transacciones. Planificacin no serie: una planificacin en la que las operaciones de un conjunto de transacciones concurrentes estn entrelazadas.
Condiciones de la serializacin
En lo que respecta a la serializabilidad, la ordenacin de las transacciones de lectura y escritura es importante:
Si dos transacciones nicamente leen en un determinado elemento de datos, no entran en conflicto entre s y el orden no es importante. Si hay dos transacciones que leen o escriben elementos de datos completamente independientes, no entran en conflicto entre s y el orden no es importante. Si una de las transacciones escribe un elemento de datos y otra lee o escribe el mismo elemento, el orden de ejecucin si que es importante.
Test de secuencialidad
Para determinar si un planificador es correcto, se demuestra que cada planificacin que admite es secuenciable.
Se examina la planificacin con respecto al orden en que se bloquean elementos. Este orden debe ser consistente con la planificacin secuencial equivalente. Si hay dos secuencias con rdenes diferentes de transacciones, estos dos rdenes no son consistentes con una planificacin secuencial.
Test de secuencialidad
Si hay dos secuencias con rdenes diferentes de transacciones, estos dos rdenes no son consistentes con una planificacin secuencial. El problema se reduce a la bsqueda de ciclos en un grafo dirigido
Test de secuencialidad
Algoritmo: Entrada: Una planificacin S para las transacciones T1,..,Tk. Salida: Determina si S es secuenciable y, si lo es, produce una planificacin secuencial equivalente a S.
Test de secuencialidad Algoritmo: Mtodo: Creacin de un grafo de secuencializacin G cuyos nodos son transacciones. S=a1;a2;..;an ai es Tj: LOCK Am o Tj: UNLOCK Am Dado ai= Tj: UNLOCK Am se busca Ts: LOCK Am en el orden de S tal que s<>j. Entonces, el arco <Tj,Ts> pertenece a G.
Test de secuencialidad
Tiempo
1 2 3 4 5 6 7 8 9
T1
Begin_transaction Read(balx)
T2
T3
10
commit
Entornos concurrentes
Considrense las dos transacciones siguientes:
Entornos concurrentes
Bloqueo
Basado en hora de entrada
Bloqueos Un bloqueo es una informacin del tipo de acceso que se permite a un elemento. El SGBD impone los bloqueos necesarios en cada momento. El gestor de acceso a los datos implementa las restricciones de acceso.
Control de concurrencia Bloqueo Cuando una Transaccin deba asegurarse que algn objeto sobre el que tenga inters (una tupla) no cambiar mientras lo use, adquiere un Bloqueo sobre ese objeto Dos tipos de Bloqueos: Exclusivos (de escritura) Compartidos (de lectura)
Control de concurrencia
Bloqueo Si la
Transaccin A pone un bloqueo exclusivo Lock_e(dato) sobre la tupla t -> se rechaza el pedido de cualquier otra transaccin para un bloqueo de cualquier tipo sobre t Si la Transaccin A pone un bloqueo compartido Lock_c(dato) sobre la tupla t: se rechaza el pedido de cualquier otra transaccin para un bloqueo exclusivo sobre t se acepta el pedido de cualquier otra transaccin para un bloqueo compartido sobre t
Control de concurrencia
Protocolo de Bloqueo Una Transaccin que desea recuperar una tupla t, primero debe adquirir un bloqueo compartido sobre t
Una Transaccin que desea actualizar una tupla t, primero debe adquirir un bloqueo exclusivo sobre t
Si el bloqueo pedido por una Transaccin B se rechaza porque conflicta con un bloqueo de la Transaccin A , entonces B pasa a espera hasta que se libere el bloqueo de A Las transacciones piden lo que necesitan.
existir
Control de concurrencia
Deadlock (Abrazo Mortal) Situacin en la que dos o ms transacciones se encuentran en estado simultneo de espera Si ocurre Deadlock el sistema lo debe detectar y romper La deteccin implica descubrir un ciclo en el grafo de espera (el grafo de quin est esperando a quin) La ruptura implica seleccionar una transaccin bloqueada mortalmente como vctima y deshacerla (liberando as su bloqueo)
Control de concurrencia
Deadlock lock_e(b) Read(b) b := b + 50 write(b) lock_e(a)
Protocolo de bloqueo estricto de 2 fases: exige que una Ti debe poseer todos los bloqueos que tenga en X hasta que acaben las instrucciones de la Ti.
Protocolo de bloqueo riguroso de 2 fases: exige que Ti posea todos los bloqueos hasta que se comprometa la Ti. Con este protocolo se pueden secuenciar las Tis en el orden en que se comprometen.
el ms utilizado
ms
restrictivo
que
el
8
9 10
Balx=balx-10
Write(balx) Commit/unlock(balx)
200
190 190
8
9 10
Balx=balx-10
Write(balx) Commit/unlock(balx)
190
190 190
Ventajas: asegura ausencia interbloqueos no necesita retrocesos desbloqueos se pueden hacer antes Desventajas: se bloquean datos a los que no se accede aumento del coste de los bloqueos tiempos de espera adicionales descenso potencial de la concurrencia
Granularidad mltiple
A veces conviene agrupar varios Qs y tratarlos como una unidad individual de sincronizacin. Hace falta mecanismo que permita al sistema definir mltiples niveles de granularidad se puede hacer uno permitiendo que los elementos de datos sean de varios tamaos y definiendo una jerarqua de granularidades de datos las granularidades pequeas estaran anidadas dentro de otras ms grandes.
Granularidad mltiple
Una jerarqua se puede representar con un rbol. Un nodo interno del rbol de granularidad mltiple representa los datos que se asocian con sus descendientes. Se puede bloquear individual cada nodo del rbol en C o X Cuando Ti bloquea un nodo en el modo que sea, hace lo mismo implcitamente con los descendientes de ese nodo.
Granularidad mltiple
Granularidad mltiple
Recuperacin
Cadas del sistema durante una transaccin Errores de ejecucin: overflow, divisin por 0... Errores lgicos que violan alguna regla de integridad (definida explcitamente o no) y que dejan inconsistente la BD -> programador/ABD Problemas de concurrencia de transacciones Fallos de lectura/escritura en disco Problemas fsicos y catstrofes: fuego, robos, sabotajes,
Recuperacin
Cadas del sistema durante una transaccin Errores de ejecucin: overflow, divisin por 0... Errores lgicos que violan alguna regla de integridad (definida explcitamente o no) y que dejan inconsistente la BD -> programador/ABD Problemas de concurrencia de transacciones
Recuperacin
Para que el sistema se pueda recuperar ante fallos se necesita grabar cada operacin con la BD en un fichero