Control de Concurrencia

Anuncio
Control de Concurrencia
Carlos A. Olarte ([email protected])
BDII
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Contenido
1
Introducción
2
Protocolos basados en Bloqueos
3
Protocolos basados en Grafos
4
Protocolos de Marcas temporales
5
Esquemas Multiversión
6
Granularidad Múltiple
7
Interbloqueos
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Control de Concurrencia
Mecanismo para asegurar la propiedad de aislamiento
Protocolo de Bloqueo: Reglas acerca de cómo se deben
acceder los recursos para generar planificaciones secuenciales
(vistas o conflictos)
Que se debe tener en cuenta (prevenir)?
Inanición: Cuando una transacción debe esperar por siempre
(∞)
Interbloqueos: (dead locks)
Perder la concurrencia (Todo secuencial)
Largas esperas
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Protocolos basados en Bloqueos
Modos de Bloqueo: Compartido o Exclusivo
Conflicto: Modos de bloqueo incompatibles
Una planificación es legal para un protocolo de bloqueo si
dicha planificación es posible para un conjunto de
transacciones que siguen las reglas del protocolo de bloqueo
Matriz de Compatibilidad: Indica
bloqueo son compatibles.
X
X F
C F
Carlos A. Olarte ([email protected]) BDII
cuando dos modos de
C
F
V
Control de Concurrencia
Protocolo de Bloqueo de 2 Fases
Consta de una fase de Crecimiento en la que se adquieren
bloqueos (no se pueden liberar) y una fase de Decrecimiento
cuando se liberan bloqueos (y no se pueden obtener)
Punto de Bloqueo donde se obtiene el último bloqueo
No asegura la aparición de interbloqueos ni de retrocesos en
cascada
Las transacciones se pueden secuenciar a partir de su punto de
bloqueo generando planificaciones SECC (demostrar)
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Continuación
Variantes del PB. 2 Fases
Protocolo Estricto de 2 fases: Todos los bloqueos en modo
exclusivo deben mantenerse hasta el final de la transacción
Protocolo Riguroso de 2 fases: Todos los bloqueos deben
mantenerse hasta el compromiso de la transacción
Protocolo Refinado de 2 fases: Dos nuevas operaciones:
Subir: Pasar de modo C a modo X (solo en fase de
crecimiento)
Bajar: Pasar de modo X a modo C (solo en fase de
decrecimiento)
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Protocolo del Árbol
Requiere un orden parcial → del conjunto de elementos de datos
(di → dj si para acceder a di y a dj se requiere primero acceder a
di .
Todos los bloqueos se realizan en modo X . Las reglas del
protocolo:
El primer bloqueo puede ser sobre cualquier elemento
Ti puede bloquear un elemento Q solamente si posee un
bloqueo sobre el padre de Q
Se pueden desbloquear elemento en cualquier orden
Ti no puede bloquear elementos que previamente ha
desbloqueado
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Continuación
Ventajas: Previene los interbloqueos y se permiten
desbloquear recursos antes del compromiso (aumento de
concurrencia)
Desventajas: Tener que bloquear el padre. Establecer el orden
parcial (→) no siempre es posible
Existirán planificaciones que sean legales bajo el P2F y no bajo el
P.Arbol? y viceversa?
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Protocolo de Marcas Temporales
Cada transacción cuenta con una marca temporal M(Ti )
Las planificaciones generadas deben ser equivalentes al
ordenamiento secuencial (cronológico) de las marcas
Sobre cada recurso Q se cuenta con MTE (Q) (última
transacción –MT– que escribió Q) y MTL(Q) (última
transacción –MT– que leyó Q)
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Continuación
Protocolo de ordenación
Para operaciones de lectura en Ti
1
2
Si MT (Ti ) < MTE (Q) se rechaza Ti puesto que se está
leyendo un valor sobre-escrito.
Si MT (Ti ) ≥ MTE (Q) se acepta la operación y se actualiza
MTL(Q) por MT (Ti ).
Para operaciones de escritura de Ti
1
2
3
Si MT (Ti ) < MTL(Q) se rechaza la escritura puesto que el
valor producido no fue el leido
Si MT (Ti ) < MTE (Q) se rechaza puesto que se está
escribiendo algo obsoleto
Se acepta la escritura y se actualiza MTE (Q) por MT (Ti )
Al retroceder la transacción se le asigna un nuevo MT (Ti ) y vuelve
a empezar (no hay interbloqueos)
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Regla de Escritura de Thomas
Se modifica la segunda regla de escritura del protocolo de
ordenación de M.T para ignorar la escritura
Asegura secuencialidad en cuanto a vistas
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Esquemas Multiversión
Cada escritura de Q genera una nueva versión de Q
Se debe asegurar que las lecturas seleccionen la versión de Q
apropiada
Cada versión de Q (Qk ) se le asigna: contenido,
MTE (Qk ) = MT (Ti ) y MTL(Qk ) (última transacción que
leyó la versión Qk ).
Se mantiene la secuencialidad mediante las siguientes reglas:
1
2
Si Ti ejecuta L(Q) el valor retornado es el valor de Qk
Si Ti ejecuta E (Q) :
1
2
3
Si MT (Ti ) < MTL(Qk ) se retrocede Ti
Si MT (Ti ) = MTE (Qk ) se sobreescribe Qk
En otro caso aparece una nueva versión de Q
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Continuación
Ventaja: Asegura que las lecturas nunca fallan
Desventaja: Conflictos resueltos con retrocesos
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Granularidad Múltiple
Matriz de Compatibilidad
IC
IX
C
IXC
X
IC
V
V
V
V
F
IX
V
V
F
F
F
C
V
F
V
F
F
Jerarquı́a de Granularidad
Si se bloquea el padre (Bloqueo Explicito) se bloquean sus
descendientes (Bloqueos Implı́citos)
Aparecen tres nuevos modos: Intencional Exclusivo (IX ), I.
Compartido (IC ) e I. Compartido-Exclusivo(ICX )
Los bloqueos se realizan de arriba hacia abajo y los
desbloqueos en orden inverso
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
IXC
V
F
F
F
F
X
F
F
F
F
F
Reglas del Protocolo
Ti puede bloquear Q si:
1
Se observa la matriz de compatibilidad
2
La raı́z se bloquea en cualquier modo
3
Ti puede bloquear Q en modo C o IC solo si Ti está
actualmente bloqueando el padre de Q en modo IX o IC
4
Ti puede bloquear Q en modo X ,ICX o IX solo si Ti está
actualmente bloqueando el padre de Q en modo IX o ICX
5
Ti debe ser de dos fases
6
Ti no puede desbloquear Q si algún descendiente de Q esta
actualmente bloqueado
Por qué son necesarios los bloqueos intencionales?
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Interbloqueos (Dead Locks)
Un sistema de encuentra en un Interbloqueo cuando existe un
conjunto de transacciones {T1 , T2 , ..., Tn } tal que para todo
i ∈ [1..n − 1], Ti espera por Ti+1 y Tn espera por T1 .
Como se tratan los interbloqueos?
Esquemas Preventivos: Nunca ocurre el interbloqueo
Esquemas de Detección y Recuperación
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Esquemas Preventivos
Por lı́mite de tiempo: Después de cierto tiempo se retrocede
la transacción (fácil de implementar aunque no siempre que
un recurso se encuentre ocupado por mucho tiempo implica la
existencia de un interbloqueo)
El protocolo de bloqueo asegura la no aparición puesto que
exige un orden para adquirir bloqueos como en el protocolo
del árbol
Expropiar y retroceder:
Esperar Morir: Si Ti solicita un recurso ocupado por Tj espera
solamente si MT (Ti ) < MT (Tj ) de lo contrario Ti se
retrocede (Muere). En este caso no hay expropiación
Herir-Esperar: Como el caso anterior con la diferencia que es
Tj quien se retrocede
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Detección y Recuperación
Se requiere un esquema que:
Mantenga la información necesaria los bloqueos: Construir un
grafo de espera (hti , tj i ∈ A si ti espera por un recurso de tj )
Ejecute un algoritmo de detección: En este caso detección de
ciclos en el grafo de espera
Ejecute un mecanismo de recuperación en caso de ser
necesario:
Seleccionar una transacción (preferiblemente la de menor
costo)
Retroceder de la transacción escogida
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Operaciones de Inserción y Eliminación
Para eliminar un recurso se presentan los conflictos similares que
para una escritura. Por tanto:
En el protocolo de 2 fases, se debe solicitar un bloqueo en
modo exclusivo sobre Q antes de eliminarlo
En el protocolo de marcas temporales se adicionan reglas
similares a las reglas de escritura
Fenómeno Fantasma: Suponga que Ti efectúa select count(*)
from x y Tj insert into x.... Si Ti no utiliza la nueva tupla, la
planificación secuencial que se debe obtener es hti , tj i. Como las
dos transacciones están en conflicto por una tupla que no tienen en
común este fenómeno se conoce como fenómeno fantasma
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Algunos Ejemplos Prácticos
Commit / Rollback
Bloqueos (Esperas hasta comprometer o retroceder)
Versiones (lecturas antes de comprometer)
Detección de Interbloqueos
Granularidad a nivel de registro (no a nivel de columna)
SELECT ... FOR UPDATE
Fenómeno Fantasma
Cambios del nivel de Consistencia
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Niveles Débiles de Consistencia
La norma SQL-92 define niveles de consistencia que no siempre
garantizan secuencialidad:
Secuenciable
Lectura Repetible: Solo se pueden leer registros
comprometidos. Entre dos lecturas del mismo recurso,
ninguna otra transacción puede modificar dicho recurso
Compromiso de Lectura: Solo se puede leer registros
comprometidos pero no se asegura la lectura repetible
Sin compromiso de Lectura: Se permite leer registros no
comprometidos
Carlos A. Olarte ([email protected]) BDII
Control de Concurrencia
Descargar