Está en la página 1de 12

INSTITUTO TECNOLOGICO DE IGUALA

Materia: Base de Datos Distribuidas


Nombre del Profesor: Jos Luis Zagal Arce
Nombre de la Alumna: Ma. Alejandra Tapia Hernndez
No. Control: 12670092
UNIDAD 5
INTERBLOQUEOS

Aula: E-6

7 Semestre

Ingeniera en Sistemas Computacionales

Turno Matutino

Iguala de la Independencia a 30 de Noviembre del 2015

Pgina | 2

Contenido
INTERBLOQUEO................................................................................................ 3
DEFINICION....................................................................................................... 3
Deteccin de interbloqueos...........................................................................5
Eliminar interbloqueos................................................................................... 6
Recursos que pueden causar interbloqueos...............................................7
Minimizar los interbloqueos..........................................................................8
Obtener acceso a los objetos en el mismo orden......................................8
Prevencin del interbloqueo.........................................................................9
Recuperacin de Interbloqueo......................................................................9
EJEMPLO.......................................................................................................... 10
Bibliografa..................................................................................................... 10

Pgina | 3

INTERBLOQUEO
Un interbloqueo se produce cuando dos o ms tareas se bloquean entre s
permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas
intentan bloquear.

DEFINICION.
Un interbloqueo es una condicin que se puede dar en cualquier sistema con varios
subprocesos, no slo en un sistema de administracin de bases de datos relacionales, y
puede producirse para recursos distintos a los bloqueos en objetos de base de datos
Por ejemplo:

La transaccin A tiene un bloqueo compartido de la fila 1.

La transaccin B tiene un bloqueo compartido de la fila 2.

La transaccin A ahora solicita un bloqueo exclusivo de la fila 2 y se bloquea hasta


que la transaccin B finalice y libere el bloqueo compartido que tiene de la fila 2.

La transaccin B ahora solicita un bloqueo exclusivo de la fila 1 y se bloquea hasta


que la transaccin A finalice y libere el bloqueo compartido que tiene de la fila 1.

La transaccin A no se puede completar hasta que complete la transaccin B, pero la


transaccin B est bloqueada por transaccin A. Esta condicin tambin se denomina una
dependencia cclica: La transaccin A tiene una dependencia de la transaccin B y la
transaccin B cierra el crculo con una dependencia en la transaccin A.
Ambas transacciones con un interbloqueo esperarn para siempre, a no ser que un
proceso externo rompa el interbloqueo. Si el monitor detecta una dependencia cclica,
elige una de las tareas como el sujeto y finaliza su transaccin con un error. Esto permite
a la otra tarea completar su transaccin. La aplicacin con la transaccin que termin con
un error puede reintentar la transaccin, que suele completarse despus de que la otra
transaccin interbloqueada haya finalizado.

Pgina | 4
A menudo se confunden los interbloqueos con los bloqueos normales. Cuando una
transaccin solicita un bloqueo en un recurso bloqueado por otra transaccin, la
transaccin solicitante espera hasta que se libere el bloqueo. La transaccin solicitante
est bloqueada, no interbloqueada, porque la transaccin solicitante no ha hecho nada
para bloquear la transaccin a la que pertenece el bloqueo. Finalmente, la transaccin a
la que pertenece el bloqueo se completar y liberar el bloqueo, y a la transaccin
solicitante se le conceder el bloqueo y continuar.
A veces, los interbloqueos se denominan "abrazo mortal".

Un interbloqueo es una condicin que se puede dar en cualquier sistema con varios
subprocesos, no solo en un sistema de administracin de bases de datos relacionales, y
puede producirse para recursos distintos a los bloqueos en objetos de base de datos.
Por ejemplo, un subproceso en un sistema operativo con varios subprocesos puede
adquirir uno o ms recursos, como bloqueos de memoria. Si el recurso que se desea
adquirir pertenece actualmente a otro subproceso, puede que el primer subproceso deba
esperar a que el otro libere el recurso de destino. En consecuencia, se dice que el
subproceso que est en espera depende del subproceso que posee ese recurso concreto.
En una instancia del Motor de base de datos, las sesiones pueden interbloquearse
cuando adquieren recursos ajenos a la base de datos, como memoria o subprocesos.

