26.07.2013 Views

Elementos de Bases de Datos Ejercicios - Departamento de ...

Elementos de Bases de Datos Ejercicios - Departamento de ...

Elementos de Bases de Datos Ejercicios - Departamento de ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!