UTNianos

Versión completa: Finales GDD Diciembre 2022
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Aca dejo uno de los finales que rendi de Gestion de Datos y aprobe. Y dejo el final anterior, ambos de diciembre 2022, tambien con las resoluciones.
Buenas! Desde ya muchas gracias por compartir estos finales! Te quería preguntar en el punto 3B por qué la respuesta correcta es la B, no generaría deadlock? Si tendrías un resumen o algo donde explique bien eso te lo re agradecería!
(21-12-2022 18:16)IgnacioP escribió: [ -> ]Buenas! Desde ya muchas gracias por compartir estos finales! Te quería preguntar en el punto 3B por qué la respuesta correcta es la B, no generaría deadlock? Si tendrías un resumen o algo donde explique bien eso te lo re agradecería!

La respuesta correcta es la B por lo siguiente:
En T1 ambos procesos se setean, uno con repeteable read y el otro con read commited.
En T2, el PA lee el registro de la tabla Producto que tiene un valor de prod_codigo = 1. Como PA seteo con repeteable read, va a poner un tipo de bloqueo sobre ese registro, para poder mantener sus propiedades, que son lectura repetible, y que no existan lescturas basuras. Basicamente bloquearia a toda transaccion que quiera hacer delete o update sobre el prod_codigo=1.
EN T3 el PB, quiere leer de la tabla Producto el registro con prod_codigo=1, y lo puede leer, ya que solamente esta haciendo lectura. Si PB, querria hacer un delete o update, ahi si se bloquearia. COmo PB esta seteado con read commited, solo va a bloquear el registro por el lapso que realiza la lectura, y luego lo libera.
En T4, el PA, modifica el registro que tiene el prod_codigo=1, y le cambia el detalle a "Proceso A". Esto lo puede hacer, ya que no hay ningun proceso que haya bloqueado a prod_codigo=1. Porq PB, solo bloqueo ese registro en T3 durante la lectura del mismo, y luego de eso, lo desbloquea.
En T5, el PB quiere modificar el pord_codigo=1, pero no va a poder, ya que se encuentra bloqueado por PA, para delete y update, por lo tanto se bloquea.
En T6, el PA commitea el valor "Proceso A" y desbloquea ese registro.
Luego de que eso, se desbloquea el PB, que estaba bloqueado, y puede hacer el update del prod_codigo=1, cambiando el detalle a "Proceso B". Y posteriormente a eso, realiza el commit. Quedando como el valor final "Proceso B".

Por eso la opcion correcta era la B y no con deadlock
URLs de referencia