En la ilustracin, la transaccin T1 tiene una dependencia de la transaccin T2 para el


recurso de bloqueo de la tabla Part. Paralelamente, la transaccin T2 tiene una
dependencia de la transaccin T1 para el recurso de bloqueo de la tabla Supplier. Puesto
que estas dependencias forman un ciclo, hay un interbloqueo entre las transacciones T1 y
T2.

Pgina | 5
Los interbloqueos tambin se pueden producir cuando se crean particiones en una tabla y
el valor de LOCK_ESCALATION en ALTER TABLE se fija en AUTO. Cuando el valor de
LOCK_ESCALATION es AUTO, la simultaneidad aumenta permitiendo a Motor de base
de datos bloquear las particiones de la tabla en el nivel HoBT en lugar de en el nivel
TABLE. Sin embargo, cuando transacciones independientes mantienen bloqueos de
particin en una tabla y desean un bloqueo en algn punto de la particin de otras
transacciones, se produce un interbloqueo. Este tipo de interbloqueo se puede evitar
asignando a LOCK_ESCALATION el valor TABLE; aunque este valor reducir la
simultaneidad obligando a las grandes actualizaciones de las particiones a esperar a que
se produzca un bloqueo de la tabla.

Deteccin de interbloqueos
Un interbloqueo se produce cuando dos o ms tareas se bloquean entre s
permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas
intentan bloquear. En el siguiente grfico se presenta una vista de alto nivel de un estado
de interbloqueo donde:

La tarea T1 tiene un bloqueo en el recurso R1 (indicado por la flecha de R1 a T1) y


ha solicitado un bloqueo en el recurso R2 (indicado por la flecha de T1 a R2).

La tarea T2 tiene un bloqueo en el recurso R2 (indicado por la flecha de R2 a T2) y


ha solicitado un bloqueo en el recurso R1 (indicado por la flecha de T2 a R1).

Dado que ninguna tarea puede continuar hasta que un recurso est disponible y
ningn recurso puede liberarse hasta que contine una tarea, existe un estado de
interbloqueo.

Pgina | 6

La deteccin de interbloqueos la realiza un subproceso de supervisin de bloqueos que


peridicamente inicia una bsqueda por todas las tareas de una instancia del Motor de
base de datos. En los siguientes puntos se describe el proceso de bsqueda:
El intervalo predeterminado es de 5 segundos.
Si el subproceso de supervisin de bloqueos encuentra interbloqueos, el intervalo de
deteccin de interbloqueos pasar de 5 segundos a hasta solo 100 milisegundos, en
funcin de la frecuencia de los interbloqueos.
Si el subproceso de supervisin de bloqueos deja de encontrar interbloqueos, el Motor de
base de datos aumentar los intervalos entre las bsquedas a 5 segundos.
Si se acaba de detectar un interbloqueo, se considera que los siguientes subprocesos que
deben esperar un bloqueo entran en el ciclo de interbloqueo.
La primera pareja de esperas de bloqueo despus de que se haya detectado un
interbloqueo desencadenar inmediatamente una bsqueda de interbloqueos, en vez de
esperar al siguiente intervalo de deteccin de interbloqueos. Por ejemplo, si el intervalo
actual es de 5 segundos y se acaba de detectar un interbloqueo, la siguiente espera de
bloqueo activar inmediatamente el detector de interbloqueos. Si esta espera de bloqueo
forma parte de un interbloqueo, se detectar en seguida en lugar de durante la siguiente
bsqueda de interbloqueos.
El Motor de base de datos solo suele realizar detecciones de interbloqueos peridicas.
Dado que el nmero de interbloqueos que se encuentran en el sistema suele ser
pequeo, si se detectan peridicamente, el sistema no se ve sobrecargado por este tipo
de detecciones.
Cuando el monitor de bloqueos inicia una bsqueda de interbloqueos para un subproceso
determinado, identifica el recurso que est esperando. Despus, el monitor de bloqueos

Pgina | 7
encuentra al propietario o a los propietarios de ese recurso y contina recursivamente la
bsqueda de interbloqueos para esos subprocesos hasta que encuentra un ciclo. Un ciclo
que se identifica de esta manera forma un interbloqueo.

Eliminar interbloqueos.
Para eliminar interbloqueos abortando un proceso, tenemos dos mtodos; en ambos, el
sistema recupera todos los recursos asignados a los procesos terminados.
1. Abortar todos los procesos interbloqueados. Esta es una de las soluciones ms
comunes,

adoptada

por

Sistemas

Operativos.

Este

mtodo

romper

definitivamente el ciclo de interbloqueo pero con un costo muy elevado, ya que


estos procesos efectuaron clculos durante mucho tiempo y habr que descartar
los resultados de estos clculos parciales, para quiz tener que volver a
calcularlos ms tarde.
2. Abortar un proceso en cada ocasin hasta eliminar el ciclo de interbloqueo. El
orden en que se seleccionan los procesos para abortarlos debe basarse en algn
criterio de costo mnimo. Despus de cada aborto, debe solicitarse de nuevo el
algoritmo de deteccin, para ver si todava existe el interbloqueo. Este mtodo cae
en mucho tiempo de procesamiento adicional.
Si ste se encuentra actualizando un archivo, cortarlo a la mitad de la operacin puede
ocasionar que el archivo quede en un mal estado.
Si se utiliza el mtodo de terminacin parcial, entonces, dado un conjunto de procesos
bloqueados, debemos determinar cul proceso o procesos debe terminarse para intentar
romper el interbloqueo. Se trata sobre todo de una cuestin econmica, debemos abortar
los procesos que nos representen el menor costo posible.

Recursos que pueden causar interbloqueos


Cada sesin de usuario puede tener una o ms tareas en ejecucin y cada tarea puede
adquirir o esperar para adquirir una serie de recursos. Los siguientes tipos de recursos
pueden causar bloqueos que podran dar como resultado un interbloqueo.

Bloqueos. Esperar para adquirir bloqueos en recursos, como objetos, pginas,


filas, metadatos y aplicaciones, puede causar un interbloqueo. Por ejemplo, la
transaccin T1 tiene un bloqueo compartido (S) en la fila f1 y est esperando para

Pgina | 8
obtener un bloqueo exclusivo (X) en f2.La transaccin T2 tiene un bloqueo
compartido (S) en f2 y est esperando para obtener un bloqueo exclusivo (X) en la
fila f1.Esta situacin tiene como resultado un ciclo de bloqueo en el que T1 y T2
esperan que la otra transaccin libere los recursos bloqueados.

Subprocesos de trabajo. Una tarea en cola que espera un subproceso de trabajo


disponible puede causar un interbloqueo. Si la tarea en cola es propietaria de
recursos que estn bloqueando todos los subprocesos de trabajo, se generar un
interbloqueo. Por ejemplo, la sesin S1 inicia una transaccin y adquiere un
bloqueo compartido (S) en la fila f1 y, a continuacin, se suspende. Las sesiones
activas que se ejecutan en todos los subprocesos de trabajo disponibles intentan
adquirir bloqueos exclusivos (X) en la fila f1.Dado que la sesin S1 no puede
adquirir un subproceso de trabajo, no puede confirmar la transaccin y liberar el
bloqueo de la fila f1.Esta situacin tiene como resultado un interbloqueo.

Memoria. Cuando hay solicitudes simultneas esperando concesiones de


memoria que no se pueden satisfacer con la memoria disponible, puede
producirse un interbloqueo. Por ejemplo, dos consultas simultneas, C1 y C2, se
ejecutan como funciones definidas por el usuario que adquieren 10 MB y 20 MB de
memoria respectivamente. Si cada consulta necesita 30 MB y el total de memoria
disponible es 20 MB, C1 y C2 tienen que esperar a que la otra consulta libere
memoria, y esta situacin tiene como resultado un interbloqueo.

Recursos relacionados con la ejecucin de consultas en paralelo. Los


subprocesos de coordinador, productor o consumidor asociados a un puerto de
intercambio pueden bloquearse entre s y provocar un interbloqueo si incluyen al
menos otro proceso que no forma parte de la consulta en paralelo. Si la carga de
trabajo del sistema cambia de forma inesperada, por ejemplo, si se empiezan a
ejecutar nuevas consultas en el servidor o el sistema se queda sin subprocesos de
trabajo, se puede producir un interbloqueo.

Minimizar los interbloqueos


A pesar de que los interbloqueos no se pueden evitar totalmente, si se siguen ciertas
convenciones de codificacin se puede reducir su generacin. La minimizacin de los

Pgina | 9
interbloqueos puede aumentar el rendimiento de las transacciones y reducir la sobrecarga
del sistema, debido a que:
Se revierten menos transacciones, al deshacer todo el trabajo que realiza la
transaccin.
Las aplicaciones vuelven a enviar menos transacciones debido a que se revirtieron
cuando se produjo el interbloqueo.
Para ayudar a reducir los interbloqueos:

Obtenga acceso a los objetos en el mismo orden.


Evite la interaccin con los usuarios en las transacciones.
Mantenga transacciones cortas y en un proceso por lotes.
Utilice un nivel de aislamiento inferior.
Utilice un nivel de aislamiento basado en versiones de fila.
Establezca la opcin de base de datos READ_COMMITTED_SNAPSHOT en ON

para que las transacciones de lectura confirmada utilicen las versiones de fila.
Utilice el aislamiento de instantnea. Utilice conexiones enlazadas.

Obtener acceso a los objetos en el mismo orden


Si todas las transacciones simultneas tienen acceso a los objetos en el mismo orden, es
menos probable que se produzcan interbloqueos. Por ejemplo, si dos transacciones
simultneas obtienen un bloqueo en la tabla Supplier y, a continuacin, en la tabla Part,
una transaccin se bloquea en la tabla Supplier hasta que finalice la otra transaccin.
Una vez confirmada o revertida la primera transaccin, contina la segunda, por lo que no
se produce un interbloqueo. La utilizacin de procedimientos almacenados para todas las
modificaciones de datos puede normalizar el orden de acceso a los objetos.

(Developer Network, 2015)

P g i n a | 10

Prevencin del interbloqueo.


Objetivo: conseguir que sea imposible la aparicin de situaciones de interbloqueo.
Impedir que se produzca una de las cuatro condiciones necesarias para producirlo:
Exclusin mutua, Retencin y espera, No expropiacin, y Espera circular.
Condicionar un sistema para quitar cualquier posibilidad de ocurrencia
de interbloqueo.
Que no se cumpla una condicin necesaria
Exclusin mutua y sin expropiacin no se pueden relajar. Dependen de carcter
intrnseco del recurso.
Las otras dos condiciones son ms prometedoras.

Recuperacin de Interbloqueo.
Limpiar un sistema de interbloqueos, una vez que fueron detectados.
Cuando se ha detectado que existe un interbloqueo, podemos actuar de varias formas.
Una posibilidad es informar al operador que ha ocurrido un interbloqueo y dejar que el
operador se ocupe de l manualmente. La otra posibilidad es dejar que el sistema se
recupere automticamente del interbloqueo. Dentro de esta recuperacin automtica
tenemos dos opciones para romper el interbloqueo: Una consiste en abortar uno o ms
procesos hasta romper la espera circular, y la segunda es apropiar algunos recursos de
uno o ms de los procesos bloqueados.
(Base de Datos Distribuidas, 2012)

P g i n a | 11

EJEMPLO

Imagen 1. Iniciar en lnea de comando en MySQL.

Imagen 2. Bloqueo en dos sesiones.

P g i n a | 12

Imagen 3. Mostrando el interbloqueo en las dos sesiones.

Bibliografa
Base de Datos Distribuidas. (6 de Noviembre de 2012). Obtenido de Disciplinas
del Interbloqueo:
http://basesdatosdistribuidas.blogspot.mx/2012/11/disciplinas-delinterbloqueo.html
Developer Network. (2015). Obtenido de Gua de versiones de fila y bloqueo de
transacciones de SQL Server: https://msdn.microsoft.com/eses/library/jj856598(v=sql.120).aspx