Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat...

29
Universitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón) 1 Técnicas de control de Técnicas de control de concurrencia concurrencia Bases de datos II: Tema 4 Bases de datos II: Tema 4 Universitat de València 2006/07 2 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón) Índice Índice Ordenamiento por marcas de tiempo. Ordenamiento por marcas de tiempo. Ordenamiento total / Ordenamiento parcial Ordenamiento total / Ordenamiento parcial Regla de Thomas Regla de Thomas Técnicas Técnicas multiversión multiversión Asignación dinámica de marcas de tiempo. Asignación dinámica de marcas de tiempo. Protocolos optimistas de validación. Protocolos optimistas de validación. Técnicas del bloqueo. Técnicas del bloqueo. Bloqueo en dos fases Bloqueo en dos fases Interbloqueo Interbloqueo Granularidad Granularidad

Transcript of Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat...

Page 1: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón) 1

Técnicas de control de Técnicas de control de concurrenciaconcurrenciaBases de datos II: Tema 4Bases de datos II: Tema 4

Universitat de València 2006/07 2BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

ÍndiceÍndice

�� Ordenamiento por marcas de tiempo.Ordenamiento por marcas de tiempo.

�� Ordenamiento total / Ordenamiento parcialOrdenamiento total / Ordenamiento parcial

�� Regla de ThomasRegla de Thomas

�� Técnicas Técnicas multiversiónmultiversión

�� Asignación dinámica de marcas de tiempo.Asignación dinámica de marcas de tiempo.

�� Protocolos optimistas de validación.Protocolos optimistas de validación.

�� Técnicas del bloqueo.Técnicas del bloqueo.

�� Bloqueo en dos fasesBloqueo en dos fases

�� InterbloqueoInterbloqueo

�� GranularidadGranularidad

Page 2: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 3BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Técnicas de control de concurrenciaTécnicas de control de concurrencia

�� Los SGBD incluyen protocolos (conjuntos de Los SGBD incluyen protocolos (conjuntos de

reglas) para asegurar la propiedad de aislamiento reglas) para asegurar la propiedad de aislamiento

de transacciones que se ejecutan de transacciones que se ejecutan

concurrentemente.concurrentemente.

�� La mayoría de las técnicas de control de La mayoría de las técnicas de control de

concurrencia aseguran que los planes sean concurrencia aseguran que los planes sean

serializablesserializables..

�� Estas técnicas se aplican conjuntamente a las Estas técnicas se aplican conjuntamente a las

técnicas de recuperación (Tema 5)técnicas de recuperación (Tema 5)

Universitat de València 2006/07 4BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Un enfoque para garantizar la Un enfoque para garantizar la seriabilidadseriabilidad de los planes de los planes supone usar marcas de tiempo para ordenar la ejecución supone usar marcas de tiempo para ordenar la ejecución de estas.de estas.

�� Una marca de tiempo es un identificador único que Una marca de tiempo es un identificador único que el SGBD crea para identificar una transacciónel SGBD crea para identificar una transacción..

�� Las Las marcas de tiempomarcas de tiempo se asignan en el orden en que las se asignan en el orden en que las transacciones se introducen en el sistema.transacciones se introducen en el sistema.

�� Generación de marcas de tiempo:Generación de marcas de tiempo:

�� ContadorContador

�� Reloj del sistemaReloj del sistema�� La La marca de tiempo de gránulomarca de tiempo de gránulo es un valor numérico es un valor numérico asociado con un gránulo que almacena la marca de asociado con un gránulo que almacena la marca de tiempo de la última transacción que operó sobre el tiempo de la última transacción que operó sobre el gránulo. gránulo.

1. Algoritmos basados en marcas de tiempo1. Algoritmos basados en marcas de tiempo

Page 3: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 5BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

1. Algoritmo de ordenación total de marcas 1. Algoritmo de ordenación total de marcas de tiempode tiempo

�� Se basa en asegurar que el acceso a los gránulos por las Se basa en asegurar que el acceso a los gránulos por las transacciones se realiza en el orden asignado inicialmente transacciones se realiza en el orden asignado inicialmente (que es el orden de inicio de las transacciones).(que es el orden de inicio de las transacciones).

�� Si esto no se cumple:Si esto no se cumple:�� se debe abortar una transacción (la que produjo el conflicto)se debe abortar una transacción (la que produjo el conflicto)

�� se revierte la transacción y se relanza asignándole otra marca se revierte la transacción y se relanza asignándole otra marca tiempo.tiempo.

�� Posible codificación:Posible codificación:void opera(transaccion t, granulo g, valor &v){ if(marca_tiempo_granulo(g)<=marca_tiempo_transacc ion(t))

{realiza_operacion(g,v);marca_tiempo_granulo(g)=marca_tiempo_transaccion(t) ;

}else

aborta_transaccion();}

Universitat de València 2006/07 6BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

1. Algoritmo de ordenación parcial1. Algoritmo de ordenación parcial

�� Se intenta ordenar aquellas operaciones que son Se intenta ordenar aquellas operaciones que son conflictivas (y que no son permutables).conflictivas (y que no son permutables).

�� Se definen dos marcas de tiempo para un gránulo:Se definen dos marcas de tiempo para un gránulo:�� Marca de tiempo de lectura ( Marca de tiempo de lectura ( MT_lec(gMT_lec(g) ): ) ):

corresponde a la mayor (la más alta) marca de tiempo de las corresponde a la mayor (la más alta) marca de tiempo de las transacciones que han leído el granulo. transacciones que han leído el granulo.

�� Marca de tiempo de escritura ( Marca de tiempo de escritura ( MT_esc(gMT_esc(g) ): ) ): corresponde a la mayor (la más alta) marca de tiempo de las corresponde a la mayor (la más alta) marca de tiempo de las transacciones que han escrito en el granulo.transacciones que han escrito en el granulo.

�� Este algoritmo comprueba si las operaciones en Este algoritmo comprueba si las operaciones en conflicto respetan el orden asignado a las transacciones.conflicto respetan el orden asignado a las transacciones.

�� Se realizan comprobaciones diferentes para las Se realizan comprobaciones diferentes para las operaciones de lectura y escritura.operaciones de lectura y escritura.

Page 4: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 7BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

voidvoid lee(transaccionlee(transaccion t,granulo g, valor &v)t,granulo g, valor &v)

{{

ifif ( ( marca_g_esc(gmarca_g_esc(g )<)< =marca_transac(t=marca_transac(t ) )) )

{{

v = v = realiza_lectura(grealiza_lectura(g ););

marca_g_lee(g) = marca_g_lee(g) = max(marca_g_lee(gmax(marca_g_lee(g ),), marca_transac(tmarca_transac(t ))))

}}

elseelse

aborta_transaccion(taborta_transaccion(t ););

}}

voidvoid escribe(transaccionescribe(transaccion t, granulo g, valor v)t, granulo g, valor v)

{{

ifif ( ( marca_g_esc(gmarca_g_esc(g )<)< =marca_transac(t=marca_transac(t ) &&marca_g_lee(g)<) &&marca_g_lee(g)< =marca_transac(t=marca_transac(t )) ))

{{

realiza_escritura(g,vrealiza_escritura(g,v ););

marca_g_esc(gmarca_g_esc(g )) =marca_transac(t=marca_transac(t ));));

}}

elseelse

aborta_transaccion(taborta_transaccion(t ););

}}

1. Algoritmo de ordenación parcial1. Algoritmo de ordenación parcial

Universitat de València 2006/07 8BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Este algoritmo detecta operaciones en conflicto que Este algoritmo detecta operaciones en conflicto que

ocurren en orden incorrecto y aborta la T más reciente ocurren en orden incorrecto y aborta la T más reciente

(mayor marca de tiempo).(mayor marca de tiempo).

�� Todas las planificaciones que este algoritmo permite Todas las planificaciones que este algoritmo permite

ejecutar son ejecutar son serializablesserializables (por conflictos).(por conflictos).

�� Sin embargo existen planificaciones Sin embargo existen planificaciones serializablesserializables que no que no

se pueden ejecutar con este algoritmo.se pueden ejecutar con este algoritmo.

�� Es posible que se produzca un reinicio cíclico de alguna Es posible que se produzca un reinicio cíclico de alguna

de las transacciones (espera indefinida).de las transacciones (espera indefinida).

1. Algoritmo de ordenación parcial1. Algoritmo de ordenación parcial

Page 5: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 9BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

1. Ejemplos de algoritmos de ordenación 1. Ejemplos de algoritmos de ordenación (parcial y total).(parcial y total).

T1:esc g, T3: lee g, T2: lee g, T4: esc g

3311marca(gmarca(g))

Aborta T2

11

33

11

33

11

00

44MT_esc(gMT_esc(g))

33MT_lec(gMT_lec(g))parcial

total

Universitat de València 2006/07 10BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

escribe(t,g,v)escribe(t,g,v)

{{

ifif ( ( marca_g_esc(gmarca_g_esc(g )<)< =marca_transac(t=marca_transac(t ) && ) && marca_g_lee(g)<marca_g_lee(g)< =marca_transac(t=marca_transac(t ) )) )

{{

lleva_a_cabo_escritura(g,v);lleva_a_cabo_escritura(g,v);

marca_g_esc(gmarca_g_esc(g )) =marca_transac(t=marca_transac(t ));));

}} elseelse ifif ( marca_g_lee(g)<( marca_g_lee(g)< =marca_transac(t=marca_transac(t ) &&) &&

marca_g_esc(gmarca_g_esc(g )>)> marca_transac(tmarca_transac(t ) )) )

ignora_escritura();ignora_escritura();

elseelse

aborta_transaccionaborta_transaccion ();();

}}

Regla de ThomasRegla de ThomasRegla de escritura de Thomas: constituye una mejora del algoritmo anterior en la escritura. Si una transacción pretende escribir en un gránulo con una MT_esc > MT de la transacción, se puede ignorar dicha escritura (siempre que ninguna transacción con marca posterior haya leído el granulo).

Page 6: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 11BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

1. Ejemplos de algoritmos de ordenación 1. Ejemplos de algoritmos de ordenación (parcial con regla de Thomas).(parcial con regla de Thomas).

T1:esc g, T1: lee g, t3: esc g, t2: esc g, t4: lee g

Aborta T2

11

11

33

11

11

00

MT_esc(gMT_esc(g))

MT_lec(gMT_lec(g)) Parcial (sin Regla de Thomas)

Se ignora Se ignora

escrituraescritura

T2T211

11

33

11

11

00

33MT_esc(gMT_esc(g))

44MT_lec(gMT_lec(g))Parcial

(con Regla de Thomas

Universitat de València 2006/07 12BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Algoritmo Algoritmo multiversiónmultiversión

�� Este algoritmo consiste en ir guardando varias versiones del misEste algoritmo consiste en ir guardando varias versiones del mismo mo dato (gránulo) : se conservan los valores antiguos de los gránuldato (gránulo) : se conservan los valores antiguos de los gránulos que os que se han actualizado. se han actualizado.

�� Lectura:Lectura:

Cuando una Transacción necesita Cuando una Transacción necesita leerleer algún gránulo, se elige una versión algún gránulo, se elige una versión adecuada para mantener la adecuada para mantener la seriabilidadseriabilidad de la planificación, si es posible.de la planificación, si es posible.

�� Escritura:Escritura:

Cuando una Transacción Cuando una Transacción escribe escribe un gránulo, escribe una nueva versión de ese un gránulo, escribe una nueva versión de ese gránulo, conservándose además la versión anterior.gránulo, conservándose además la versión anterior.

�� Desventaja: requiere más almacenamiento que los anteriores. Desventaja: requiere más almacenamiento que los anteriores.

�� Muchas veces estas versiones se aprovechan para la recuperación.Muchas veces estas versiones se aprovechan para la recuperación.

�� Abortar transacciones: se aborta la transacción que provocó el Abortar transacciones: se aborta la transacción que provocó el conflicto (la más reciente) y se le asigna una nueva marca de ticonflicto (la más reciente) y se le asigna una nueva marca de tiempo.empo.

� Este algoritmo se basa en el concepto de la seriabilidad por vistas.

Page 7: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 13BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

voidvoid lee(transaccionlee(transaccion t,granulo g,valor &v)t,granulo g,valor &v)

{{

marca k;marca k;

//encuentra la //encuentra la versionversion más alta <= más alta <= marca_transac(tmarca_transac(t ) ) k=ultima_version(gk=ultima_version(g ););

while(marca_g_esc(g,kwhile(marca_g_esc(g,k ) > ) > marca_transac(tmarca_transac(t ))))

{{

k=version_previa(g,kk=version_previa(g,k ) ) ) )

}}

v=lleva_a_cabo_lectura(g,kv=lleva_a_cabo_lectura(g,k ););

marca_g_lee(g,k) = marca_g_lee(g,k) = max(marca_g_lee(g,kmax(marca_g_lee(g,k ),), marca_transac(tmarca_transac(t ));));

}}

Algoritmo Algoritmo multiversiónmultiversión: codificación: codificación

Las lecturas siempretienen éxito

Universitat de València 2006/07 14BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

voidvoid escribe(transaccionescribe(transaccion t,granulo g,valor v)t,granulo g,valor v)

{ {

marca k;marca k;

k=ultima_version(gk=ultima_version(g ););

while(marca_g_esc(g,kwhile(marca_g_esc(g,k )>)> marca_transac(tmarca_transac(t ))))

k=version_previa(g,kk=version_previa(g,k ););

ifif ( marca_g_lee(g,k) <= ( marca_g_lee(g,k) <= marca_transac(tmarca_transac(t ) )) )

{{

lleva_a_cabo_escritura(g,v);lleva_a_cabo_escritura(g,v);

inserta_valor(k,v);inserta_valor(k,v);

inserta_marca_esc(kinserta_marca_esc(k ););

}}

elseelse

aborta_transaccionaborta_transaccion ();();

}}

Algoritmo Algoritmo multiversiónmultiversión: codificación: codificación

Las escrituraspueden abortar T

Page 8: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 15BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Algoritmo Algoritmo multiversiónmultiversión: ejemplo: ejemplot1:esc g, t4: lee g, t5: lee g, t2: lee g

v1v1valorvalor

11m_escm_esc

00m_lecm_lec

v1v1valorvalor

11m_escm_esc

44m_lecm_lec

v1v1valorvalor

11m_escm_esc

55m_lecm_lec

v1v1valorvalor

11m_escm_esc

55m_lecm_lec

t1:esc g t4: lee g t5: lee g t2: lee g

t1:esc g, t4: lee g, t5: lee g, t2: esc g

v1v1valorvalor

11m_escm_esc

00m_lecm_lec

v1v1valorvalor

11m_escm_esc

44m_lecm_lec

v1v1valorvalor

11m_escm_esc

55m_lecm_lec

Aborta T2!!!

t1:esc g t4: lee g t5: lee g

No aborta transacciones

Universitat de València 2006/07 16BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Algoritmo Algoritmo multiversiónmultiversión: ejemplo: ejemplot1:esc g, t4: esc g, t5: lee g, t2: lee g

v1v1valorvalor

11M_escM_esc

00M_lecM_lec

v4v4v1v1valorvalor

4411M_escM_esc

0000M_lecM_lec

v4v4v1v1valorvalor

4411M_escM_esc

5500M_lecM_lec

v4v4v1v1valorvalor

4411M_escM_esc

5522M_lecM_lec

T1:esc g t4: esc g t5: lee g t2: lee g

44

00

44

55

11

00

M_escM_esc

M_lecM_lec

Aborta T2

¿qué haría el Algoritmo

de OMT parcial

hay 2 versiones

Page 9: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 17BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Asignación dinámica de marcas de tiempoAsignación dinámica de marcas de tiempo�� Las marcas de tiempo se asignan dinámicamente y no Las marcas de tiempo se asignan dinámicamente y no por simple orden de iniciopor simple orden de inicio

�� Detección de conflictos: se comprueba si el gránulo al Detección de conflictos: se comprueba si el gránulo al que accede una transacción dada ha sido accedido por que accede una transacción dada ha sido accedido por una transacción activa.una transacción activa.

�� Ejemplo: Ejemplo:

Ta: lee(g1)Tb: esc(g1)Tc: lee(g2)Tb: esc(g2)

Algoritmos de marcasde tiempo abortarían

Ta

Tc

Tb

Grafo de precedencia

Universitat de València 2006/07 18BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Asignación dinámicaAsignación dinámicaPosible algoritmo:Posible algoritmo:1) 1) Nueva transacciónNueva transacción : crea nodo.: crea nodo.

2) 2) Operación sobre gránulo gOperación sobre gránulo g, añade gránulo a la lista de la transacción (con , añade gránulo a la lista de la transacción (con tipo) y establece relación de precedencia con todas las transacctipo) y establece relación de precedencia con todas las transacciones que ya lo iones que ya lo hayan afectado (salvo que ambas sean lecturas). Comprueba si hayhayan afectado (salvo que ambas sean lecturas). Comprueba si hay ciclos. ciclos. Si los hay, se aborta la transacción que ha creado el conflicto.Si los hay, se aborta la transacción que ha creado el conflicto.

3) 3) Termina transacciónTermina transacción marca nodo como terminado, pero sólo se elimina si no marca nodo como terminado, pero sólo se elimina si no llegan flechas a él. Si se elimina, se busca si hay nodos conectllegan flechas a él. Si se elimina, se busca si hay nodos conectados ados directamente a él que también sean iniciales y se eliminan a su directamente a él que también sean iniciales y se eliminan a su vez.vez.

Ta

Tb

Lee g1

Esc g1Aborta Ta

Ejemplo 1: Ejemplo 1:

TaTa: : initinit, , TbTb: : initinit, , TaTa: : lee(g1lee(g1), ), TbTb: : esc(g1esc(g1), ), TaTa: : esc(g1esc(g1))

Page 10: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 19BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Asignación Asignación dínámicadínámica: ejemplos: ejemplos{ { TTaa initinit, , TTbb initinit, , TTaa escesc gg11, , TTcc initinit, , TTcc lee glee g11, , TTdd initinit, , TTdd escesc gg11, , TTcc escesc gg22, , TTbb lee glee g22 }}

Ta Tc

Tb

Td

Esc g1 Lee g1

Lee g2

Esc g1

Esc g2

{ Ta init, Tb init, Tc init, Td init, Ta lee g1, Tc esc g1, Te init, Tc esc g3,Tc esc g2,Te lee g2, Tb esc g3, Td esc g3, Tf esc g2, Tf lee g4, Tc esc g4 }

Ta

TdTb

Te

TcLee g1 Esc g1

Esc g3

esc g2 Lee g2

Esc g3 Esc g3

Esc g2

Tf

Lee g4esc g4

Se aborta Tc, pero sería más convenienteabortar Tf

Universitat de València 2006/07 20BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Algoritmos optimistasAlgoritmos optimistas

�� No realizan ninguna verificación durante la ejecución.No realizan ninguna verificación durante la ejecución.

�� Los cambios se realizan sobre copias locales (no sobre los Los cambios se realizan sobre copias locales (no sobre los

gránulos de la BD).gránulos de la BD).

�� Al final de la ejecución, existe una fase de validación que Al final de la ejecución, existe una fase de validación que

comprueba si cualquiera de las actualizaciones violaba la comprueba si cualquiera de las actualizaciones violaba la

seriabilidadseriabilidad. .

�� Este algoritmo tiene tres fases:Este algoritmo tiene tres fases:

�� Fase de lecturaFase de lectura: leo las valores de los gránulos en la BD pero no : leo las valores de los gránulos en la BD pero no

modifica ningún gránulo (copias locales).modifica ningún gránulo (copias locales).

�� Fase de validaciónFase de validación: se efectúa una verificación para comprobar si hay : se efectúa una verificación para comprobar si hay

algún problema con las operaciones realizadas.algún problema con las operaciones realizadas.

�� Fase de escritura:Fase de escritura: si la fase anterior termina con éxito se actualiza la si la fase anterior termina con éxito se actualiza la

BD.BD.

Page 11: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 21BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Si hay pocas interferencias (conflictos) entre transacciones Si hay pocas interferencias (conflictos) entre transacciones (mayoritariamente son lecturas), casi todas se validarán sin (mayoritariamente son lecturas), casi todas se validarán sin dificultad (por ello se llaman optimistas).dificultad (por ello se llaman optimistas).

�� Existen varios algoritmos de este tipo. Uno de ellos se basa en Existen varios algoritmos de este tipo. Uno de ellos se basa en la la asignación de marcas de tiempo.asignación de marcas de tiempo.

�� La fase de validación comprueba para cada transacción Ti las La fase de validación comprueba para cada transacción Ti las siguientes condiciones:siguientes condiciones:

Algoritmos optimistasAlgoritmos optimistas

1. La transacción Tj acaba antes de que Ti comience2. Si una transacción Ti comienza antes de que Tj

acabe,1. El conjunto de datos escritos por Tj

(transacción previa) no son los datos leídos por la transacción Ti (actual).

2. La transacción Tj (previa) completa la fase de escritura antes de que la transacción Ti valide.

Universitat de València 2006/07 22BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Las condiciones anteriores se resumen en:Las condiciones anteriores se resumen en:

Se comprueba si existe algSe comprueba si existe algúún grn gráánulo que haya sido lenulo que haya sido leíído por la do por la transaccitransaccióón a certificar y escrito por otra transaccin a certificar y escrito por otra transaccióón certificada n certificada despudespuéés del comienzo de la transaccis del comienzo de la transaccióón que estamos certificando.n que estamos certificando.

�� Ejemplo 1:Ejemplo 1:

�� Ejemplo 2:Ejemplo 2:

SeSe

Algoritmos optimistasAlgoritmos optimistas

lee(x)

T1

T2

lee(x) esc(x) lee(y)commitesc(y)

esc(x) commit

Confirma

No sevalida

T1

T2

lee(x) esc(x) esc(y)

commitlee(y)esc(x)

commit

lee(z)

Confirma

No sevalida

Page 12: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 23BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Técnicas de bloqueo Técnicas de bloqueo

�� Las tLas téécnicas mcnicas máás empleadas para controlar el acceso s empleadas para controlar el acceso concurrente de las transacciones se basan en el concurrente de las transacciones se basan en el concepto de bloquear elementos de datos.concepto de bloquear elementos de datos.

�� Un bloqueo corresponde a una variable asociada al Un bloqueo corresponde a una variable asociada al grgráánulo que describe las operaciones que se pueden nulo que describe las operaciones que se pueden realizar sobre realizar sobre éél.l.

�� Dado que dos operaciones de transacciones Dado que dos operaciones de transacciones diferentes sobre el mismo grdiferentes sobre el mismo gráánulo que no sean nulo que no sean permutables pueden provocar violaciones en el permutables pueden provocar violaciones en el orden de orden de serializaciserializacióónn, pueden prevenirse las , pueden prevenirse las violaciones bloqueando los accesos a dicho grviolaciones bloqueando los accesos a dicho gráánulo. nulo.

Universitat de València 2006/07 24BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Técnicas de bloqueoTécnicas de bloqueo

�� Matriz binaria de compatibilidad: Es una matriz binaria que Matriz binaria de compatibilidad: Es una matriz binaria que describe las operaciones compatibles ( 1 = sdescribe las operaciones compatibles ( 1 = síí, 0 = no)., 0 = no).

CC leerleer escribirescribir

leerleer 11 00

escribirescribir 00 00

�� Se introducen operaciones adicionales en las transacciones:Se introducen operaciones adicionales en las transacciones:�� bloquear(gbloquear(g, M), M):: indica al planificador el comienzo de una operaciindica al planificador el comienzo de una operacióón n

o conjunto de ellas de modo definido por M sobre el gro conjunto de ellas de modo definido por M sobre el gráánulo g. nulo g.

�� desbloquear(gdesbloquear(g)):: indica al planificador el final de las operaciones indica al planificador el final de las operaciones realizadas por la transaccirealizadas por la transaccióón correspondiente.n correspondiente.

�� Un modo de operaciUn modo de operacióón M es un vector binario que indica las n M es un vector binario que indica las operaciones que una T desea bloquear sobre el groperaciones que una T desea bloquear sobre el gráánulo g.nulo g.�� p.ep.e., si leer o escribir., si leer o escribir modo modo M=M=(1 0) o (0 1) o (1 1)(1 0) o (0 1) o (1 1)

Page 13: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 25BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Una transacciUna transaccióón en el esquema del bloqueo debern en el esquema del bloqueo deberáá::�� Emitir una operaciEmitir una operacióón n bloquear(g,Mbloquear(g,M) antes de operar ) antes de operar sobre g en el modo M.sobre g en el modo M.

�� Emitir una operaciEmitir una operacióón n desbloquear(gdesbloquear(g) despu) despuéés de terminar s de terminar la operacila operacióón o operaciones correspondientes.n o operaciones correspondientes.

�� No emitirNo emitiráá una operaciuna operacióón bloquear si ya tiene el bloqueo n bloquear si ya tiene el bloqueo sobre el grsobre el gráánulo (nulo (excepto promocionesexcepto promociones).).

�� No emitirNo emitiráá una operaciuna operacióón desbloquear a menos que ya n desbloquear a menos que ya posea el bloqueo correspondiente.posea el bloqueo correspondiente.

�� El mEl móódulo de gestidulo de gestióón de bloqueos del SGBD se n de bloqueos del SGBD se ocupa de asegurar que se cumpla lo anterior.ocupa de asegurar que se cumpla lo anterior.

Técnicas de bloqueoTécnicas de bloqueo

Universitat de València 2006/07 26BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� ¿¿QuQuéé informaciinformacióón se necesita mantener en el protocolo del n se necesita mantener en el protocolo del

bloqueo?bloqueo?

�� InformaciInformacióón sobre las transacciones que bloquean un determinado n sobre las transacciones que bloquean un determinado

grgráánulo: nulo: tabla de bloqueo.tabla de bloqueo.

�� Las operaciones solicitados para una transacciLas operaciones solicitados para una transaccióón se almacenan en un n se almacenan en un

vector de bits M vector de bits M (los k valores son las diferentes operaciones (los k valores son las diferentes operaciones

posibles, normalmente 2, lee y posibles, normalmente 2, lee y escesc))::

A(g,i)=[a1,a2,..,aj,...,ak]Ti

g

aj=1 si Ti tiene bloqueado g para esa operación.aj=0 si Ti no tiene bloqueado g para esa operación.

M=[m1,m2,..,mj,...,mk]

Técnicas de bloqueoTécnicas de bloqueo

Page 14: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 27BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Proposición: los modos de operación solicitados durante una Proposición: los modos de operación solicitados durante una acción de acción de bloquear(gbloquear(g, M, , M, TpTp) son compatibles con los modos ) son compatibles con los modos de operación actualmente bloqueados si se cumple lo de operación actualmente bloqueados si se cumple lo siguiente:siguiente:

¬¬( (( (UUi!=pi!=p A(i,g)) * A(i,g)) * ¬¬C C ) ) ⊃⊃ MM

�� ¿Qué hacer cuando las operaciones no son compatibles?¿Qué hacer cuando las operaciones no son compatibles?Se guarda la petición en una cola de espera, y se bloquea la Se guarda la petición en una cola de espera, y se bloquea la transacción hasta que el gránulo este disponible. transacción hasta que el gránulo este disponible. �� La inserción en la cola de espera puede seguir diversos criterioLa inserción en la cola de espera puede seguir diversos criterioss

�� Cada gránulo tiene una cola de espera que indica las Cada gránulo tiene una cola de espera que indica las transacciones que están esperando para utilizarlo y el modo transacciones que están esperando para utilizarlo y el modo de operación que solicitan.de operación que solicitan.

Técnicas de bloqueoTécnicas de bloqueo

Universitat de València 2006/07 28BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

bloquear(grbloquear(gr áánulonulo g, modos M, g, modos M, id_transacid_transac p)p)

{{

if ( if ( ¬¬((((UUi!=pi!=p A(i,g))*A(i,g))*¬¬CC)) )) ⊃⊃ M M ) )

A(g,pA(g,p)=)=A(g,pA(g,p) ) U U M; M; ////permitepermitepromocionespromocionesde de bloqueosbloqueos

elseelse

{{

inserta_modo_en_cola(p,M,ginserta_modo_en_cola(p,M,g););

bloquea_transaccion(pbloquea_transaccion(p););

}}

}}

Técnicas de bloqueo: codificaciónTécnicas de bloqueo: codificación

Page 15: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 29BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

desbloquear(grdesbloquear(gr áánulonulo g, g, id_transacid_transac t)t)

{{

elem_colaelem_cola *q;*q;

id_transacid_transac p;p;

A(g,tA(g,t)=0; )=0; //vector con //vector con todotodoceroscerosq=q=primer_elem_cola(gprimer_elem_cola(g););

while(qwhile(q!=NULL) !=NULL)

{{

p=qp=q-->>id_transacid_transac;;

M=qM=q-->>modo_opmodo_op;;

if ( if ( ¬¬((((UUi!=pi!=p A(i,g))*A(i,g))*¬¬CC)) )) ⊃⊃ M M ) )

{{

A(g,pA(g,p)=)=A(g,pA(g,p) U M;) U M;

eliminar_de_cola(g,peliminar_de_cola(g,p););

desbloquear_transaccion(pdesbloquear_transaccion(p););

}}

q=sig_elem_cola(gq=sig_elem_cola(g););

}}

}}

Técnicas de bloqueo: codificaciónTécnicas de bloqueo: codificación

Universitat de València 2006/07 30BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

bloqueos y bloqueos y seriabilidadseriabilidad

�� Existen ciertas restricciones en el uso del bloqueo y Existen ciertas restricciones en el uso del bloqueo y

del desbloqueo.del desbloqueo.

�� Se dice que Se dice que una transacción está bien formadauna transacción está bien formada si si bloqueo todos los modos de operación adecuados bloqueo todos los modos de operación adecuados

antes de operar sobre ellos y los desbloquea antes de operar sobre ellos y los desbloquea

después.después.

�� El uso de bloqueos por sí solo no asegura que una El uso de bloqueos por sí solo no asegura que una

planificación sea planificación sea serializableserializable..

Page 16: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 31BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Ejemplo: planificación con bloqueos no Ejemplo: planificación con bloqueos no serializableserializable..

bloqueos y bloqueos y seriabilidadseriabilidad

leer(x)esc(x)leer(y)esc(y)

leer(x)esc(x)leer(y)esc(y)

T1 T2

T1

T2

bloq(x) esc(x) desb(x)

desb(x)esc(x)bloq(x) lee(x)

lee(x)

bloq(y) lee(y) esc(y) desb(y)

bloq(y) lee(y) esc(y) desb(y)

T1

T2

Universitat de València 2006/07 32BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

bloqueos y bloqueos y seriabilidadseriabilidad

