Documente Academic
Documente Profesional
Documente Cultură
Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es www.lsi.us.es
E.T.S. Ingeniera Informtica
Concurrencia
1.1 1.2
2
CONSISTENCIA DE LA BD ...................................................................................................... 3 PROBLEMAS DE CONCURRENCIA ........................................................................................... 3 DEFINICIONES ...................................................................................................................... 4 PLANES SERIALIZABLES ......................................................................................................... 4 RELACIN DE PRECEDENCIA ENTRE TRANSACCIONES. ........................................................ 5
3.1 ESTRUCTURAS DE DATOS ....................................................................................................... 6 3.2 DEFINICIONES ...................................................................................................................... 6 3.3 ALGORITMO DE BLOQUEO EN DOS-FASES .............................................................................. 7 3.3.1 Correccin de algoritmo......................................................................................................................... 9 3.4 EL ABRAZO MORTAL (DEADLOCK) ....................................................................................... 10 3.4.1 Concepto de abrazo mortal ................................................................................................................. 10 3.4.2 Tratamiento de situaciones de abrazo mortal ................................................................................... 10
4 ALGORITMOS DE ORDENACIN POR TIMESTAMP...................................................................................................... 13
DEFINICIONES .................................................................................................................... 13 ALGORITMOS DE ORDENACIN POR TIMESTAMP TOTAL. .................................................... 13 ALGORITMOS DE ORDENACIN POR TIMESTAMP PARCIAL................................................... 14 ALGORITMOS DE ORDENACIN POR TIMESTAMP MULTIVERSIN. ...................................... 15
ALGORITMOS OPTIMISTAS................................................................................................................................................. 17
Pg. 2 de 18
Concurrencia
1 Introduccin al problema
1.1 Consistencia de la BD
Un esquema de BD incluye la descripcin de los datos y las restricciones de integridad. Las restricciones de integridad (RI) son consistentes en s mismas si no incluyen contradicciones desde el punto de vista semntico. Un estado de la BD es consistente si las RI son consistentes en s mismas y dicho estado no viola las RI (satisface las RI: E=RI(E))
Transaccin T1
LEER x1 X
Transaccin T2
Transaccin T1
LEER x1 X IMPRIMIR x1
Transaccin T2
Transaccin T1
LEER a1 A a 1 1 + a1 ESCRIBIR A a1
Transaccin T2
Transaccin T1
LEER a1 A a 1 1 + a1 ESCRIBIR A a1
Transaccin T2
A=B
A=B
Pg. 3 de 18
Concurrencia
2.1 Definiciones
Es conveniente definir previamente una serie de conceptos bsicos: Grnulo. Unidad de datos controlada individualmente por el subsistema de concurrencia. Accin. Transaccin. Primitiva unitaria de manipulacin de un grnulo tal que ejecutada individualmente por un usuario forzara la integridad del grnulo. Secuencia de acciones T{a1, a2 .. an} ejecutadas por un usuario de modo que se respeta la consistencia de la BD; puede verse como una secuencia de transformaciones tal que si S es un estado consistente (S I), entonces :
( (
))
Concurrencia
Transaccin T1
Transaccin T2
Transaccin T1
Transaccin T2
A=B
LEER a1 A a 1 1 + a1 ESCRIBIR A a1 LEER a2 A a2 2.a2 ESCRIBIR A a2 LEER b1 B b1 1 + b1 ESCRIBIR B b1 LEER b2 B B2 2.b2 ESCRIBIR B b2
A=B
LEER a1 A a 1 1 + a1 ESCRIBIR A a1 LEER b1 B b1 1 + b1 ESCRIBIR B b1
La condicin suficiente anterior puede expresarse como Es condicin suficiente para que un plan S sea serializable que su grafo de precedencia no incluya ciclos. Justificacin. Sea un plan S con un grafo Gs sin ciclos; este grafo representa las relaciones de precedencia que se deben a operaciones no permutables; es posible definir un orden parcial de transacciones asociado a Gs <Ti1, T i2, .. Tin> y reordenar el resto de operaciones permutables con arreglo a l; este orden parcial puede dar lugar a un orden total de transacciones originando una permutacin serial de transacciones, con lo cual S sera serializable.
Pg. 5 de 18
Concurrencia
Tablas de bloqueos.
a1 . A(g) = a j . ak m1 . M p = mj . mk
Por otro lado asociado a un grnulo, puede considerarse el vector Mp donde consten todas las peticiones de bloqueos BLOQUEO(Tp, Mp, g) solicitadas por la transaccin Tp; en l mj=1 si se ha solicitado el modo Mj sobre el grnulo g.
3.2 Definiciones
Modo de operacin. Propiedad que caracteriza a una operacin de manipulacin de datos, determinando su compatibilidad con otras operaciones. p. ej. Son modos lectura, insercin, actualizacin, eliminacin, lectura protegida, etc.
BLOQUEO(Tp, Mp, g)
Especificacin al gestor de tareas de que la transaccin Tp efecte sobre un grnulo g una operacin en modo Mp; cuando se admita, el gestor de tareas bloquear (reservar) g en modo Mp. DESBLOQUEO(Tp,Mp,g) Especificacin al gestor de tareas de la peticin de la transaccin Tp de liberacin del granulo g. Se desbloquear del modo Mp. Pueden considerarse los operadores Booleanos: negacin de un vector Booleano, interseccin de dos vectores, unin de dos vectores, inclusin de vectores, y el producto de matrices lgicas ( ) donde la multiplicacin se sustituye por la interseccin lgica y la suma por la unin lgica.
Modo de operacin: Propiedad que caracteriza a una operacin de manipulacin de datos, determinando su compatibilidad con otras operaciones. p. ej. Son modos lectura, insercin, actualizacin, eliminacin, lectura protegida, etc.
Pg. 6 de 18
Concurrencia
Es posible afirmar que los modos de operacin solicitados durante una operacin primitiva BLOQUEO(Tp,Mp,g) ejecutadas por una transaccin Tp son compatibles con los modos de bloqueo activos sobre un grnulo g debidos a otras transacciones si se cumple ( C A( g ) ) Mp Justificacin: A( g )
C A( g )
Es un vector de bits cuyo bit i = 1 si g est bloqueado en modo mj por alguna transaccin. Es un vector de bits cuyo bit i = 1 si Mj es incompatible con cualquier otro modo de operacin en el que g est bloqueado por alguna transaccin.
( C A( g )
Ser lo contrario de lo anterior, conteniendo 1s todos los modos de operacin compatibles con los modos de bloqueo solicitados por la transaccin.
Entonces cualquier vector M incluido en el anterior corresponder a la combinacin de modos admisibles por el grnulo g en el estado en que se encuentra antes de que Tp solicite sus peticiones de bloqueo. Cuando los modos solicitados no son compatibles se generar una cola de espera Q(g) sobre el grnulo g (grnulo ocupado) de transacciones en espera hasta que dicho grnulo quede disponible; esta cola estar ordenada normalmente por esquemas de prioridades de transacciones o en su defecto por orden de llegada. A la cola se le asociar el vector M y el identificador de cada transaccin <i, M>.
Bloqueo(Tj1,Mj1,g)
Bloqueo(Tjs,Mjs,g)
Desbloqueo(Tp,Mp,g,) Bloqueo ganado A(g) =
Bloqueo(Tp,Mp,g)
Espera Q(g)
j Bloqueo(Tj,Mj, g)
,
Pg. 7 de 18
Concurrencia
A continuacin se especifican las primitivas de bloqueo y desbloqueo implcitas en las operaciones de manipulacin de la base de datos en funcin de los modos de bloqueo asociados a cada operacin (lectura, actualizacin, eliminacin, etc.). Las primitivas se activarn al recibir peticiones de una transaccin Tp.
Sea V 0 un vector de bits con todos los componentes a cero. Se utilizar para inicializar la tabla de bloqueos del grnulo A(g). BLOQUEO (Tp, Mp, g ) Si A( g ) / A( g ) = V 0; Si Mp ( C A( g ) A( g ) =A( g ) Mp
'El vector de bloqueo solicitado es compatible 'Se aade (suma booleana de vectores) Mp al estado de bloqueo del grnulo; 'Tp gana bloqueo 'Se aade Tp , Mp a la cola de espera Q(g) del grnulo; Tp queda en espera
DESBLOQUEO (Tp , Mp , g ) A ( g ) = M j
j p
'El vector de bloqueo T q es ahora compatible 'Se aade M q al estado de bloqueo del grnulo ; T q gana bloqueo 'T q sale del estado de espera
FIN DESBLOQU EO ()
Fig. 9. Algoritmo de bloqueo en dos fases. Procedimiento DESBLOQUEO
Generalmente, al final de una transaccin se provocar el desbloqueo de todos los grnulos accedidos. La implementacin de stas dos acciones puede ser automtica (responsabilidad del SGBD) o bien explcita en las transacciones, incluyndose como sentencias en las interfases con el DBMS de los lenguajes de programacin.
Pg. 8 de 18
Concurrencia
3.3.1
Correccin de algoritmo Transaccin que bloquea en los modos correctos de operacin todos los grnulos accedidos antes de una operacin sobre ellos y los desbloquea despus de dicha operacin. Transaccin bien formada que no ejecuta un BLOQUEO despus de haber ejecutado un DESBLOQUEO.
Pueden formularse las siguientes reglas asociadas al protocolo de bloqueo en dos fases: R1 R2 R3 Cada transaccin debe ejecutar un BLOQUEO con los modos de operacin correctos sobre los grnulos a acceder antes de ejecutar una operacin sobre dichos grnulos. Cada transaccin debe ejecutar un DESBLOQUEO sobre los grnulos bloqueados despus de operar sobre ellos. Una transaccin no puede ejecutar un BLOQUEO despus de emitir un DESBLOQUEO .
N de grnulos bloqueados
El nmero de grnulos bloqueados crece en la primera fase hasta un mximo y en la segunda fase decrece hasta la liberacin si la transaccin termina con xito.
1 FASE Comienzo Tp 2 FASE Fin Tp
En estas condiciones Cada plan de una transaccin bien formada en dos-fases es serializable. Justificacin . Sea {T1, T2, ..Tn} un conjunto de transacciones en dos fases; asumiendo la existencia de un circuito en su grafo de precedencia Ti1 < Ti2 < < Tin < Ti1 puede afirmarse que : Ti2 bloquea el granulo gi1 despus de que Ti1 lo desbloquea. Ti3 bloquea el granulo gi2 despus de que Ti2 lo desbloquea. . . Ti1 bloquea el granulo gin despus de que Tin lo desbloquea. ya que cada transaccin es en dos-fases desbloquearn slo despus de que han completado todos sus BLOQUEOS, luego Ti1 desbloquea gi1 antes de ejecutar el BLOQUEO sobre gin luego Ti1 no es en dosfases, lo que contradice la hiptesis inicial. Pg. 9 de 18
Concurrencia
T1 Bloqueo(g1,upd)
Grafo de espera. Grafo G(T, W) donde T es un conjunto de transacciones activas {T1, T2, ..Tn} compartiendo grnulos {G1, G2, ..Gm} y W es la relacin de espera definida como sigue: Tp espera a Tq si Tp demanda el bloqueo de un grnulo Gi y dicha operacin no puede realizarse porque Gi est bloqueada por Tq. 3.4.2 Tratamiento de situaciones de abrazo mortal Existen dos enfoques de tratamiento de la situacin: prevencin y deteccin.
Prevencin del abrazo mortal Consiste en evitar una de las situaciones que fuerzan la situacin cuando se disea el algoritmo de control de concurrencia. Una posibilidad es la ordenacin previa de transacciones usando timestamp2; se conocen dos enfoques DIE-WAIT y WOUND-WAIT.
DIE-WAIT. Solo la transaccin ms vieja puede esperar por una transaccin ms joven (con mayor timestamp de inicio); es decir Ti espera por Tj si i < j y se aborta en otros casos (muere la transaccin ms joven). Cuando una transaccin muere, se reinicia con el mismo timestamp; as tarde o temprano pasar a ser la transaccin activa ms vieja y por tanto no morir. Esto garantiza la ausencia de circuitos en un grafo de espera y en el entorno de BD de rollback permanente.
Pg. 10 de 18
Concurrencia
WOUND-WAIT. Es el inverso del mtodo anterior; en este caso, slo una transaccin ms joven puede esperar por una transaccin ms vieja: Ti espera por Tj si i > j. Para evitar el rollback permanente, la transaccin que solicita el BLOQUEO de un grnulo bloqueado por una transaccin ms joven, la transaccin ms vieja remplaza a la ms joven que se aborta; as si Ti solicita BLOQUEO de un grnulo g bloqueado por Tj; Tj se mata si i<j y conseguir Ti el BLOQUEO.
Deteccin del abrazo mortal Se presentar un mtodo que comprueba en un grafo de espera la existencia de circuitos, eliminando sucesivamente los vrtices terminales. En un grafo de espera un vrtice es terminal si la transaccin que representa no est esperando para bloquear ningn grnulo. Sea N(k) el nmero de grnulos que la transaccin Tk est esperando bloquear; una reduccin inicial del grafo puede consistir en eliminar aquellos vrtices donde N(k)=0 y a continuacin recalcular los valores de N(k) para la siguiente iteracin, contando las solicitudes que pueden ser satisfechas despus de cada reduccin y decrementando N(k) para cada solicitud de Tk. Este mtodo tiene dos requerimientos especiales: Es necesario marcar las peticiones en un orden tal que no se cuenten ms de una vez Hay que utilizar un procedimiento para comprobar si una peticin es satisfecha, contabilizando los estados de bloqueo de las transacciones que todava no han sido eliminadas del grafo de espera.
N(1)=1 T1 g1 g2 T2
N(2)=3 T4 g3
N(4)=0
g5
T3 T5 N(3)=1 g4
N(5)=0
N(1)=1 T1 g1 g2 T2
N(2)=1
g5
T3 N(3)=1
Pg. 11 de 18
Concurrencia
Sea BLOQUEO-TENTATIVO (Gi,R,K) un procedimiento Booleano que comprueba si la peticin R de la transaccin Tk sobre el grnulo Gi puede ser satisfecha, contabilizando el bloqueo de grnulos realizados por transacciones Tj tales que N(j) 0 (transacciones todava en espera). Este procedimiento devolver true si la peticin puede ser satisfecha y false en caso contrario. El procedimiento es similar al procedimiento del BLOQUEO excepto que no se modificarn los estados de bloqueos de transacciones. Cuando se detecta un abrazo mortal el problema consistir en seleccionar una transaccin a reiniciar. El algoritmo presenta la lista de transacciones en la situacin. Una posible solucin es reiniciar la transaccin involucrada en la situacin que bloquea el mayor nmero de otras transacciones; corresponder a vrtices que tienen un gran nmero de arcos entrantes en le grafo de espera. Para reducir el coste de la deteccin, este algoritmo puede ser invocado slo cuando una transaccin ha estado en espera durante un tiempo lmite (unos pocos segundos); con esto ltimo, el enfoque de deteccin puede ser una solucin aceptable al abrazo mortal; extensible incluso a sistemas distribuidos.
DETECCIN() T:= {Tj tales que N(j) 0} L:= {grnulos bloqueados por Ts T} Para cada G L Para cada peticin R no-marcada de Tk esperando Gi Si BLOQUEO-TENTATIVO(Gi,R,K) = true marcar R N(K) = N(K) 1 Si N(K) = 0 Eliminar Tk de T Aadir los grnulos bloqueados de Tk a L ; Si T= DETECCIN := false sino DETECCIN := true ; FIN DETECCIN();
Fig. 13. Algoritmo de deteccin de abrazo mortal.
Pg. 12 de 18
Concurrencia
Timestamp de grnulo
g es el grnulo accedido por Ti, S(g) es el timestamp del grnulo y ABORTAR es el procedimiento que cusa el rearranque de Ti o Tj. Puede haber un tratamiento diferente en funcin de qu transaccin se aborta (Ti :solicita el grnulo o Tj :tiene el grnulo); en el primer caso Ti debe ser reiniciada con un nuevo timestamp de transaccin i > j, con lo que se eliminar el conflicto con Tj; de cualquier modo, ahora Ti(i=i) podra entrar en conflicto con una nueva transaccin Tj , y as sucesivamente. En el segundo caso Tj debe reiniciarse con el mismo timestamp; un rearranque de Tj requerir la restauracin de todos los grnulos accedidos por ella.
Pg. 13 de 18
Concurrencia
Puede darse una situacin conflictiva conocida como efecto domin, que sucede cuando las actualizaciones de Tj fueron ledas por otras transacciones; estas transacciones deben ser reiniciadas, es decir, abortar Tj puede generar una situacin donde una actualizacin realizada por Tj es deshecha mientras que su efecto fue visible por una transaccin Tk, lo cual puede requerir que tambin se aborte Tk, pudiendo generarse esta situacin en cadena. Esta situacin se resuelve provocando una ordenacin de los COMMIT s de las transacciones de acuerdo con el timestamp de las mismas.
Pg. 14 de 18
Concurrencia
ESCRIBIR (Ti:transaccin, g:grnulo) j:= ndice de la ltima versin de g; Mientras SWj (g) > i j:= ndice de la versin previa de g; Fin Mientras; Si SRj(g) > i ABORTAR sino FIN ESCRIBIR ()
Crear nueva versin i de g despus de la versin j ; Fig. 16. Algoritmo de ordenacin por timestamp multiversin.
Por ejemplo para un grnulo g que ha sido sucesivamente actualizado por T1, T5 y T10 y recuperado por transacciones T7 y T11 tendra la siguiente tabla de versiones: Grnulo g
SW 1 5 5 10 10
SR 1 5 7 10 11
Versin 1 5 5 10 10
De este modo es posible establecer el orden adecuado de operaciones de lectura respecto a operaciones de escritura sin tener que abortar ni reiniciar transacciones; para ello es suficiente con suministrar a una transaccin Ti que solicita una lectura del grnulo g con la versin cuyo timestamp de escritura del grnulo es inmediatamente inferior o igual a i.
Pg. 15 de 18
Concurrencia
Si una transaccin Ti requiere una lectura del grnulo, se le suministrar la versin inmediatamente inferior. Para tratar las escrituras de una Ti se insertarn nuevas versiones creadas por las transacciones justo despus de encontrar un timestamp de escritura del grnulo inmediatamente ms bajo, Vi. Si, de cualquier modo, antes de las acciones de escritura de Ti, una transaccin Tk con timestamp k>i ha leido Vi, entonces alguna de las dos debe ser abortada (Ti o Tk ); es imposible escribir en el pasado (en el sentido de rehacer desde ese momento) sin rehacer sus consecuencias (este pasado fue visto por otras transacciones). De cualquier modo Tk puede ser abortada solo si no haba terminado; normalmente es preferible reiniciar Ti con un nuevo timestamp i (i>i) y as evitar rehacer el pasado que se confirm. Anlisis de casos de transacciones concurrentes Caso 1. T6 solicita el grnulo g en lectura. La tabla de versiones no se ve afectada por esta operacin, ya que se suministrara la versin 5 del grnulo cuyo timestamp de lectura es SR=7, mayor que 6 que es el timestamp de T6. Caso 2. T8 solicita el grnulo g en lectura. La tabla de versiones anterior se ve modificada, pues segn el algoritmo de lectura, hay que otorgar la versin 5, modificndose su timestamp de lectura, pues el valor anterior era SR=7 y se otorga a una transaccin con mayor timestamp. Despus de las dos acciones anteriores, la tabla de versiones quedara: Grnulo g Transaccin T6 T8 Accin Leer Leer SW 5 5 SR 7 8 Versin 5 5 darle la versin el timestamp de Hay que abortar slo si T7 no ha
Caso 3. T6 solicita una escritura sobre el grnulo g; en este caso corresponder inmediatamente anterior, versin 5 con timestamps SW=5, SR=7, cumplindose que lectura del grnulo es mayor (T7 vi esta versin) que el timestamp de la transaccin (T6). alguna transaccin en vuelo (T6 o T7 segn el algoritmo, pudiendo elegir entre las dos alcanzado el commit). Caso 3a. Se aborta T7 y se reinicia con el mismo timestamp Grnulo g Transaccin Accin SW SR T6 Escribir 6 6 T7 ABORT T7 Leer 6 7 Versin 6 6
Caso 3b. Se aborta T6 y se reinicia con timestamp superior a la ltima versin existente. Grnulo g Transaccin Accin SW SR Versin T6 ABORT T12 antiguaT6 Restart T12 Escribir 12 12 12
Fig. 20.- Situacin de versiones al abortar la transaccin que solicita la escritura.
Pg. 16 de 18
Concurrencia
5 Algoritmos optimistas.
Los algoritmos de ordenacin por timestamp verifican el correcto ordenamiento de las transacciones sobre cada acceso a los grnulos al igual que los algoritmos de bloqueo; estos dos tipos de algoritmos implementan un control a priori. Si el gestor de tareas se disea de modo que deje mayor libertad a las transacciones y realiza un control de las mismas, en vez de durante su ejecucin en tiempo de confirmacin de cambios a la BD se est barajando la idea bsica de los mtodos optimistas de control de concurrencia. Los algoritmos optimistas consideran que todas las transacciones preparan sus actualizaciones en buffers privados durante la ejecucin; al finalizar, antes de la confirmacin todas las actualizaciones deben sufrir un proceso de certificacin (o validacin). Certificacin. Accin especial que controla que la confirmacin de actualizaciones de una transaccin en la BD preserva la serializabilidad. Si la transaccin es certificada las actualizaciones preparadas se harn visibles a otras transacciones, y si falla la transaccin se abortar. En definitiva, con un control optimista de la concurrencia, una transaccin sufrir tres fases: fase de lectura, donde se preparan actualizaciones en reas de trabajo privadas de las transacciones, fase de certificacin y la posible fase de escritura.
El problema principal de estos mtodos es la eleccin del algoritmo de certificacin donde el orden de serializacin estar determinado por el orden de certificacin. En esta fase se deber comprobar que una transaccin validada Ti ha visto todas las modificaciones de las precedentes transacciones que tambin lo han sido; dicho de otro modo, todos los grnulos ledos por Ti no deben haber sido escritos por cualquier otra transaccin Tj certificada entre el comienzo de Ti y la certificacin de Tj. El algoritmo mantendr los conjuntos de timestamp de lectura y escritura de cada transaccin sobre los grnulos SR(Ti) y SW(Ti); se aceptar una validacin de Ti si SR(Ti) SW(Tj) = ,Tj certificada durante la fase de lectura de Ti . En la siguiente figura se propone un algoritmo de certificacin; ste puede rechazar una transaccin que no viola el orden de serializabilidad.
Pg. 17 de 18
Concurrencia
INICIO_TRANSACCIN (Ti :transaccin) SR(Ti) := SW(Ti) := despus(Ti) := contador_certificacin FIN INICIO_TRANSACCIN () CERTIFICACIN (Ti :transaccin) Para t = despus (Ti) + 1 hasta contador _certificacin Si SR(Ti) SW(t) ABORTAR(Ti) ; FIN Para; Si No abortada Ti contador _certificacin := contador _certificacin + 1 CONFIRMACIN (Ti); FIN CERTIFICACIN () CONFIRMACIN (Ti :transaccin) Para cada g SW(Ti) ESCRIBIR (g); FIN CONFIRMACIN ()
Fig. 22. Algoritmo de certificacin.
As, el algoritmo de certificacin puede ser mejorado rechazando menos transacciones utilizando timestamp de grnulos. Los algoritmos de certificacin sufren el inconveniente de tener que deshacer al finalizar las transacciones, lo cual se puede agravar cuando, permanentemente, transacciones largas sufren a consecuencia de transacciones cortas. Puede afirmarse que los algoritmos optimistas son aceptables slo en el contexto de transacciones muy cortas con baja probabilidad de conflicto. Tambin se pueden considerar eficientes en conjuncin con algoritmos de recuperacin del tipo NO-UNDO.
Pg. 18 de 18