El control de concurrencia se proporciona en una base de datos para:
- (i) hacer cumplir el aislamiento entre las transacciones.
- (ii) preservar la consistencia de la base de datos a través de la ejecución de transacciones que preservan la consistencia.
- (iii) resolver conflictos de lectura-escritura y escritura-lectura.
Varias técnicas de control de concurrencia son:
1. Two-phase locking Protocol 2. Time stamp ordering Protocol 3. Multi version concurrency control 4. Validation concurrency control
Estos se explican brevemente a continuación. 1. Protocolo de bloqueo de dos fases : el bloqueo es una operación que asegura: permiso para leer O permiso para escribir un elemento de datos. El bloqueo de dos fases es un proceso que se utiliza para obtener la propiedad de los recursos compartidos sin crear la posibilidad de interbloqueo. Las 3 actividades que tienen lugar en el algoritmo de actualización de dos fases son:
(i). Lock Acquisition (ii). Modification of Data (iii). Release Lock
El bloqueo de dos fases evita que se produzca un interbloqueo en los sistemas distribuidos al liberar todos los recursos que ha adquirido, si no es posible adquirir todos los recursos necesarios sin esperar a que otro proceso termine de usar un bloqueo. Esto significa que ningún proceso está nunca en un estado en el que retenga algunos recursos compartidos y espere a que otro proceso libere un recurso compartido que requiere. Esto significa que no se puede producir interbloqueo debido a la contención de recursos. Una transacción en el Protocolo de bloqueo de dos fases puede asumir una de las 2 fases:
- (i) Fase de crecimiento: en esta fase, una transacción solo puede adquirir bloqueos, pero no puede liberar ningún bloqueo. El punto en el que una transacción adquiere todos los bloqueos que necesita se denomina punto de bloqueo.
- (ii) Fase de reducción: en esta fase, una transacción solo puede liberar bloqueos pero no puede adquirir ninguno.
2. Protocolo de pedido de sello de tiempo : un sello de tiempo es una etiqueta que se puede adjuntar a cualquier transacción o elemento de datos, que indica un momento específico en el que la transacción o el elemento de datos se han utilizado de alguna manera. Una marca de tiempo se puede implementar de 2 maneras. Una es asignar directamente el valor actual del reloj a la transacción o elemento de datos. La otra es adjuntar el valor de un contador lógico que mantiene el incremento a medida que se requieren nuevas marcas de tiempo. La marca de tiempo de un elemento de datos puede ser de 2 tipos:
- (i) W-timestamp(X): Esto significa la última hora en que se ha escrito el elemento de datos X.
- (ii) R-timestamp(X): Esto significa la última vez que se leyó el elemento de datos X. Estas 2 marcas de tiempo se actualizan cada vez que se realiza con éxito una operación de lectura/escritura en el elemento de datos X.
3. Control de concurrencia multiversión: los esquemas multiversión conservan las versiones antiguas de los elementos de datos para aumentar la concurrencia. Bloqueo de fase de 2 versiones múltiples: cada escritura exitosa da como resultado la creación de una nueva versión del elemento de datos escrito. Las marcas de tiempo se utilizan para etiquetar las versiones. Cuando se emite una operación de lectura (X), seleccione una versión adecuada de X según la marca de tiempo de la transacción. 4. Control de concurrencia de validación :El enfoque optimista se basa en la suposición de que la mayoría de las operaciones de la base de datos no entran en conflicto. El enfoque optimista no requiere técnicas de bloqueo ni de sellado de tiempo. En cambio, una transacción se ejecuta sin restricciones hasta que se confirma. Usando un enfoque optimista, cada transacción pasa por 2 o 3 fases, denominadas lectura, validación y escritura.
- (i) Durante la fase de lectura, la transacción lee la base de datos, ejecuta los cálculos necesarios y realiza las actualizaciones en una copia privada de los valores de la base de datos. Todas las operaciones de actualización de las transacciones se registran en un archivo de actualización temporal, al que no acceden las transacciones restantes.
- (ii) Durante la fase de validación, la transacción se valida para garantizar que los cambios realizados no afectarán la integridad y consistencia de la base de datos. Si la prueba de validación es positiva, la transacción pasa a una fase de escritura. Si la prueba de validación es negativa, se reinicia la transacción y se descartan los cambios.
- (iii) Durante la fase de escritura, los cambios se aplican permanentemente a la base de datos.
Publicación traducida automáticamente
Artículo escrito por lemilxavier y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA