En un sistema compartido multiusuario, varios usuarios que operan con los mismos datos pueden provocar inconsistencias en los datos, por lo que se requieren operaciones de bloqueo en operaciones concurrentes para controlar la ejecución concurrente de las transacciones.
Candado compartido:Como puede verse por el nombre, el bloqueo puede compartirse, la operación de escritura no debe compartirse, en cuanto los datos compartidos se escriben aleatoriamente, no hay "bloqueo" propiamente dicho, por lo que el bloqueo compartido es la operación de lectura "compartido", es decir, el bloqueo ya no puede escribirse tras la adición de este bloqueo, pero sí puede ser leído, y también puede llamarse bloqueo de solo lectura.
Cerraduras exclusivas:El bloqueo exclusivo es más dominante, mientras añada este bloqueo, no se pueden realizar otras operaciones, ¿por qué? Porque quiero modificar los datos, como quiero modificarlos, no debo permitir que otros los modifiquen de nuevo, y no debo añadir un bloqueo de solo lectura, porque con un bloqueo de solo lectura no puedo realizar operaciones de escritura.
Por ejemplo, si la transacción T1 añade un bloqueo compartido a los datos D1, y las transacciones T2 y T3 añaden bloqueos exclusivos a los datos D2 y D3 respectivamente, entonces la transacción T1 añade un bloqueo compartido a los datos (51). Datos de pares T2 de la transacción (52).
(51) Respuesta: D
R. D2 y D3 más la cerradura tienen éxito B. D2, D3 más el bloqueo compartido tienen éxito C. D2 más el bloqueo compartido tiene éxito, D3 añade que falla el bloqueo D. D2, D3 más los bloqueos exclusivos y compartidos fallan
(52) Respuesta: C
A. D1, D3 más el bloqueo compartido fallaron todos B. D1, D3 más el bloqueo compartido tienen éxito C. D1 más la cerradura compartida tuvieron éxito, D3 añadió otro bloqueo fallado D. D1 más la cerradura tuvieron éxito, y D3 no añadió la cerradura compartida
Si hay un bloqueo compartido, puedes añadir un bloqueo compartido, pero no puedes añadir un bloqueo exclusivo. Si existe un bloqueo exclusivo, entonces no se pueden añadir ni el bloqueo compartido ni el exclusivo.
|