Elementos de Bases de Datos Ejercicios - Departamento de ...
Elementos de Bases de Datos Ejercicios - Departamento de ...
Elementos de Bases de Datos Ejercicios - Departamento de ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Departamento</strong> <strong>de</strong> Ciencias e Ingeniería en<br />
Ingeniería <strong>de</strong> la Computación Sistemas <strong>de</strong> Computación<br />
<strong>Ejercicios</strong><br />
<strong>Elementos</strong> <strong>de</strong> <strong>Bases</strong> <strong>de</strong> <strong>Datos</strong><br />
Trabajo Práctico N◦ 8<br />
Protocolos para Control <strong>de</strong> Concurrencia<br />
Segundo Cuatrimestre <strong>de</strong> 2004<br />
1. ¿Cuál <strong>de</strong> las propieda<strong>de</strong>s ACID sobre transacciones aseguran los protocolos <strong>de</strong> control <strong>de</strong> concurrencia?<br />
2. Dadas las siguientes transacciones:<br />
i) T1 T2 ii) T3 T4 T5<br />
Read(A) Read(B) Read(A) Read(A) Read(B)<br />
Write(A) Read(A) Write(A) Read(B) Write(B)<br />
Read(B) Write(B) Read(B)<br />
Para los incisos i) y ii) se pi<strong>de</strong>:<br />
(a) Encontrar, si es posible, una planificación concurrente resultante <strong>de</strong> aplicar el protocolo <strong>de</strong><br />
dos fases con sólo locks exclusivos.<br />
(b) Encontrar, si es posible, una planificación concurrente resultante <strong>de</strong> aplicar el protocolo <strong>de</strong><br />
dos fases con posibilida<strong>de</strong>s <strong>de</strong> locks exclusivos y compartidos.<br />
(c) Encontrar, si es posible, una planificación concurrente resultante <strong>de</strong> aplicar el protocolo <strong>de</strong><br />
dos fases con posibilida<strong>de</strong>s <strong>de</strong> locks compartidos, upgra<strong>de</strong> y downgra<strong>de</strong>.<br />
(d) Encontrar una planificación concurrente resultante <strong>de</strong> aplicar alguno <strong>de</strong> los protocolos <strong>de</strong><br />
dos fases que resulte en <strong>de</strong>adlock.<br />
(e) Encontrar una planificación concurrente resultante <strong>de</strong> aplicar a los requerimientos <strong>de</strong> entrada<br />
un protocolo <strong>de</strong> locking sin imponer dos fases. Es serializable? Es posible llegar a<br />
una planificación no serializable?<br />
(f) Analizar las diferentes alternativas <strong>de</strong> bloqueo para los protocolos <strong>de</strong> dos fases en cuanto a<br />
serializabilidad <strong>de</strong> las planificaciones, nivel <strong>de</strong> concurrencia y posibilidad <strong>de</strong> <strong>de</strong>adlock.<br />
3. ¿Qué ventajas y <strong>de</strong>sventajas proporciona la alternativa <strong>de</strong> bloqueo <strong>de</strong> dos fases estricto?<br />
4. Dada la siguiente transacción: T0 = req(C); req(D); req(G) (por req(X) entiéndase, requiere X)<br />
y el siguiente grafo <strong>de</strong> prece<strong>de</strong>ncia:<br />
A<br />
/ \<br />
B C<br />
/ \ |<br />
D E F<br />
/ \<br />
G H<br />
Mostrar la secuencia <strong>de</strong> locks necesarios para po<strong>de</strong>r ejecutar T0.
5. Analice los protocolos basados en árbol en cuanto los siguientes puntos. Justifique.<br />
• Serializabilidad <strong>de</strong> las planificaciones.<br />
• Nivel <strong>de</strong> concurrencia.<br />
• Posibilidad <strong>de</strong> <strong>de</strong>adlock.<br />
• Posibilidad <strong>de</strong> inanición.<br />
6. Dadas las siguientes transacciones:<br />
T0 = read(B); write(B); read(A); write(A)<br />
T1 = read(B); read(C); write(A); write(C)<br />
T2 = read(A); write(A); write(B)<br />
Con tiempo(T0) < tiempo(T1) < tiempo(T2) ytr(A) =tr(B) =tr(C) =tw(A) =tw(B) =<br />
tw(C) =0<br />
(a) Encontrar, si es posible, una planificación concurrente don<strong>de</strong> al menos una <strong>de</strong> las transacciones<br />
retroceda aplicando el algoritmo <strong>de</strong> estampilla <strong>de</strong> tiempos.<br />
(b) Encontrar, si es posible, una planificación concurrente don<strong>de</strong> ninguna transacción retroceda<br />
aplicando el algoritmo <strong>de</strong> estampilla <strong>de</strong> tiempos.<br />
(c) Encontrar, si es posible, una planificación concurrente don<strong>de</strong> <strong>de</strong>ba retroce<strong>de</strong>r en cascada<br />
más <strong>de</strong> una transacción aplicando el algoritmo <strong>de</strong> estampilla <strong>de</strong> tiempos.<br />
(d) Encontrar, si es posible, una planificación concurrente don<strong>de</strong> la falla <strong>de</strong> una transacción<br />
resulte en una planificación no recuperable.<br />
(e) Encontrar, si es posible, una planificación don<strong>de</strong> se pueda aplicar la regla <strong>de</strong> escritura <strong>de</strong><br />
Thomas.<br />
7. Para la siguiente planificación <strong>de</strong> entrada:<br />
Con tiempo(T0) < tiempo(T1) < tiempo(T2)<br />
T0 T1 T2<br />
Read(A)<br />
Write(A)<br />
Write(A)<br />
Write(A)<br />
(a) Verificar si es serializable en conflictos y en vistas.<br />
(b) ¿Pue<strong>de</strong> resultar esta planificación <strong>de</strong> aplicar el protocolo <strong>de</strong> dos fases?<br />
(c) ¿Pue<strong>de</strong> resultar esta planificación <strong>de</strong> aplicar el protocolo <strong>de</strong> estampillas <strong>de</strong> tiempo tradicional?<br />
(d) ¿Pue<strong>de</strong> resultar esta planificación <strong>de</strong> aplicar el protocolo <strong>de</strong> estampillas con la regla <strong>de</strong><br />
escritura <strong>de</strong> Thomas?<br />
8. Para las transacciones T0, T1 yT2, con tiempo(T0) < tiempo(T1) < tiempo(T2) y la siguiente<br />
planificación:
T0 T1 T2<br />
Read(A)<br />
Read(B)<br />
Read(A)<br />
Write(A)<br />
Read(A)<br />
Write(B)<br />
Write(B)<br />
Read(B)<br />
(a) Analizar el resultado <strong>de</strong> aplicar el protocolo <strong>de</strong> multiversión.<br />
(b) Encontrar, si el posible, otra planificación que al aplicar el protocolo <strong>de</strong> multiversión resulte<br />
en algún retroceso.<br />
9. Para las transacciones T0, T1 yT2 y la siguiente planificación, analizar el resultado <strong>de</strong> aplicar<br />
el protocolo <strong>de</strong> validación.<br />
10. Para las transacciones:<br />
T0 = read(A); read(B); write(A); write(B)<br />
T1 = write(B); write(C)<br />
T2 = read(C); read(B)write(C); write(B)<br />
T0 T1 T2<br />
Read(A)<br />
Read(B)<br />
Read(A)<br />
Read(C)<br />
Read(A)<br />
Valid<br />
Write(B)<br />
Valid<br />
Write(B)<br />
Read(B)<br />
Valid<br />
(a) Encontrar una planificación resultante <strong>de</strong> aplicar el protocolo <strong>de</strong> dos fases.<br />
(b) Encontrar una planificación resultante <strong>de</strong> aplicar el protocolo <strong>de</strong> estampillas.<br />
(c) Encontrar una planificación resultante <strong>de</strong> aplicar el protocolo <strong>de</strong> árbol (<strong>de</strong>finir el grafo <strong>de</strong><br />
prece<strong>de</strong>ncia).<br />
(d) Encontrar una planificación resultante <strong>de</strong> aplicar el protocolo <strong>de</strong> multiversión.<br />
(e) Encontrar una planificación resultante <strong>de</strong> aplicar el protocolo <strong>de</strong> validación.<br />
11. Para las transacciones T1 yT2 que se muestran a continuación, con valor inicial <strong>de</strong> A = 100,<br />
B = 200, C = 300 y D = 400.<br />
T1: Begin T2: Begin<br />
Read(B) Read(A)<br />
B = B ∗ 4 A = A + 100<br />
Write(B) Write(A)<br />
Read(C) Read(B)<br />
Read(D) Read(C)<br />
C = B + D B = C<br />
Write(C) Write(B)<br />
End End
(a) Dar una planificación concurrente serializable usando el protocolo <strong>de</strong> bloqueos <strong>de</strong> dos fases<br />
con locks compartidos y exclusivos que no caiga en <strong>de</strong>adlock. ¿Cuál es la serie equivalente?<br />
¿Cuáles son los valores finales <strong>de</strong> A, B, C y D?<br />
(b) Dar una planificación concurrente serializable usando el protocolo <strong>de</strong> bloqueos <strong>de</strong> dos fases<br />
con locks compartidos y upgra<strong>de</strong> que caiga en <strong>de</strong>adlock. Indicar claramente el punto don<strong>de</strong><br />
se produce el <strong>de</strong>adlock.<br />
(c) ¿Es posible encontrar una planificación concurrente serializable usando el protocolo <strong>de</strong> dos<br />
fases estricto?<br />
12. Dada la siguiente planificación concurrente<br />
T1 T2 T3<br />
Read(A)<br />
Write(A)<br />
Write(B)<br />
Read(A)<br />
Write(A)<br />
Read(A)<br />
Write(B)<br />
Write(B)<br />
Write(C)<br />
Para cada uno <strong>de</strong> los protocolos que se enumeran a continuación, especificar si el protocolo<br />
aceptaonolaplanificación anterior. En el caso en que no la acepte, indicar el punto don<strong>de</strong> falla<br />
y enumerar los pasos a seguir en el proceso <strong>de</strong> recuperación.<br />
(a) Protocolo <strong>de</strong> Estampillas <strong>de</strong> Tiempo.<br />
(b) Protocolo <strong>de</strong> Estampillas <strong>de</strong> Tiempo con regla <strong>de</strong> escritura <strong>de</strong> Thomas.<br />
(c) Protocolo Multiversión.