14. Control de la concurrencia

Anuncio
14. Control de la concurrencia
Objetivos
• Conocer la problemática asociada a la concurrencia de
transacciones en los sistemas de bases de datos
• Entender el significado de la seriabilidad y su aplicación al
control de la concurrencia
• Comprender algunas técnicas para el control de concurrencia
empleadas por el sistema gestor de bases de datos.
Tema 14. Control de la concurrencia
1
14. Control de la concurrencia
Contenidos
1. Introducción y problemas de la concurrencia
2. Seriabilidad de los planes de transacciones
3. Técnicas de control de la concurrencia
4. Granularidad de datos
Anexo 1. Niveles de aislamiento de transacciones en SQL-92
Anexo 2. Acerca del control de la concurrencia en Oracle
Tema 14. Control de la concurrencia
2
1
14. Control de la concurrencia
Bibliografía
[EN 2002] Elmasri, R.; Navathe, S.B.: Fundamentos de Sistemas de Bases de
Datos. 3ª Edición. Addison-Wesley. (Cap. 19 y 20)
[EN 1997] Elmasri, R.; Navathe, S.B.: Sistemas de bases de datos. Conceptos
fundamentales. 2ª Edición. Addison-Wesley Iberoamericana. (Cap.
17 y 18)
[CBS 1998] Connolly, T.; Begg C.; Strachan, A.: Database Systems: A Practical Approach
to Design, Implementation and Management. 2nd Edition. AddisonWesley. (Cap. 17)
Tema 14. Control de la concurrencia
3
14.1 Introducción y problemas de la concurrencia
• Los sistemas de bases de datos, según el número de usuarios que
pueden utilizarlos de forma concurrente, se clasifican en
– monousuario
– multiusuario
• El que varios usuarios puedan usar un mismo equipo a la vez, se
debe a la multiprogramación: el computador puede procesar al
mismo tiempo varias transacciones
– Si el equipo tiene varias CPU, es posible el procesamiento simultáneo de
transacciones
– Si sólo hay una CPU, el SO de multiprogramación reparte el tiempo de
CPU entre los programas: ejecución concurrente intercalada
(*modelo que supondremos*)
Véase figura 1
• Varias transacciones introducidas por los usuarios, que se
ejecutan de manera concurrente, pueden leer/modificar los
mismos elementos almacenados en la base de datos
Tema 14. Control de la concurrencia
4
2
14.1 Introducción y problemas de la concurrencia
¿Por qué es necesario el control de la concurrencia?
• ... porque pueden surgir problemas cuando las transacciones
concurrentes se ejecutan de manera no controlada
• Ejemplo sencillo: sistema de bases de datos que permite hacer y
anular reservas de vuelos
– Se almacena un registro por cada vuelo, que incluye, entre otras cosas, el
número de asientos reservados en el vuelo
– Sean dos transacciones T1 y T2 concurrentes:
§ T1 transfiere N reservas realizadas en un vuelo V_X a otro vuelo V_Y
§ T2 reserva M plazas en el vuelo V_X
Véase figura 2
– Dentro de este sistema de BD, un programa para la reserva o cancelación
de vuelos tiene como parámetros:
§ Los números de vuelos, sus fechas, el número de plazas que reservar/cancelar
– Así que un mismo programa puede usarse para ejecutar muchas
transacciones (ejecución específica de un programa ≈ transacción)
Tema 14. Control de la concurrencia
5
14.1 Introducción y problemas de la concurrencia
Problemas
• La actualización perdida
– T1 y T2 que acceden a los mismos datos, tienen sus operaciones
intercaladas de modo que hacen incorrecto el valor de algún dato
• La actualización temporal (o lectura sucia)
– T1 actualiza un elemento X de la BD y luego falla, pero antes de que se
restaure el valor original de X, T2 tiene acceso al «valor temporal» de X
• El resumen incorrecto
– T1 calcula una función agregada de resumen sobre varios registros,
mientras otras transacciones actualizan dichos registros: puede que T1
considere algunos registros antes de que se actualicen y otros después de
actualizarse.
• La lectura no repetible
– T1 lee un elemento X dos veces y otra transacción T2 modifica dicho X entre
las dos lecturas: T1 recibe diferentes valores para el mismo elemento
Véase figura 3
Tema 14. Control de la concurrencia
6
3
14.2 Seriabilidad de los planes de transacciones
Planes de transacciones
• Un plan es un orden de ejecución de las operaciones de
varias transacciones que se ejecutan de manera concurrente e
intercalada
• Un plan P de n transacciones T1, T2, ..., Tn es un
ordenamiento de las operaciones de las transacciones,
sujeto a la restricción de que
para cada transacción Ti que participa en P,
sus operaciones deben aparecer en P
en el mismo orden en que ocurren en Ti
• En P, las operaciones de otras Tk pueden intercalarse con
las de Ti
Véase figura 4
Tema 14. Control de la concurrencia
7
14.2 Seriabilidad de los planes de transacciones
Operaciones interesantes en un plan de transacciones
• Para fines de control de concurrencia (y recuperación de fallos),
interesa prestar mayor atención a estas operaciones de
transacción:
Operación
LEER_ELEMENTO
ESCRIBIR_ELEMENTO
COMMIT
ROLLBACK
abreviatura
l
e
c
r
• Ejemplo de dos planes de transacciones
Pa: l1(X) ; l2(X) ; e1 (X) ; l1 (Y) ; e2 (X) ; c 2 ; e1(Y) ; c1 ;
Pb: l1(X) ; e1 (X) ; l2 (X) ; e 2(X) ; c2 ; l1 (Y) ; r1 ;
Tema 14. Control de la concurrencia
8
4
14.2 Seriabilidad de los planes de transacciones
Planes y seriabilidad
• Si no se permite la intercalación de operaciones de varias
transacciones, T1 y T2, sólo hay dos formas de ordenar tales
operaciones:
– Ejecutar las operaciones de T1, seguidas de las de T2 en secuencia
– Ejecutar las operaciones de T2, seguidas de las de T1 en secuencia
Véase figuras 4(a) y (b)
• Si se permite la intercalación, existen muchos órdenes posibles
Véase figura 4(c)
¿cuáles
son correctos?
¿existen técnicas de control de concurrencia
que eviten planes incorrectos?
** Teoría de la Seriabilidad **
Tema 14. Control de la concurrencia
9
14.2 Seriabilidad de los planes de transacciones
Planes en serie
• Un plan P es en serie si, para cada transacción T que
participa en el plan, todas sus operaciones se ejecutan
consecutivamente en el plan
– de lo contrario (si hay intercalación), P es un plan no en serie
• si las transacciones son independientes entre sí, todo plan en
serie se considera correcto
– toda transacción es correcta si se ejecuta sin interferencias (propiedad de
Conservación de la Consistencia) y
– Ninguna transacción necesita de otra para ejecutarse (independencia)
Æ no importa cuál se ejecute primero: resultado final correcto
• Pero los planes en serie limitan la concurrencia
Æ en general, son inaceptables en la práctica (ineficiencia)
• Hemos de determinar qué planes no en serie ...
– siempre dan un resultado correcto y
– cuáles pueden dar un resultado erróneo
Tema 14. Control de la concurrencia
10
5
14.2 Seriabilidad de los planes de transacciones
Planes seriables
• Un plan P es seriable si es equivalente a algún plan en
serie de las mismas n transacciones
– Un plan que no es equivalente a ningún plan en serie, es no seriable
• Si un plan no en serie P es seriable, entonces P es correcto
Pero... ¿cuándo son equivalentes dos planes?
§ Si producen el mismo estado final en la base de datos
– Equivalencia por resultados
§ ¿Y si eso se cumple “por casualidad”? --- no sirve!
Véase figura 5, si X=100 (además, son transacciones distintas!!)
§ Si las operaciones sobre cada dato afectado por los planes, se
aplican al elemento en el mismo orden en ambos planes
– Equivalencia por conflictos Å
– Equivalencia de vistas
Tema 14. Control de la concurrencia
11
14.2 Seriabilidad de los planes de transacciones
Operaciones en conflicto dentro de un plan
• Dos operaciones de un plan P están en conflicto si
– pertenecen a diferentes transacciones,
– tienen acceso al mismo elemento X,
– y al menos una de ellas es ESCRIBIR_ELEMENTO(X)
Operaciones en conflicto en Pa:
l1(X) ; l2(X) ; e 1(X) ; l1(Y) ; e2(X) ; c2 ; e1(Y) ; c1;
l1(X) ; l2(X) ; e1(X) ; l1(Y) ; e2(X) ; c2 ; e1(Y) ; c1;
l1(X) ; l2(X) ; e1(X) ; l1(Y) ; e2(X) ; c2 ; e1(Y) ; c 1 ;
Operaciones NO en conflicto en Pa:
l1(X) ; l2(X) ; e1(X) ; l1(Y) ; e2(X) ; c2 ; e 1(Y) ; c1;
l1(X) ; l2(X) ; e1(X) ; l1(Y) ; e2(X) ; c2 ; e1(Y) ; c 1;
etc.
Tema 14. Control de la concurrencia
12
6
14.2 Seriabilidad de los planes de transacciones
Planes seriables por conflictos
• Dos planes son equivalentes por conflictos si el orden de
cualesquiera dos operaciones en conflicto es el mismo en
ambos planes
• Un plan P es seriable por conflictos si es equivalente por
conflictos a algún plan en serie S
– El orden de las operaciones en conflicto en P coincide con el orden en que
se ejecutarían en algún plan en serie
– Podremos reordenar las operaciones de P que no estén en conflicto,
hasta obtener el plan en serie S equivalente a P
» El plan D de la figura 4(c) es equivalente al plan A de la figura 4(a),
así que D es un plan seriable
» El plan C de la figura 4(c) no es equivalente a A ni tampoco a B,
por lo que el plan C no es seriable
Tema 14. Control de la concurrencia
13
14.2 Seriabilidad de los planes de transacciones
Prueba de la seriabilidad por conflictos de un plan
Algoritmo de comprobación de si un plan P es seriable por conflictos
• Considerar operaciones LEER_ELEMENTO y ESCRIBIR_ELEMENTO
• Construir el grafo de precedencia dirigido G=(N, A)
– N = {T 1, T2, ... Tn} conjunto de nodos
§ crear un nodo por cada transacción Ti en P
– A = {a 1, a 2, ... am} conjunto de arcos dirigidos
§ ai = (Tj → Tk), con 1 j n , 1 k n
§ si una operación de Tj aparece en el plan
antes que alguna operación en conflicto
de Tk, crear el arco desde Tj a Tk
Ti
Tj
Tk
Véase figura “Algoritmo”
Tema 14. Control de la concurrencia
14
7
14.2 Seriabilidad de los planes de transacciones
Prueba de la seriabilidad por conflictos de un plan (y 2)
• Si hay un ciclo en el grafo, P no es seriable por conflictos
– Un ciclo es una secuencia de aristas C=((Tj →Tk), (Tk →Tp),... (T i →Tj))
• Si no hay ciclos en el grafo, P es seriable
– es posible crear un plan en serie S equivalente a P, mediante
una ordenación de las transacciones
• Tj → Tk indica que Tj debe ir antes que Tk en un plan en serie
equivalente a P
– pues dos operaciones en conflicto aparecen en dicho orden en P
Véase figuras 6 y 7
Tema 14. Control de la concurrencia
15
14.2 Seriabilidad de los planes de transacciones
Plan de transacciones completo
• Un plan P es completo si ...
1. Las operaciones de P son las de T1, T2, ..., Tn incluida una última
operación de COMMIT o ROLLBACK para cada transacción en el plan
2. Para cualquier par de operaciones de una transacción Ti , su orden de
aparición en P es el mismo que su orden de aparición en Ti
3. Para cualesquiera dos operaciones en conflicto, una de ellas debe
ocurrir antes que la otra en el plan
• Esto permite que dos operaciones que no estén en conflicto,
ocurran en P sin determinar cuál se ejecuta primero
Æ un plan es un orden parcial de las operaciones de n transacciones
– Pero es necesario especificar un orden total entre...
§ cualquier par de operaciones de la misma transacción Ti (condición 2)
§ todo par de operaciones en conflicto (condición 3)
• Nunca contiene transacciones activas al final del plan
– Todas hacen COMMIT o ROLLBACK (condición 1)
Tema 14. Control de la concurrencia
16
8
14.2 Seriabilidad de los planes de transacciones
Proyección confirmada de un plan
• En un sistema de procesamiento de transacciones es difícil
encontrar planes completos, pues continuamente se
introducen transacciones en el sistema
• Así pues... ¿cuándo comienza y termina un plan?
• La teoría de la seriabilidad considera la proyección confirmada
de un plan P, C(P), que incluye sólo las operaciones de P que
pertenecen a transacciones confirmadas
Æ Un plan P es seriable si su proyección confirmada C(P) es
equivalente a algún plan en serie, ya que el SGBD sólo
garantiza las transacciones confirmadas
Tema 14. Control de la concurrencia
17
14.2 Seriabilidad de los planes de transacciones
Aplicaciones de la seriabilidad
• Un plan P seriable, además de ser correcto (como un plan en
serie) permite la concurrencia
• Pero es muy difícil comprobar por anticipado la seriabilidad de P
Planificador de
Tareas del SO
Orden de las
operaciones de
un plan P
• Carga del sistema
• Momento de introducción
de las transacciones
• Prioridades de procesos
( transacciones)
...
• Parece, pues, que ha de comprobarse si el plan P es seriable una
vez ejecutadas la transacciones incluidas en P...
Tema 14. Control de la concurrencia
18
9
14.2 Seriabilidad de los planes de transacciones
Aplicaciones de la seriabilidad (y 2)
Ejecución de
Transacciones
¿P seriable?
NO
SI
Cancelar el
efecto del Plan
¡¡enfoque muy
poco práctico!!
OK
Æ Es necesario encontrar métodos que garanticen la seriabilidad,
sin tener que verificar los planes
Tema 14. Control de la concurrencia
19
14.3 Técnicas de control de concurrencia
• Métodos basados en la teoría de la seriabilidad, que definen
un conjunto de reglas (o protocolo) tal que...
– si todas las transacciones las cumplen, o
– el subsistema de control de concurrencia del SGBD las impone
(automáticamente)
... aseguran la seriabilidad de todo plan de transacciones
• Tipos de protocolos
–
–
–
–
Basados en bloqueos Å
Basados en marcas de tiempo
Técnicas de multiversión
Protocolos optimistas
Tema 14. Control de la concurrencia
20
10
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados
• Un candado...
– Es una variable asociada a un elemento de información X
– Describe su estado respecto a las operaciones aplicables a X
– Sincroniza el acceso al elemento X por parte de
transacciones concurrentes
• El Gestor de Bloqueos (subsistema del SGBD) gestiona y
controla el acceso a los candados
• Tipos de candados
– Candados binarios
– Candados de modo múltiple
Tema 14. Control de la concurrencia
21
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados binarios
• Un candado binario tiene dos estados o valores posibles:
– Bloqueado (1)
– Desbloqueado (0)
§ Si candado(X)=1, ninguna transacción T que solicite X tendrá acceso a X
§ Si candado(X)=0, T podrá acceder a X cuando lo solicite
• Las transacciones deben incluir las operaciones...
– BLOQUEAR(X), para solicitar acceso al elemento X (LOCK)
– DESBLOQUEAR(X), después de usar el elemento X (UNLOCK)
Véase figura 8
Æ Exclusión mutua sobre X
Tema 14. Control de la concurrencia
22
11
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados binarios (y 2)
Reglas en el bloqueo binario
1. T debe emitir BLOQUEAR(X) antes de que se realice cualquier
operación LEER_ELEMENTO(X) o ESCRIBIR_ELEMENTO(X) en T
2. T debe emitir DESBLOQUEAR(X) después de haber completado todas
las operaciones LEER_ELEMENTO(X) y ESCRIBIR_ELEMENTO(X) en T
3. T no emitirá BLOQUEAR(X) si ya bloqueó X (posee su candado)
4. T no emitirá DESBLOQUEAR(X) salvo si posee el bloqueo de X
• Sólo una transacción puede poseer el candado de X
• Dos transacciones no pueden tener acceso concurrente al
mismo elemento
Æ Bastante restrictivo!
Tema 14. Control de la concurrencia
23
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados múltiples
• Un candado de modo múltiple tiene tres estados posibles:
– Bloqueado para lectura
– Bloqueado para escritura
– Desbloqueado
• Las transacciones deben incluir las operaciones...
– BLOQUEAR_LECTURA(X)
– BLOQUEAR_ESCRITURA(X)
– DESBLOQUEAR(X)
• Un elemento X bloqueado para...
– lectura Æ tiene un CANDADO COMPARTIDO : otras T’s pueden leer X
– escritura Æ tiene un CANDADO EXCLUSIVO : T posee X en exclusiva
Véase figura 9
Tema 14. Control de la concurrencia
24
12
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados múltiples (2)
Reglas en el bloqueo de modo múltiple
1. T debe emitir BLOQUEAR_LECTURA(X) o BLOQUEAR_ESCRITURA(X) antes de
que se realice cualquier operación LEER_ELEMENTO(X) en T
2. T debe emitir BLOQUEAR_ESCRITURA(X) antes de realizar cualquier
operación ESCRIBIR_ELEMENTO(X) en T
3. T debe emitir DESBLOQUEAR(X) una vez completadas todas las
operaciones LEER_ELEMENTO(X) y ESCRIBIR_ELEMENTO(X) de T
4. T no emitirá BLOQUEAR_LECTURA(X) si ya posee un candado de lectura
(compartido) o de escritura (exclusivo) para X *puede permitir excepciones*
5. T no emitirá BLOQUEAR_ESCRITURA(X) si ya posee un candado de lectura o
de escritura para el elemento X *esta regla puede permitir excepciones*
6. T no emitirá DESBLOQUEAR(X) salvo si posee un candado de lectura
(compartido) o de escritura (exclusivo) para X
Tema 14. Control de la concurrencia
25
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos: Candados múltiples (y 3)
Excepciones para las reglas 5 y 4
Promoción y Degradación de candados
• Si T emitió BLOQUEAR_LECTURA(X) , luego puede promover el candado
emitiendo BLOQUEAR_ESCRITURA(X)
– OK si T es la única que tiene X bloqueado para lectura,
si no, T debe esperar y reintentarlo después
• Si T emitió BLOQUEAR_ESCRITURA(X) , luego puede degradar el candado
emitiendo BLOQUEAR_LECTURA(X)
– Así permite que otras transacciones lean X
Tema 14. Control de la concurrencia
26
13
14.3 Técnicas de control de concurrencia
Protocolos basados en bloqueos
• El uso de candados para la programación de transacciones no
garantiza la seriabilidad de los planes
Véase figura 10
• Es necesario seguir un protocolo adicional que indique dónde
colocar las operaciones de bloqueo y desbloqueo de
candados dentro de las transacciones
• El protocolo más conocido, que permite emitir de forma adecuada
las operaciones de bloqueo y desbloqueo, es el Protocolo de
Bloqueo en Dos Fases (B2F)
Tema 14. Control de la concurrencia
27
14.3 Técnicas de control de concurrencia
Bloqueo en dos fases básico, B2F
• Una transacción T sigue el protocolo de bloqueo en dos fases
si todas las operaciones de bloqueo preceden a la primera
operación de desbloqueo
Æ De este modo, podemos ver T dividida en dos fases:
– Fase de expansión (o crecimiento)
§ T puede adquirir (o promover) candados
§ T no puede liberar ningún candado
– Fase de contracción
§ T puede liberar candados existentes
§ T no puede adquirir ningún candado
Tema 14. Control de la concurrencia
28
14
14.3 Técnicas de control de concurrencia
Bloqueo en dos fases básico, B2F (2)
• Si se permite promover/degradar candados, ha de variarse la
definición general del protocolo:
– La promoción debe realizarse en la fase de expansión
– Toda degradación de un candado debe realizarse
en la fase de contracción de una transacción
Æ Dentro del código de T, un BLOQUEAR_LECTURA(X) que degrada un
candado de escritura sobre X, sólo puede aparecer en la fase de
contracción de T
Véase figuras 10 y 11
Tema 14. Control de la concurrencia
29
14.3 Técnicas de control de concurrencia
Bloqueo en dos fases básico, B2F (y 3)
• Si toda transacción de un plan sigue el protocolo de
bloqueo en dos fases, entonces el plan es seriable
J
Ya no es necesario comprobar la seriabilidad de los planes
− Al imponer las reglas de bloqueo, también se impone la seriabilidad
L
El B2F puede limitar el grado de concurrencia en un plan
– Es el precio que hay que pagar por garantizar
la seriabilidad de todos los planes sin tener que examinarlos
•
Emplear candados puede provocar problemas de ...
§ Bloqueo mortal (Véase figura 12)
§ Espera indefinida
Tema 14. Control de la concurrencia
30
15
14.3 Técnicas de control de concurrencia
Bloqueo en dos fases conservador o estático
• T debe bloquear todos los elementos a los que tendrá acceso
(lectura o escritura) antes de comenzar a ejecutarse
– Si no es posible bloquear algún elemento, T no bloqueará ninguno y
esperará para reintentarlo más tarde
– Protocolo libre de bloqueo mortal
Bloqueo en dos fases estricto
el más utilizado
• T no libera ningún candado de escritura hasta terminar (con
COMMIT o ROLLBACK)
– Ninguna otra transacción lee o escribe un elemento modificado por
T, salvo si T se ha completado a plan de transacciones estricto
– No libre de bloqueo mortal (salvo si se combina con B2F conservador)
Bloqueo en dos fases riguroso
más restrictivo que el B2F estricto
• T no libera ningún candado hasta terminar (con COMMIT o ROLLBACK)
Tema 14. Control de la concurrencia
31
14.3 Técnicas de control de concurrencia
El problema del bloqueo (o abrazo) mortal
• Cada una de dos o más transacciones espera que otra
libere su candado sobre cierto elemento de información
Véase figura 12
• Para resolver el problema, se puede seguir diferentes enfoques:
Protocolos de prevención del bloqueo mortal
–
–
–
–
–
–
Bloqueo por adelantado
Ordenamiento
Uso de marcas de tiempo de transacción
Protocolo de no esperar
Protocolo de espera cautelosa
Uso de tiempos predefinidos
Protocolos de detección del bloqueo mortal
– Uso de grafos de espera
Tema 14. Control de la concurrencia
32
16
14.3 Técnicas de control de concurrencia
Protocolos de prevención del bloqueo mortal
• Bloqueo por adelantado
– Empleado en el B2F conservador
– Toda T debe bloquear por adelantado todos los elementos que
necesita (lectura y/o escritura)
– Si no puede bloquearlos todos, espera y lo reintenta después
» Concurrencia muy limitada
• Ordenamiento
– Ordenar los elementos de BD y asegurar que si T necesita varios
elementos, los bloqueará en ese orden
» Concurrencia muy limitada
» El programador debe conocer el orden elegido --- poco práctico!
Tema 14. Control de la concurrencia
33
14.3 Técnicas de control de concurrencia
Protocolos de prevención del bloqueo mortal (2)
• Uso de marca de tiempo de transacción
– Si Tj está implicada en un posible bloqueo mortal, ¿debe esperar, abortar o
hacer que otra transacción Tk aborte?
– Marca de tiempo de transacción MT(T):
§ Identificador único para T
§ Las MT se ordenan según se inician las transacciones
§ La T más antigua tiene la MT(T) menor
– Dos esquemas que usan marcas de tiempo y evitan el bloqueo mortal:
Sea Tj que intenta bloquear el elemento X,
pero X ya está bloqueado por Tk con un candado en conflicto
§ Esperar - Morir
§ Herir - Esperar
Tema 14. Control de la concurrencia
34
17
14.3 Técnicas de control de concurrencia
Protocolos de prevención del bloqueo mortal (3)
• Esperar - Morir
si MT(Tj) < MT(Tk) entonces Tj puede esperar
si no, se aborta Tj (Tj muere) y
se reinicia después con la misma marca de tiempo
» Una T j más antigua espera a que termine otra T k más reciente
» Una T j más reciente que solicita un elemento bloqueado por una T k
más antigua, es abortada y reiniciada
• Herir - Esperar
si MT(Tj) < MT(Tk) entonces se aborta Tk (Tj hiere a Tk) y
se reinicia después con la misma MT
si no, Tj puede esperar
» Una T j más reciente espera a que termine una T k más antigua
» Una T j más antigua que solicita un elemento bloqueado por una T k
más reciente, hace que la más reciente sea abortada y reiniciada
Tema 14. Control de la concurrencia
35
14.3 Técnicas de control de concurrencia
Protocolos de prevención del bloqueo mortal (4)
• Ventajas e inconvenientes del uso de marcas de tiempo
J
– Protocolos libres de bloqueo mortal
L
– Ambos hacen que sean abortadas y reiniciadas transacciones que podrían
provocar un bloqueo mortal, aunque tal cosa nunca ocurriera!
– En el esquema Esperar-Morir, una Tj podría abortar y reiniciarse varias
veces seguidas si Tk más antigua sigue bloqueando el X que Tj solicita
Tema 14. Control de la concurrencia
36
18
14.3 Técnicas de control de concurrencia
Protocolos de prevención del bloqueo mortal (5)
• Protocolo de no esperar
Si T no puede obtener un candado, es abortada y reiniciada después
– Al abortar T, no se comprueba si ocurrirá o no un bloqueo mortal
» Demasiados abortos y reinicios innecesarios
• Protocolo de espera cautelosa
Si Tk no está detenida (esperando algún otro elemento bloqueado)
entonces Tj se detiene y espera
Si no, se aborta Tj
– Protocolo libre de bloqueo mortal
• Uso de tiempos predefinidos
Si T espera un tiempo > tiempo predefinido por el sistema
entonces el sistema supone que T está en bloqueo mortal y aborta T
– Al abortar T, no se comprueba si realmente está o no en un bloqueo mortal
Tema 14. Control de la concurrencia
37
14.3 Técnicas de control de concurrencia
Protocolos de detección del bloqueo mortal
• Verificación periódica del estado del sistema
¿está en un bloqueo mortal?
• Conviene detectar el bloqueo mortal cuando se sabe que hay
poca interferencia entre transacciones (casi nunca acceden a los
mismos datos al mismo tiempo) , es decir si...
– las transacciones son cortas y bloquean pocos elementos, o
– la carga de transacciones es pequeña
• Y conviene prevenir el bloqueo mortal cuando...
– Las transacciones son largas y bloquean muchos elementos, o si
– la carga de transacciones es elevada
Tema 14. Control de la concurrencia
38
19
14.3 Técnicas de control de concurrencia
Protocolos de detección del bloqueo mortal (2)
• Uso de grafos de espera para detectar un bloqueo mortal
– Crear un nodo por cada transacción en ejecución, etiquetado con el
identificador de la transacción, T
Tj
Tk
– Si Tj espera para bloquear el elemento X, ya bloqueado por Tk, crear un
arco dirigido desde Tj a Tk
X
Tj
Tk
– Cuando Tk libera el candado sobre X, borrar la arista correspondiente
• Si en algún momento, existe un ciclo en el grafo de espera,
entonces se ha detectado un bloqueo mortal entre las
transacciones
Tema 14. Control de la concurrencia
39
14.3 Técnicas de control de concurrencia
Protocolos de detección del bloqueo mortal (y 3)
• Pero... ¿cuándo hay que verificar el estado del sistema?
– Cuando hay cierto número de transacciones en ejecución, o
– Cuando varias transacciones en ejecución están cierto tiempo
esperando bloquear elementos
Véase figura 12
• Si el sistema está en un estado de bloqueo mortal, es
necesario abortar algunas de las transacciones que lo
provocan ... pero ¿cuáles? ð selección de víctimas
– No elegir transacciones que lleven mucho tiempo en ejecución y
hayan realizado muchas modificaciones
– Seleccionar como víctimas transacciones que...
§ no han realizado muchos cambios
§ participan en varios ciclos de bloqueo mortal en el grafo de espera
Tema 14. Control de la concurrencia
40
20
14.3 Técnicas de control de concurrencia
El problema de la espera indefinida
• Una transacción no puede seguir durante un tiempo
indeterminado, mientras otras transacciones continúan
ejecutándose con normalidad
– Ocurre si el esquema de espera da más prioridad a unas transacciones
que a otras Æ esquema de espera injusto
• Dos protocolos de prevención de espera indefinida
– Consiguen un esquema de espera justo
§ El primero que llega, es el primero en ser atendido
• Las T’s puede bloquear el elemento X en el orden en que solicitaron su
bloqueo
§ Aumento de prioridad en la espera
• Cuanto más espera T, mayor es su prioridad
• Cuando T tiene la prioridad más alta de todas, continúa su ejecución
Tema 14. Control de la concurrencia
41
14.3 Técnicas de control de concurrencia
El problema de la espera indefinida (y 2)
• Es un problema que puede surgir debido a los algoritmos de
resolución del bloqueo mortal (selección de víctimas)
• Una transacción es seleccionada para ser abortada (víctima)
sucesivamente: nunca termina su ejecución
• La solución es asignar prioridades más altas a las T abortadas
varias veces, para no ser siempre las víctimas
• Los esquemas utilizados en Esperar-Morir y Herir-Esperar evitan la
espera indefinida
Tema 14. Control de la concurrencia
42
21
14.4 Granularidad de datos
Elementos de bases de datos y granularidad
• Toda técnica de control de concurrencia supone que la base de
datos está constituida por un conjunto de elementos de datos con
nombre
• Un elemento puede ser...
–
–
–
–
–
un valor de campo de un registro de la BD
un registro de la BD
un bloque de disco
un fichero
la BD completa
• Granularidad = tamaño del elemento de información
– Granularidad fina º elementos de tamaño pequeño
– Granularidad gruesaº elementos grandes
Tema 14. Control de la concurrencia
43
14.4 Granularidad de datos
Elección del tamaño adecuado del elemento de datos
• Para cada elemento se tiene un candado distinto
• En el contexto del bloqueo, el tamaño del elemento afecta al
grado de concurrencia de las transacciones:
È tamaño(elemento) a Ç Grado de concurrencia
Pero también...
a Ç número de elementos en la BD (y de candados)
a Ç trabajo para el gestor de candados, y
a Ç espacio ocupado por la tabla de bloqueos
• Pero... ¿cuál es el tamaño adecuado para los elementos?
... pues depende del tipo de las transacciones implicadas ...
– Si una T representativa accede a pocos registros
§ elegir granularidad de registro
– Si T accede a muchos registros de un mismo fichero
§ elegir granularidad de bloque o de fichero
Tema 14. Control de la concurrencia
44
22
Descargar