Wednesday, February 08, 2006

2- Bloqueos mutuos en bases de datos:

Igual que en el caso anterior un bloqueo mutuo puede ocurrir con registros de bases de datos. Las bases de datos pueden ser bloqueadas completas, parcialmente o sólo el registro utilizado. Al ser bloqueada la base de datos entera no ocurren bloqueos entre registros, pero ésta sólo puede ser utilizada por un usuario. Entre menor es el bloqueo más usuarios pueden trabajar con la misma base de datos, pero mayor es el riesgo de bloquear el sistema.
En el siguiente ejemplo vemos como se produce un bloqueo mutuo cuando solamente se bloquean los registros utilizados:
a) Un proceso P1 pide un registro R1 y lo bloquea.
b) Otro proceso P2 pide y bloquea el registro R2.
c) P1 solicita R2 y éste está bloqueado.
d) P2 solicita R1 y está bloqueado por P1.
Una alternativa para solucionar el problema es no usar bloqueos ya que un registro puede ser usado por más de un proceso, pero esto lleva al siguiente problema:

Si dos programas accedan el mismo registro para actualizarlo al mismo tiempo los datos del éste serán equivocados en ambas actualizaciones como podemos ver en la figura. El resultado dependerá de cual proceso gana “la carrera” o termina primero, pero en ambos casos el resultado será incorrecto.

No comments: