Segundo Parcial 11/06/08 (Bases de Datos)

De Cuba-Wiki

Plantilla:Back

Enunciado

Ver el enunciado

Optimización

Algebraica

Consulta SQL:

SELECT P.DNI, P.nombre, P.fecha-nacimiento, M.nombre, C.fecha
FROM PACIENTE P, MEDICO M, CONSULTA C
WHERE P.DNI = C.DNI AND M.matricula =C.matricula AND C.fecha>=’01/01/2008’ AND M.especialidad=’Cardiología’

Consulta algebraica:

Arbol canonico:

  Proyeccion
      |
  Seleccion
      |
     Join
    /    \
  Join    C
 /    \
P      M

Cálculo de Costos

El index scan sobre paciente tiene un costo de input de 56 accesos, y un costo de salida por la materialización de 53 accesos.


El INLJ tiene un costo de entrada de 121298, sin costo de salida pues se hace pipe hacia la proyeccion.


El costo total entonces es de 122037.

La salida tiene un costo de 7500.

Transacciones

Serializabilidad

  • H1 no es equivalente
  • H2 no es equivalente
  • H3 sí es equivalente

Recuperabilidad

  • H0 ST
  • H1 ST
  • H2 ST
  • H3 ACA
  • H4 ST

Logging

Punto A

Undo logging con checkpoint no-quiescente:

  1. <START T2>
  2. <T2, X, 0>
  3. <T2, Z, 0>
  4. <START CKPT(T2)>
  5. <START T3>
  6. <START T1>
  7. <T3, Z, 1>
  8. <T1, X, 1>
  9. <T1, Y, 0>
  10. <START T4>
  11. <T4, Y, 1>
  12. <T2, X, 2>
  13. <T2, Z, 2>
  14. <COMMIT T2>
  15. <END CKPT>
  16. <T1, X, 3>
  17. <COMMIT T1>
  18. <T3, Z, 3>
  19. <COMMIT T3>
  20. <T4, X, 4>
  21. <COMMIT T4>

El checkpoint se puede terminar cuando todas las transacciones terminan de alguna manera, en este caso solo esperamos a que commitee T2.

Punto B

  1. <START T2>
  2. <T2, X, 1>
  3. <T2, Z, 1>
  4. <START T3>
  5. <START T1>
  6. <T3, Z, 2>
  7. <T1, X, 2>
  8. <T1, Y, 1>
  9. <START T4>
  10. <T4, Y, 2>
  11. <T2, X, 3>
  12. <T2, Z, 3>
  13. <COMMIT T2>
  14. <T1, X, 4>
  15. <COMMIT T1>
  16. <T3, Z, 4>
  17. <COMMIT T3>
  18. <T4, X, 5>
  19. <COMMIT T4>

En mi cuatrimestre no vimos Redo-Quiescente, el que lo haya visto puede completar el checkpoint.

Punto C

  1. <START T2>
  2. <T2, X, 0, 1>
  3. <T2, Z, 0, 1>
  4. <START T3>
  5. <START T1>
  6. <T3, Z, 1, 2>
  7. <T1, X, 1, 2>
  8. <T1, Y, 0, 1>
  9. <START T4>
  10. <T4, Y, 1, 2>
  11. <T2, X, 2, 3>
  12. <T2, Z, 2, 3>
  13. <COMMIT T2>
  14. <T1, X, 3, 4>
  15. <COMMIT T1>
  16. <T3, Z, 3, 4>
  17. <COMMIT T3>
  18. <T4, X, 4, 5>
  19. <COMMIT T4>