Sei sulla pagina 1di 29

PROBLEMAS DE CONTROL DE CONCURRENCIA

1. El problema de la actualizacin perdida. Cuando dos transacciones


que tienen acceso a los mismos elementos de la base de datos tienen sus
operaciones intercaladas de modo que hacen incorrecto el valor de algn
elemento. Esto ocurre si una transaccin sobrescribe el valor de un
elemento, que ya ha sido modificado previamente por otra transaccin
que an est en ejecucin, ocasionando la prdida de la modificacin
previa.
Ej: Valor inicial de X es 10. Valor final de X es 20 y no 30
Transaccin A Tiempo
Leer_elemento(X) T1
X:=X+10
T2
Escribir_elemento(X) T3
T4
Transaccin B
Leer_elemento(X)
X:=X+10
Escribir_elemento(X)
Transaccin B
Escribir_elemento(X)
(X se modifica a 20)
Abortar
(X se restaura a 10)
Transaccin A Tiempo
T1
Leer_elemento(X) T2
T3
PROBLEMAS DE CONTROL DE CONCURRENCIA
2. El problema de la actualizacin temporal (dependencia
no comprometida). Esto ocurre cuando una transaccin
actualiza un elemento de la base de datos y luego la
transaccin falla. Otra transaccin tiene acceso al elemento
actualizado antes de que se restaure su valor original.
Ej: Valor inicial de X es 10
Observacin: La transaccin A lee una modificacin no
comprometida (lectura sucia) en el tiempo T2, que se deshace
en el tiempo T3. Como resultado, la transaccin A puede
producir resultados incorrectos.
PROBLEMAS DE CONTROL DE
CONCURRENCIA
2. El problema de la actualizacin temporal (dependencia
no comprometida).
Ej: Valor inicial de X es 10
Observacin: La transaccin A actualiza una modificacin
no comprometida en el tiempo T2, y pierde esa actualizacin
en el tiempo T3 (otra versin de la actualizacin perdida)
e
esa actualizacin en el tiempo T3.
Transaccin A Tiempo
T1
Escribir_elemento(X) T2
(X se modifica a 30)
T3
Transaccin B
Escribir_elemento(X)
(X se modifica a 20)
Abortar
(X se restaura a 10)
PROBLEMAS DE CONTROL DE
CONCURRENCIA
3. El problema del resumen incorrecto (anlisis
inconsistente). Si una transaccin est calculando una
funcin agregada de resumen sobre varios registros
mientras otras transacciones estn actualizando algunos
de ellos, puede ser que la funcin agregada calcule
algunos valores antes de que se actualicen y otros
despus de actualizarse.
3. El problema del resumen incorrecto (anlisis
inconsistente). Ej: Sean los valores iniciales de A:=40, B:=50 y
C:=30
Transaccin A Tiempo
Leer_elemento(A) T1
Suma:=Suma+A
Leer_elemento(B) T2
Suma:=Suma+B
T3
T4
T5
T6
T7
Leer_elemento(C) T8
Transaccin B
Leer_elemento(C)
C:=C-10
Escribir_elemento(C)
Leer_elemento(A)
A:=A+10
Escribir_elemento(A)
Confirmar
Suma:=Suma+C (Observacin: Suma es 110, no 120)
PROBLEMAS DE CONTROL DE
CONCURRENCIA
4. Lectura repetible. Ocurre cuando una transaccin lee
un elemento dos veces y otra transaccin modifica el
elemento entre las dos lecturas. As la primera
transaccin recibe diferentes valores en sus dos lecturas
del mismo elemento
Ej: si el valor inicial de X es 10
Transaccin A Tiempo
Leer_elemento(X) T1
T2
Leer_elemento(X) T3
Transaccin B
Escribir_elemento(X)
(X se modifica a 20)
TCNICAS DE CONTROL DE CONCURRENCIA
BLOQUEO
La nocin bsica del bloqueo consiste en que cuando una
transaccin requiere la seguridad de que algn objeto (casi
siempre un registro de la base de datos) no cambiar de alguna
manera no predecible, adquiere un bloqueo sobre ese objeto.
El efecto del bloqueo es bloquear el acceso de otras
transacciones al objeto, y en particular evitar que lo
modifiquen
Funcionamiento del bloqueo:
1. Primero, suponemos la existencia de dos tipos de bloqueo:
Bloqueos exclusivos (bloqueos X) y bloqueos compartidos
(bloqueos S).
2. Si la transaccin A tiene bloqueo exclusivo (X) sobre el
registro R, una solicitud por parte de la transaccin B de
cualquier tipo de bloqueo sobre R har que B entre en un
estado de espera. B esperar hasta que se libere el bloqueo de
A.
TCNICAS DE CONTROL DE CONCURRENCIA
Funcionamiento del bloqueo:
3. Si una transaccin A tiene un bloqueo compartido (S)
sobre el registro R:
a) una solicitud por parte de la transaccin B de bloqueo X
sobre R har que B entre en un estado de espera (B esperar
hasta que se libere el bloqueo de A.
b) una solicitud por parte de la transaccin B de un bloqueo
S sobre R ser concedida (es decir, B tendr tambin ahora un
bloqueo S sobre R).
Las tres caractersticas anteriores pueden resumirse en una
matriz de compatibilidad de tipos de bloqueo
X S -
X N N S Guin = no hay bloqueo
S N S S N indica un conflicto
- S S S S indica compatibilidad
TCNICAS DE CONTROL DE CONCURRENCIA
Funcionamiento del bloqueo:
4. Las solicitudes de bloqueo sobre registros por parte de las
transacciones son implcitas. Cuando se quiere leer un registro, se
solicita implcitamente un bloqueo compartido (S) sobre el registro.
Cuando se quiere escribir un registro, se solicita implcitamente un
bloqueo exclusivo (X) sobre el registro. Se permite la promocin de
bloqueo S a bloqueo X dentro de una misma transaccin.
5. Los bloqueos X se mantienen hasta el trmino exitoso o no de la
transaccin. Lo normal es que los bloqueos S se mantengan tambin
hasta ese momento.
As, el bloqueo garantiza planes seriables y estrictos.
DESVENTAJAS: Bloqueo mutuo, Limitacin del grado de
concurrencia, Espera indefinida (si una transaccin no puede
continuar durante un perodo indeterminado, mientras otras
transacciones continan con normalidad. como sucedera si el
esquema de espera es injusto y confiera a algunas transacciones
mayor prioridad que otras), Inanicin debido a los algoritmos que
resuelven el bloqueo mortal.
Solucin al problema de la actualizacin perdida
utilizando la tcnica del bloqueo
Transaccin A Tiempo Transaccin B (X:=10)
Leer_elemento(X) T1
(Adquiere bloqueo S)
X:=X+10
T2 Leer_elemento(X)
(Adquiere bloqueo S)
X:=X+10
Escribir_elemento(X) T3
Espera
T4 Escribir_elemento(X)
Espera (Bloqueo Mutuo)
Solucin al problema de la actualizacin temporal
utilizando la tcnica del bloqueo
Transaccin A Tiempo Transaccin B (X:=10)
T1 Escribir_elemento(X)
(Adquiere bloqueo X)
(X se modifica a 20)
Leer_elemento(X) T2
Espera
T3 Abortar
(X se restaura a 10)
(libera el bloqueo X)
Continuar: Leer_elemento(X) T4
(Adquiere bloqueo S)
Solucin al problema de la actualizacin temporal
utilizando la tcnica del bloqueo
Transaccin A Tiempo Transaccin B (X:=10)
T1 Escribir_elemento(X)
(Adquiere bloqueo X)
(X se modifica a 20)
Escribir_elemento(X) T2
Espera
T3 Abortar
(X se restaura a 10)
(libera el bloqueo X)
Continuar: Escribir_elemento(X) T4
(Adquiere bloqueo X)
Solucin al problema del resumen incorrecto utilizando el bloqueo
Transaccin A Tiempo Transaccin B (A:=40, B:=50,C:=30)
Leer_elemento(A) T1
(Adquiere bloqueo S sobre A)
Suma:=Suma+A
Leer_elemento(B) T2
(Adquiere bloqueo S sobre B)
Suma:=Suma+B
T3 Leer_elemento(C)
(Adquiere bloqueo S sobre C)
C:=C-10
T4 Escribir_elemento(C)
(Adquiere bloqueoX sobre C (se promueve))
T5 Leer_elemento(A)
(Adquiere bloqueo S sobre A)
A:=A+10
T6 Escribir_elemento(A)
Espera
Leer_elemento(C) T7
Espera (Bloqueo Mutuo)
BLOQUEO MUTUO (DEADLOCK, ABRAZO
MORTAL)
Es una situacin en la cual dos o ms transacciones estn en un
estado de espera simultneo, y cada una espera la liberacin de un
bloqueo por parte de otra para poder continuar. En la prctica los
bloqueos mutuos casi nunca implican ms de dos transacciones.
PREVENCIN DEL BLOQUEO MUTUO
Algunas esquemas que evitan el bloqueo mutuo aplican el
concepto de marca de tiempo de la transaccin MT(T). Las marcas
de tiempo se ordenan con base en el orden en que se inician las
transacciones (la transaccin ms antigua tiene la ms alta
prioridad). Dos esquemas son esperar-morir y herir-esperar.
Supongamos que la transaccin T
i
solicita un bloqueo sobre el
elemento X, pero X est bloqueado por otra transaccin T
j
, con un
bloqueo en conflicto.
Esperar-morir (Wait-die): Si MT(T
i
) < MT(T
j
) (T
i
es ms antigua
que T
j
) entonces T
i
espera; de lo contrario se aborta T
i
y se le
reinicia posteriormente con la misma marca de tiempo.
BLOQUEO MUTUO (DEADLOCK, ABRAZO
MORTAL, BLOQUEO MORTAL)
PREVENCIN DEL BLOQUEO MUTUO
Herir-esperar (Wound-wait): Si MT(T
i
) < MT(T
j
) (T
i
es ms
antigua que T
j
) entonces se aborta T
j
(T
i
hiere a T
j
) y se le reinicia
posteriormente con la misma marca de tiempo; de lo contrario T
i
espera.
Ambos esquemas hacen que aborte una transaccin ms reciente
que podran intervenir en un bloqueo mutuo, a pesar de que tal vez
nunca provoquen un bloqueo mutuo. Estas dos tcnicas evitan el
bloqueo mutuo.
El Protocolo de bloqueo de dos fases conservador tambin
puede prevenir bloqueos mutuos, requiere que toda transaccin
bloquee por adelantado todos los elementos que vaya a necesitar, si
no es posible obtener algunos de los elementos, no se bloquear
ninguno de ellos, y la transaccin tendr que esperar hasta que
todos los bloqueos se hagan disponibles. Limita la concurrencia, la
transaccin adquiere todos los bloqueos desde el inicio.
BLOQUEO MUTUO (DEADLOCK, ABRAZO
MORTAL, BLOQUEO MORTAL)
DETECCIN DE BLOQUEO MUTUO
La deteccin de un bloqueo muto implica la deteccin de un
ciclo en la GRFICA DE ESPERA, donde se indica quin est
esperando a quin. Algunos sistemas se limitan a utilizar un
mecanismo de tiempos de espera y suponen que una transaccin
que no ha realizado trabajo alguno durante algn periodo
especificado est en bloqueo mutuo.
Algunos sistemas seleccionan como vctima, al proceso con
el menor tiempo de uso de CPU.
La transaccin elegida como vctima es cancelada, y algunos
sistemas la reinician de manera automtica. Otros sistemas se
limitan a enviar un cdigo de retorno vctima de bloqueo mutuo
de vuelta a la aplicacin.
El algoritmo de seleccin de vctimas puede conferir prioridades
ms altas a las transacciones que se han abortado varias veces, a fin
de que no se escojan como vctimas una y otra vez.
PROTOCOLO DE BLOQUEO DE DOS FASES
BSICO
Se dice que una transaccin sigue el protocolo
bloqueo de dos fases si todas las operaciones de
bloqueo (bloquear_lectura, bloquear_escritura)
preceden a la primera operacin de desbloqueo en la
transaccin.
Una transaccin as puede dividirse en dos fases:
FASE DE EXPANSIN: (o de crecimiento) durante
la cual se pueden adquirir nuevos candados sobre
elementos, pero no se puede liberar ninguno.
PROTOCOLO DE BLOQUEO DE DOS FASES
BSICO
FASE DE CONTRACCIN: durante la cual se
pueden liberar los candados existentes, pero no se
pueden adquirir nuevos candados.
Si se permite promover candados (esto es, que una
transaccin emita una operacin
bloquear_lectura(X) y ms adelante emita una
operacin bloquear_escritura (X)), esta definicin
no cambia. Pero si tambin se permite la
degradacin de candados (esto es, que una
transaccin emita una operacin
bloquear_escritura(X) y ms adelante emita una
operacin bloquear_lectura (X), la definicin debe
alterarse ligeramente.
Todas las degradaciones deben efectuarse en la fase de
contraccin. As, una operacin bloquear_lectura(X) que
degrada un candado de escritura que ya se tena sobre X
slo puede aparecer en la fase de contraccin de la
transaccin.
VENTAJAS: Garantiza planes seriables.
DESVENTAJAS: Los planes no evitan la reversin en
cascada, Bloqueo mutuo, Limitacin del grado de
concurrencia, Espera indefinida (si una transaccin no
puede continuar durante un perodo indeterminado,
mientras otras transacciones continan con normalidad.
como sucedera si el esquema de espera es injusto y
confiera a algunas transacciones mayor prioridad que
otras), Inanicin debido a los algoritmos que resuelven el
bloqueo mortal.
Ejemplo: T1
bloquear_lectura(Y)
leer_elemento(Y)
bloquear_escritura(X)
desbloquear(Y)
leer_elemento(X)
X := X + Y
escribir_elemento(X)
desbloquear(X)
PROTOCOLO DE BLOQUEO DE DOS FASES
BSICO
CONTROL DE CONCURRENCIA BASADO EN
ORDENAMIENTO POR MARCA DE TIEMPO
(BSICO)
En las tcnicas de bloqueo el orden de las transacciones en
el plan en serie equivalente se basa en el orden en que las
transacciones en ejecucin bloquean los elementos que
requieren. Un enfoque distinto implica el uso de marcas de
tiempo de las transacciones para ordenar la ejecucin de
las transacciones segn un plan en serie equivalente.
MARCA DE TIEMPO: es un identificador nico dado
por el sistema para identificar una transaccin. Los valores
se asignan en el orden en que las transacciones se
introducen en el sistema, se le puede considerar como el
tiempo de inicio de una transaccin T como MT(T).
ALGORITMO DE ORDENAMIENTO POR
MARCA DE TIEMPO: Se basa en ordenar las
transacciones con base en sus marcas de tiempo. El plan
ser seriable, y el plan en serie equivalente tendr las
transacciones en orden segn sus valores de marca de
tiempo.
Para evitar que el orden en que se tiene acceso a un
elemento por ms de una transaccin no viole la
seriabilidad del plan, el algoritmo asocia a cada elemento
X de la base de datos, dos valores de marca de tiempo:
1. MT_lectura(X); esta es la ms grande de todas las
marcas de tiempo de las transacciones que han ledo con
xito el elemento X.
2. MT_escritura(X); esta es la ms grande de todas las
marcas de tiempo de las transacciones que han escrito
con xito el elemento X.
El algoritmo debe verificar si se viola el ordenamiento por
marca de tiempo de las transacciones en estos dos casos:
1. La transaccin T emite una operacin escribir_elemento(X):
a. Si MT_lectura(X) > MT(T) o MT_escritura(X) > MT(T)
entonces T aborta y se rechaza la operacin,
se vuelve a introducir T con nueva marca de tiempo;
b. De otro modo, se ejecuta la operacin y se asigna
MT_escritura(X) := MT(T)
2. La transaccin T emite una operacin leer_elemento (X):
a. Si MT_escritura(X) > MT(T) se debe abortar T y
rechazar la operacin, se vuelve a introducir T con
una nueva marca de tiempo.
b. Si MT_escritura MT(T) se ejecuta la operacin y
MT_lectura(X) := mayor { MT(T), MT_lectura(X) }
VENTAJAS: Garantiza planes seriables,
No hay bloqueo mortal
DESVENTAJAS: No garantiza que los planes sean
recuperables,
No evitan la reversin en cascada,
Puede ocurrir la INANICION si una
transaccin se aborta y reinicia
continuamente.
CONTROL DE CONCURRENCIA BASADO EN
ORDENAMIENTO POR MARCA DE TIEMPO
(BSICO)
Un elemento de la base de datos manejado por las tcnicas
de control de concurrencia puede ser:
Un registro de la base de datos, Un valor de
campo de un registro de la base de datos, Un bloque de
disco, Un archivo completo, La base de datos completa.
Cuanto mayor sea el tamao del elemento, menor
ser el grado de concurrencia permitido.
Cuanto menor sea el tamao del elemento, el
sistema tendr una mayor cantidad de elementos por
gestionar, adems requerir mas espacio de
almacenamiento.
En general, el tamao es uniforme, pero para las
tcnicas que permiten tamaos variables, el tamao ad-hoc
depender del tipo de las transacciones implicadas.
GRANULARIDAD DE LOS DATOS
Se ha centrado la atencin en las operaciones leer y
escribir, las cuales accesan a elementos de datos ya
existentes. Sin embargo las transacciones tambin
necesitan de las operaciones que permitan crear y borrar
elementos de datos.
INSERTAR(X): inserta en la base de datos el nuevo
elemento de datos X y le asigna un valor inicial.
En un entorno de bloqueo, se da a T un bloqueo de
escritura (exclusivo) para el elemento X.
En el protocolo de ordenacin por marcas de tiempo, se
fijan los valores MT_lectura(X) y MT_escritura(X) a
MT(T).
OPERACIONES DE INSERCIN Y
ELIMINACIN
ELIMINAR(X): elimina de la base de datos el elemento
de datos X.
En un entorno de bloqueo, tambin se da a T un bloqueo de
escritura (exclusivo) para el elemento X.
En el protocolo de ordenacin por marcas de tiempo,
Si MT_lectura(X) > MT(T) o MT_escritura(X) > MT(T)
entonces abortar y revertir T y rechazar la operacin; de lo
contrario ejecutar la operacin eliminar(X).
OPERACIONES DE INSERCIN Y
ELIMINACIN
PROBLEMA DEL FANTASMA: ocurre cuando un
registro que est siendo insertado por alguna transaccin T
satisface una condicin que deber satisfacer un conjunto
de registros a los que tenga acceso otra transaccin T. Aun
cuando las transacciones estn en conflicto desde un punto
lgico, no hay realmente ningn registro en comn entre
las dos transacciones, ya que T puede haber bloqueado el
conjunto de registros antes de que T insertara el nuevo
registro. El registro que causa el conflicto es un registro
fantasma que ha aparecido repentinamente en la base de
datos al ser insertado.
REGISTROS FANTASMAS
Una solucin al problema del fantasma es el
llamado bloqueo de ndice. (Un ndice incluye entradas
que tienen un valor de atributo, ms un conjunto de
apuntadores a todos los registros del archivo que tienen ese
valor). Toda transaccin que inserte un registro en una
tabla debe insertar informacin en cada uno de los ndices
que se mantengan en la tabla. Si la entrada del ndice
correspondiente se bloquea antes de que se pueda tener
acceso al registro mismo ser posible detectar el conflicto
por el registro fantasma: La razn es que la transaccin T
solicitara un candado de lectura para la entrada de ndice
correspondiente y T solicitara un candado de escritura para
esa misma entrada. Puesto que los bloqueos del ndice
estn en conflicto, el problema del fantasma se detectara.
REGISTROS FANTASMAS

Potrebbero piacerti anche