Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula: E-6
7 Semestre
Turno Matutino
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:
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.
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:
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
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
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.
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:
para que las transacciones de lectura confirmada utilicen las versiones de fila.
Utilice el aislamiento de instantnea. Utilice conexiones enlazadas.
P g i n a | 10
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
P g i n a | 12
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