Bloquea(x,lecBloquea(x,lec))

Lee(xLee(x))

Desbloquea(xDesbloquea(x))

Bloquea(y,esc+lecBloquea(y,esc+lec))

Lee(yLee(y))

y=x+yy=x+y

Escribe(yEscribe(y))

Desbloquea(yDesbloquea(y))

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Desbloquea(yDesbloquea(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

Lee(xLee(x))

x=x+yx=x+y

Escribe(xEscribe(x))

Desbloquea(xDesbloquea(x))

T2T2T1T1

Bloquea(x,lecBloquea(x,lec))

Lee(xLee(x))

Desbloquea(xDesbloquea(x))

Bloquea(y,esc+lecBloquea(y,esc+lec))

Lee(yLee(y))

y=x+yy=x+y

Escribe(yEscribe(y))

Desbloquea(yDesbloquea(y))

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Desbloquea(yDesbloquea(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

Lee(xLee(x))

x=x+yx=x+y

Escribe(xEscribe(x))

Desbloquea(xDesbloquea(x))

T2T2T1T1

Ej: x=20,y=30 {T1,T2} x=50,y=80

Ej: x=20,y=30 {T2,T1} x=70,y=50

Ej: x=20,y=30 Pconc_derecha x=50,y=50

es una planificación no serializable

Page 17: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 33BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Bloqueo en dos fasesBloqueo en dos fases

�� Se llama Se llama transacción en dos fasestransacción en dos fases aquella que no aquella que no realiza ningún bloqueo después de haber realizado realiza ningún bloqueo después de haber realizado alguna operación de desbloquear. En una alguna operación de desbloquear. En una transacción en dos fasestransacción en dos fases�� fase de expansiónfase de expansión ( o de crecimiento), durante la cual se ( o de crecimiento), durante la cual se pueden adquirir nuevos bloqueos sobre elementos pero pueden adquirir nuevos bloqueos sobre elementos pero no se puede liberar ninguno.no se puede liberar ninguno.

�� fase de contracciónfase de contracción, durante la cual se pueden liberar , durante la cual se pueden liberar todos los bloqueos existentes pero no se pueden adquirir todos los bloqueos existentes pero no se pueden adquirir nuevos bloqueos.nuevos bloqueos.

�� Proposición: Proposición:

toda planificación compuesta de transacciones toda planificación compuesta de transacciones en dos fases es en dos fases es serializableserializable..

Universitat de València 2006/07 34BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Bloqueos en 2 fasesBloqueos en 2 fases

Bloquea(x,lecBloquea(x,lec))

Bloquea(y,esc+lecBloquea(y,esc+lec))

Lee(xLee(x))

Desbloquea(xDesbloquea(x))

Lee(yLee(y))

y=x+yy=x+y

Escribe(yEscribe(y))

Desbloquea(yDesbloquea(y))

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

Lee(xLee(x))

x=x+yx=x+y

Escribe(xEscribe(x))

Desbloquea(yDesbloquea(y))

Desbloquea(xDesbloquea(x))

T2T2T1T1

Bloquea(x,lecBloquea(x,lec))

(se pone en espera (se pone en espera

hasta que T1 hasta que T1

desbloquee x)desbloquee x)

Bloquea(y,esc+lecBloquea(y,esc+lec))

Lee(xLee(x))

Desbloquea(xDesbloquea(x))

Lee(yLee(y))

y=x+yy=x+y

Escribe(yEscribe(y))

Desbloquea(yDesbloquea(y))

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

Lee(xLee(x))

x=x+yx=x+y

Escribe(xEscribe(x))

Desbloquea(yDesbloquea(y) )

Desbloquea(xDesbloquea(x))

T2T2T1T1

Ambas son transacciones en 2 fases, por lo que cualquier

planificación que pueda suceder es serializable. Por ejemplo:

Page 18: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 35BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� El protocolo en dos fases limita la concurrencia El protocolo en dos fases limita la concurrencia pero garantiza que los planes sean pero garantiza que los planes sean serializablesserializables..

�� B2F básicoB2F básico: va tomando bloqueos y luego los va : va tomando bloqueos y luego los va liberando.liberando.

�� B2F conservadorB2F conservador: toma todos los bloqueos al : toma todos los bloqueos al principio y si no se espera principio y si no se espera (poco práctico)(poco práctico)..

�� B2F estrictoB2F estricto: no libera ningún bloqueo exclusivo : no libera ningún bloqueo exclusivo hasta después de confirmar o abortar.hasta después de confirmar o abortar.(asegura planificaciones estrictas)(asegura planificaciones estrictas)

�� B2F rigurosoB2F riguroso: no libera ningún bloqueo hasta : no libera ningún bloqueo hasta después de confirmar o abortar.después de confirmar o abortar.

Bloqueo en dos fasesBloqueo en dos fases

Universitat de València 2006/07 36BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Problema del Problema del interbloqueointerbloqueo: : es una situación en la que los gránulos han sido bloqueados en ues una situación en la que los gránulos han sido bloqueados en una na

secuencia tal que un grupo de transacciones que no pueden seguirsecuencia tal que un grupo de transacciones que no pueden seguir

porque están esperando a las otras.porque están esperando a las otras.

Caracterización del Caracterización del interbloqueointerbloqueo::

1.1. todas las transacciones están bloqueadas esperando el acceso a todas las transacciones están bloqueadas esperando el acceso a

un gránulo.un gránulo.

2.2. la finalización de cualquier otra transacción no permite la finalización de cualquier otra transacción no permite

desbloquear a ninguna transacción.desbloquear a ninguna transacción.

Problemas debidos al protocolo en dos fases:Problemas debidos al protocolo en dos fases:

Posible solución: cada transacción sólo puede bloquear

un gránulo a un tiempo (no compatible con transacciones

en dos fases)

Page 19: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 37BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Bloqueos en 2 fases: Bloqueos en 2 fases: interbloqueointerbloqueo

Bloquea(x,lecBloquea(x,lec))

Bloquea(y,esc+lecBloquea(y,esc+lec))

Lee(xLee(x))

Desbloquea(xDesbloquea(x))

Lee(yLee(y))

y=x+yy=x+y

Escribe(yEscribe(y))

Desbloquea(yDesbloquea(y))

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

Lee(xLee(x))

x=x+yx=x+y

Escribe(xEscribe(x))

Desbloquea(yDesbloquea(y))

Desbloquea(xDesbloquea(x))

T2T2T1T1

Bloquea(xBloquea(x, , leclec))

Bloquea(y,esc+lecBloquea(y,esc+lec))

(se pone en espera (se pone en espera

hasta que T1 hasta que T1

desbloquee x)desbloquee x)

Bloquea(y,lecBloquea(y,lec))

Lee(yLee(y))

Bloquea(x,esc+lecBloquea(x,esc+lec))

(se pone en espera hasta (se pone en espera hasta

que T2 desbloquee x)que T2 desbloquee x)

T2T2T1T1

Ambas transacciones son en transacciones bien formadas en dos fases.

Pero ninguna de las dos transacciones pueden continuar

Universitat de València 2006/07 38BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Problema de la espera indefinida: Problema de la espera indefinida:

�� cuando un conjunto de transacciones con modos de operación cuando un conjunto de transacciones con modos de operación

compatibles entre sí impiden que otra transacción con operación compatibles entre sí impiden que otra transacción con operación

no compatible acceda al gránulo.no compatible acceda al gránulo.

�� Ejemplo:Ejemplo:

S={T1:lee(x),T2:lee(x),T3:esc(x), T4:lee(x), S={T1:lee(x),T2:lee(x),T3:esc(x), T4:lee(x), ..., ..., Tn:lee(xTn:lee(x)} )}

�� La transacciLa transaccióón T3 no se desbloquea mientras haya transacciones que n T3 no se desbloquea mientras haya transacciones que

tienen el grtienen el gráánulo bloqueado para lecturanulo bloqueado para lectura

Problemas debidos al protocolo en dos fases:Problemas debidos al protocolo en dos fases:

Page 20: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 39BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Problema de los fantasmas:Problema de los fantasmas:�� imaginemos una tabla que contiene información de imaginemos una tabla que contiene información de

empleados, con tipo y edad:empleados, con tipo y edad:

T1 consulta la tabla para encontrar el empleado más viejo T1 consulta la tabla para encontrar el empleado más viejo tipo 1 y tipo 2.tipo 1 y tipo 2.

T2 inserta uno nuevo empleado tipo 1 de edad 60, y borra el T2 inserta uno nuevo empleado tipo 1 de edad 60, y borra el empleado tipo 2 más viejo. empleado tipo 2 más viejo.

Problemas debidos al protocolo en dos fasesProblemas debidos al protocolo en dos fases

55552244

45452233

50501122

40401155

35351111

edadedadtipotipoidempleadoidempleado

Universitat de València 2006/07 40BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Problemas debidos al protocolo en dos fasesProblemas debidos al protocolo en dos fases�� Problema de los fantasmas:Problema de los fantasmas:

Inserta(6, 1, 60)Inserta(6, 1, 60)

Bloquea(gr.Tipo2Bloquea(gr.Tipo2, , selsel))

Selecciona Selecciona maxmax Tipo2Tipo2

Bloquea(grBloquea(gr.4, del).4, del)

Borra(4, 2, 55)Borra(4, 2, 55)

Desbloquea(gr.Tipo2Desbloquea(gr.Tipo2))

Desbloquea(grDesbloquea(gr.4).4)

Bloquea(gr.Tipo1Bloquea(gr.Tipo1, , selsel))

Selecciona Selecciona maxmax Tipo1Tipo1

Bloquea(gr.Tipo2Bloquea(gr.Tipo2, , selsel))

Selecciona Selecciona maxmax Tipo2Tipo2

Desbloquea(gr.Tipo1Desbloquea(gr.Tipo1))

Desbloquea(gr.Tipo2Desbloquea(gr.Tipo2))

T2T2T1T1

Inserta(6, 1, 60)Inserta(6, 1, 60)

Bloquea(gr.Tipo2Bloquea(gr.Tipo2, , selsel))

Selecciona Selecciona maxmax Tipo2Tipo2

Bloquea(grBloquea(gr.4, del).4, del)

Borra(4, 2, 55)Borra(4, 2, 55)

Desbloquea(gr.Tipo2Desbloquea(gr.Tipo2))

Desbloquea(grDesbloquea(gr.4).4)

Bloquea(gr.Tipo1Bloquea(gr.Tipo1, , selsel))

Selecciona Selecciona maxmax Tipo1Tipo1

Bloquea(gr.Tipo2Bloquea(gr.Tipo2, , selsel))

Selecciona Selecciona maxmax Tipo2Tipo2

Desbloquea(gr.Tipo1Desbloquea(gr.Tipo1))

Desbloquea(gr.Tipo2Desbloquea(gr.Tipo2))

T2T2T1T1

{T1,T2} daría MaxTipo1=50, MaxTipo2=55

{T2,T1} daría MaxTipo1=60, MaxTipo2=45

P (v.derecha) da MaxTipo1=60, MaxTipo2=55

Page 21: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 41BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Soluciones al Soluciones al interbloqueointerbloqueo

�� Un esquema para resolver el Un esquema para resolver el interbloqueointerbloqueo es su detección. es su detección.

�� Formas de representar el Formas de representar el interbloqueointerbloqueo::

�� Grafo de esperas.Grafo de esperas.

�� Grafo de reservas.Grafo de reservas.

�� Grafo de esperas:Grafo de esperas:

es un grafo en el que los nodos son las transacciones y la relaces un grafo en el que los nodos son las transacciones y la relaciióón de espera entre n de espera entre nodos se define como sigue: una transaccinodos se define como sigue: una transaccióón n TpTp espera a otra transacciespera a otra transaccióón n TqTq si si TpTp ha solicitado el bloqueo de un grha solicitado el bloqueo de un gráánulo y esta peticinulo y esta peticióón no puede ser aceptada n no puede ser aceptada porque porque TqTq lo tiene bloqueado.lo tiene bloqueado.

bloq(y,esc)

Bloq(x,lec)

Bloq(x,esc)

Bloq(y,esc)

T1

T2

T1

T2

x,esc

y,esc

Universitat de València 2006/07 42BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Ejemplo de grafo de esperas que representa una Ejemplo de grafo de esperas que representa una situación de situación de interbloqueointerbloqueo::

�� Proposición: existe una situación de Proposición: existe una situación de interbloqueointerbloqueo si si y solo si hay un ciclo.y solo si hay un ciclo.

�� Nota: el hecho de que una transacción espere a otra Nota: el hecho de que una transacción espere a otra implica una relación de precedencia.implica una relación de precedencia.Al revés Al revés (relación de (relación de precprec. implica espera). implica espera) no es cierto.no es cierto.

Soluciones al Soluciones al interbloqueointerbloqueo

T1 T2 T4 T5T3

Page 22: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 43BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Ejemplo: T1 precede a T2 pero no hay esperas.Ejemplo: T1 precede a T2 pero no hay esperas.

�� Si se produce un ciclo en el grafo de esperas, entonces existe Si se produce un ciclo en el grafo de esperas, entonces existe

un ciclo en el grafo de precedencia y la planificación no es un ciclo en el grafo de precedencia y la planificación no es

serializableserializable..

Soluciones al Soluciones al interbloqueointerbloqueo

bloq(y,lec)

T1

T2

bloq(x,esc) esc(x) lee(y)desb(y)

esc(x)

desb(x)

bloq(x,esc)

Universitat de València 2006/07 44BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Grafo de reservas:Grafo de reservas:

Grafo con dos tipos de nodos, los de las transacciones y los Grafo con dos tipos de nodos, los de las transacciones y los correspondientes a grcorrespondientes a gráánulos. nulos. �� Un arco une un grUn arco une un gráánulo nulo gigi a una transaccia una transaccióón n TpTp si si TpTp tiene tiene

bloqueado el grbloqueado el gráánulo nulo gigi. .

�� Un arco une una transacciUn arco une una transaccióón n TqTq con un grcon un gráánulo nulo gjgj si si TqTq ha ha solicitado el bloqueo del grsolicitado el bloqueo del gráánulo pero no lo ha conseguido.nulo pero no lo ha conseguido.

bloq(y,esc)

bloq(x,lec)

bloq(x,esc)

bloq(y,esc)

T1

T2

T1 T2

yx

lec

escesc esc

Soluciones al Soluciones al interbloqueointerbloqueo

Page 23: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 45BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Soluciones al Soluciones al interbloqueointerbloqueo�� Una condición necesaria para que haya Una condición necesaria para que haya interbloqueointerbloqueo es es que exista un ciclo en el grafo de reservas. La condición que exista un ciclo en el grafo de reservas. La condición no es suficiente.no es suficiente.

�� EjEj: ciclo en el grafo de reservas pero sin : ciclo en el grafo de reservas pero sin interbloqueointerbloqueo�� T1:T1:bloquea(g1bloquea(g1,,actact), T2:), T2:bloquea(g2bloquea(g2,,selsel), ), T2: T2: bloquea(g1bloquea(g1,,selsel)),,T3:T3:bloquea(g2bloquea(g2,,insins), ), T1:T1:bloquea(g2bloquea(g2,,insins)), , cuandocuando T3:T3:desbloquea(g2desbloquea(g2) ) T1 ya puede seguir T1 ya puede seguir , , cuandocuando T1:T1:desbloquea(g1desbloquea(g1) ) T2 ya puede seguirT2 ya puede seguir ……

�� Cuando los únicos modos de operación son lectura y Cuando los únicos modos de operación son lectura y escritura la condición es también suficiente.escritura la condición es también suficiente.

T1 T3T2

g2g1inssel

act

sel

ins

act sel ins

0 0 00 1 10 1 0

C=

Universitat de València 2006/07 46BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Existen diversos algoritmos para ello basados en la Existen diversos algoritmos para ello basados en la

detección de ciclos en el grafo de esperas, entre ellos:detección de ciclos en el grafo de esperas, entre ellos:

�� Algoritmo 1Algoritmo 1: Comprueba la existencia de ciclos mediante la : Comprueba la existencia de ciclos mediante la

eliminación de nodos terminales.eliminación de nodos terminales.

�� Algoritmo 2Algoritmo 2: Comprueba posible ciclos desde la última : Comprueba posible ciclos desde la última

transacción bloqueada y marcando los nodos por los que pasa. transacción bloqueada y marcando los nodos por los que pasa.

Si pasa dos veces por el mismo nodo ha detectado un ciclo.Si pasa dos veces por el mismo nodo ha detectado un ciclo.

�� Es importante la selección de víctimas.Es importante la selección de víctimas.

�� Debe determinarse cuándo comprobar si hay Debe determinarse cuándo comprobar si hay interbloqueointerbloqueo

Detección del Detección del interbloqueointerbloqueo

1. Elimino transacciones de las que no salen flechas.2. Elimino flechas que lleguen a ellas.3. Repito 1) y 2) hasta que no queden transacciones

Page 24: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 47BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Las técnicas de Las técnicas de interbloqueointerbloqueo utilizan el concepto de marca de utilizan el concepto de marca de

tiempo de transacción.tiempo de transacción.

�� Existen dos esquemas que evitan el Existen dos esquemas que evitan el interbloqueointerbloqueo

(supongamos Ti quiere acceder a un gránulo bloqueado por (supongamos Ti quiere acceder a un gránulo bloqueado por

TjTj))

�� EsperarEsperar--morirmorir: Si Ti < : Si Ti < TjTj entonces Ti puede esperar; en caso entonces Ti puede esperar; en caso

contrario se aborta Ti y se reinicia con la misma marca de tiempcontrario se aborta Ti y se reinicia con la misma marca de tiempo.o.

�� HerirHerir--esperaresperar: Si Ti < : Si Ti < TjTj entonces se aborta entonces se aborta TjTj y se reinicia con la y se reinicia con la

misma marca de tiempo. En caso contrario, Ti puede esperar.misma marca de tiempo. En caso contrario, Ti puede esperar.

Prevención del Prevención del interbloqueointerbloqueo

En ambos casosen caso de abortarse

se aborta la más reciente

T más antigua puede esperar a una más reciente.

T más recientepuede esperar a una más antigua.

Universitat de València 2006/07 48BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

GranularidadGranularidad de los datosde los datos

�� Se llama Se llama granularidadgranularidad de los elementos de datos al tamaño de de los elementos de datos al tamaño de

dichos elementos.dichos elementos.

�� Selección de un tamaño:Selección de un tamaño:

�� Mayor tamaño, menor es el grado de concurrencia permitido.Mayor tamaño, menor es el grado de concurrencia permitido.

�� Menor tamaño, más elementos de datos, Menor tamaño, más elementos de datos,

el sistema gestor debe mantener y gestionar más bloqueos.el sistema gestor debe mantener y gestionar más bloqueos.

�� ¿Cuál es el mejor tamaño?¿Cuál es el mejor tamaño?

�� Depende de los tipos de transacciones implicadas.Depende de los tipos de transacciones implicadas.

�� Nivel de Nivel de granularidadgranularidad múltiple: una buena opción es que el múltiple: una buena opción es que el

sistema permita varios niveles de sistema permita varios niveles de granularidadgranularidad..

�� Bloqueos en modo de intenciónBloqueos en modo de intención

Page 25: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 49BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

GranularidadGranularidad de los datosde los datos

�� Para trabajar con Para trabajar con granularidadgranularidad múltiple se define una matriz de múltiple se define una matriz de

compatibilidad con los modos normales y los modos de intención,compatibilidad con los modos normales y los modos de intención,

repitiéndose C y siendo E una matriz de unos.repitiéndose C y siendo E una matriz de unos.�� Por ejemplo:Por ejemplo:

�� Para bloquear un gránulo en un modo determinado, Para bloquear un gránulo en un modo determinado,

la transacción debe bloquear todos los gránulos que lo contenganla transacción debe bloquear todos los gránulos que lo contengan en en

modo de intención y el gránulo en modo normal.modo de intención y el gránulo en modo normal.

11110000IEIE

11110011ILIL

00000000EE

00110011LL

IEIEILILEELL

C CC E

0000EE

0011LL

EELL

Universitat de València 2006/07 50BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Ejemplo que ilustra los bloqueos en modo intención.Ejemplo que ilustra los bloqueos en modo intención.

GranularidadGranularidad de los datosde los datos

bd2

p11

f1 f2

p12 p21p13 p23p22

r111 r11j r13jr131r12jr121 r221 r22j

T1esc(r111)esc(r211)

T2lee(r11j)Lee(p11)

T3esc(p12)lee(f2)

r211 r21j

Page 26: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 51BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� Considérese la siguiente planificación:Considérese la siguiente planificación:

P=P={ { T1:T1:esc(r111esc(r111), T2:), T2:lee(r11jlee(r11j), T3: ), T3: esc(p12esc(p12), T1:), T1:esc(r211esc(r211), ),

T2:T2:lee(p11lee(p11), T3: ), T3: lee(f2lee(f2) }) }

�� El funcionamiento sería (A indica el bloque aplicado)El funcionamiento sería (A indica el bloque aplicado)

1.1. A(f1A(f1,T1)=(0001) ,T1)=(0001) A(p11A(p11,T1)=(0001),T1)=(0001) A(r111A(r111,T1)=(0100),T1)=(0100)

2.2. A(f1A(f1,T2)=(0010) ,T2)=(0010) A(p11A(p11,T2)=(0010),T2)=(0010) A(r11jA(r11j,T2)=(1000),T2)=(1000)

3.3. A(f1A(f1,T3)=(0001),T3)=(0001) A(p12A(p12,T3)=(0100),T3)=(0100)

4.4. A(f2A(f2,T1)=(0001) ,T1)=(0001) A(p21A(p21,T1)=(0001),T1)=(0001) A(r211A(r211,T1)=(0100),T1)=(0100)

5.5. A(f1A(f1,T2),T2)=(0010) =(0010)

el el bloqueo(p11bloqueo(p11,T2,1000) es incompatible con ,T2,1000) es incompatible con A(p11A(p11,T1)=(0001) ,T1)=(0001) ESPERAESPERA

6.6. el el bloqueo(f2bloqueo(f2,T3,1000) es incompatible con ,T3,1000) es incompatible con A(f2A(f2,T1)=(0001),T1)=(0001) ESPERAESPERA

�� cuando T1 desbloquee p11 entonces T2 se “despierta” y podrá segucuando T1 desbloquee p11 entonces T2 se “despierta” y podrá seguir …ir …

�� cuando T1 desbloquee f2 entonces T3 se “despierta” y podrá segucuando T1 desbloquee f2 entonces T3 se “despierta” y podrá seguir …ir …

GranularidadGranularidad de los datosde los datos

Universitat de València 2006/07 52BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

�� RamezRamez A. A. ElmasriElmasri, , ShamkantShamkant B. B. NavatheNavathe, “Fundamentos de , “Fundamentos de

Sistemas de Bases de Datos”. Addison Wesley Sistemas de Bases de Datos”. Addison Wesley

(tercera edición, capítulo 20)(tercera edición, capítulo 20)

�� R. R. RamakrishnanRamakrishnan, J. , J. GehrkeGehrke “Database Management “Database Management

Systems”. McGraw HillSystems”. McGraw Hill

BibliografíaBibliografía

Page 27: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 53BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Ejercicios propuestosEjercicios propuestos

1. 1. Para cada uno de las siguientes planificaciones, di a qué tipo Para cada uno de las siguientes planificaciones, di a qué tipo

de planificación pertenece entre las siguientes: de planificación pertenece entre las siguientes: serializableserializable

(en vistas o en conflictos), recuperables, sin abortos en (en vistas o en conflictos), recuperables, sin abortos en

cascada.cascada.1.1. T1:lee(x), T2:lee(x), T1:T1:lee(x), T2:lee(x), T1:esc(xesc(x), T2:), T2:esc(xesc(x))

2.2. T1:T1:esc(xesc(x), T2:lee(y), T1:lee(y), T2:lee(x)), T2:lee(y), T1:lee(y), T2:lee(x)

3.3. T1:T1:lee(xlee(x), T2:lee(y), T3:), T2:lee(y), T3:esc(xesc(x), T2:), T2:lee(xlee(x), T1:lee(y)), T1:lee(y)

4.4. T1:lee(x), T1:lee(y), T1:T1:lee(x), T1:lee(y), T1:esc(xesc(x), T2:lee(y), T3:), T2:lee(y), T3:esc(yesc(y), ), T1:T1:esc(xesc(x), T2:lee(y)), T2:lee(y)

5.5. T1:T1:lee(xlee(x), T2:), T2:esc(xesc(x), T2:), T2:abortabort , T1:, T1:commitcommit

6.6. T1:lee(x), T2:T1:lee(x), T2:esc(xesc(x), T1:), T1:esc(xesc(x), T2:), T2:commitcommit, T1:, T1:commitcommit

7.7. T1:T1:esc(xesc(x), T2:lee(x), T1:), T2:lee(x), T1:esc(xesc(x), T2:), T2:abortabort , T1:, T1:commitcommit

8.8. T1:T1:esc(xesc(x), T2:), T2:lee(xlee(x), T1:), T1:esc(xesc(x), T2:), T2:commitcommit, T1:, T1:commitcommit

Universitat de València 2006/07 54BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

2.2. Indica qué algoritmos de control de concurrencia Indica qué algoritmos de control de concurrencia permitirían la ejecución de las planificaciones del permitirían la ejecución de las planificaciones del ejercicio anterior (bloqueo con protocolo en dos ejercicio anterior (bloqueo con protocolo en dos fases, fases, multiversiónmultiversión, ordenación parcial de marcas , ordenación parcial de marcas de tiempo con y sin reglas de Thomas).de tiempo con y sin reglas de Thomas).

3.3. Considera las siguientes secuencias de acciones:Considera las siguientes secuencias de acciones:

P1:{T1: lee(x), T2:P1:{T1: lee(x), T2:esc(xesc(x), T2: ), T2: esc(yesc(y), T3: ), T3: esc(yesc(y), T1: ), T1: esc(yesc(y), T1: ), T1: commitcommit, , T2: T2: commitcommit, T3: , T3: commitcommit}}

P2:{T1: lee(x), T2: P2:{T1: lee(x), T2: esc(yesc(y), T2:), T2:esc(xesc(x), T3: ), T3: esc(yesc(y), T1: ), T1: esc(yesc(y), T1: ), T1: commitcommit, , T2: T2: commitcommit, T3:, T3:commitcommit}}

Simula el comportamiento de los siguientes algoritmos: Simula el comportamiento de los siguientes algoritmos: optimista, optimista, multiversiónmultiversión, protocolo en 2 fases con , protocolo en 2 fases con prevención y detección del prevención y detección del interbloqueointerbloqueo..

Page 28: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 55BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

4.4. Dar un ejemplo de diferentes planificaciones: Dar un ejemplo de diferentes planificaciones: serializablesserializables en en

vistas y en conflictos, recuperables, sin cascada.vistas y en conflictos, recuperables, sin cascada.

5.5. Dado el siguiente esquemaDado el siguiente esquema

sobre el se realiza una actualización en el empleado con sobre el se realiza una actualización en el empleado con

nombre ‘Ricardo’ que incrementa su salario en un 10%nombre ‘Ricardo’ que incrementa su salario en un 10%

Da un ejemplo de consulta que entraría en conflicto si se Da un ejemplo de consulta que entraría en conflicto si se

ejecutara al mismo tiempo.ejecutara al mismo tiempo.

6.6. Indicar el comportamiento del protocolo de asignación Indicar el comportamiento del protocolo de asignación

dinámica por marcas de tiempo en la siguiente planificación:dinámica por marcas de tiempo en la siguiente planificación:

P: {T1:P: {T1:initinit, T1:, T1:leelee g1, T2:g1, T2:initinit, T2:, T2:leelee g2, T2:g2, T2:leelee g1, g1,

T2:T2:escesc g1, T2:fin, T3:g1, T2:fin, T3:initinit, T3: , T3: leelee g3, T3:g3, T3:leelee g1, g1,

T4: T4: initinit, T4: , T4: escesc g3, T1: g3, T1: escesc g1, ...}g1, ...}

emp(id_emp, nombre, edad, salario, id_dept)dept(id_dept, mobre, piso)

Universitat de València 2006/07 56BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

Cuestiones de exámenes anterioresCuestiones de exámenes anteriores

1.1. Las planificaciones Las planificaciones serializadasserializadasno producen inconsistencias en no producen inconsistencias en la BD. ¿Existe algún algoritmo de control de concurrencia que la BD. ¿Existe algún algoritmo de control de concurrencia que aborte transacciones en una planificación aborte transacciones en una planificación serializadaserializada??

2.2. El algoritmo de control de concurrencia por certificación El algoritmo de control de concurrencia por certificación (optimista) aborta todas aquellas transacciones que realizan (optimista) aborta todas aquellas transacciones que realizan lectura en gránulos escritos por transacciones que certificaron lectura en gránulos escritos por transacciones que certificaron durante su tiempo de vida. ¿Crees que siempre que se da la durante su tiempo de vida. ¿Crees que siempre que se da la situación anterior es necesario abortar la transacción?situación anterior es necesario abortar la transacción?

3.3. Las situaciones de Las situaciones de interbloqueointerbloqueopueden evitarse haciendo que pueden evitarse haciendo que cada transacción bloqueo cada gránulo justo antes de usarlo y locada transacción bloqueo cada gránulo justo antes de usarlo y lodesbloquee justo después de utilizarlo. Sin embargo, el protocoldesbloquee justo después de utilizarlo. Sin embargo, el protocolo o utilizado por todos los SGBD es el protocolo en dos fases, ¿Por utilizado por todos los SGBD es el protocolo en dos fases, ¿Por qué?qué?

Page 29: Técnicas de control de concurrenciainformatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdfUniversitat de València 2006/07 BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente

Universitat de València 2006/07 57BD2-Tema 4: Control de concurrencia (Esther de Ves, Vicente Cerverón)

4.4. Para conseguir Para conseguir granularidadgranularidadmúltiple en los algoritmos múltiple en los algoritmos basados en bloqueos, se define lo que se conoce por ‘modos basados en bloqueos, se define lo que se conoce por ‘modos de intención’. Explicar que significa que un determinado de intención’. Explicar que significa que un determinado gránulo esté bloqueado en modo de intención en lugar de gránulo esté bloqueado en modo de intención en lugar de bloqueado en modo normal.bloqueado en modo normal.

5.5. Los grafos de reserva se utilizan para la detección del Los grafos de reserva se utilizan para la detección del interbloqueointerbloqueo. Una condición necesaria para que exista . Una condición necesaria para que exista interbloqueointerbloqueoes que exista un ciclo en el grafo de reservas. es que exista un ciclo en el grafo de reservas. ¿Es suficiente esta condición? ¿Por qué?¿Es suficiente esta condición? ¿Por qué?