Protocolo de control de concurrencia de bloqueo de dos fases (2-PL) | conjunto 3

Requisito previo: conceptos básicos del protocolo de bloqueo de dos fases (2-PL) , tipos de 2-PL

Ahora, sabemos que tanto Strict 2-PL como Rigorous 2-PL evitan Cascading Rollbacks y garantizan un horario estricto, pero aún no podemos garantizar que nuestro horario esté libre de puntos muertos. Hemos visto que tanto Strict como Rigorous 2-PL tienen una aplicación similar y es común el concepto erróneo general de que Conservative 2-PL también sigue los mismos conjuntos de protocolos que los dos anteriores. Para mayor claridad, veamos Conservative 2-PL en detalle. 

Conservador 2-PL –

También conocido como Static 2-PL , este protocolo requiere que la transacción bloquee todos los elementos a los que accede antes de que la transacción comience a ejecutarse al declarar previamente su conjunto de lectura y escritura. Si alguno de los elementos predeclarados necesarios no se puede bloquear, la transacción no bloquea ninguno de los elementos, sino que espera hasta que todos los elementos estén disponibles para el bloqueo. Por lo tanto, la operación con los datos no puede comenzar hasta que bloqueemos todos los elementos necesarios. 

Ahora veamos un ejemplo interesante sobre Conservative 2-PL. ¿Dime si el siguiente horario sigue el Conservador 2-PL? 
 

Schedule:   Lock-X(A)  Lock-X(B)  Read(A)  Read(B)  Write(A)  Unlock(A)  Commit  Unlock(B)

¿Cree que el Programa anterior no sigue el Conservative 2-PL? No confunda el protocolo como una versión modificada de Rigorous 2-PL. Podemos liberar los bloqueos cuando queramos, pero debemos bloquear todos los elementos de datos antes de realizar cualquier operación. Esto es lo que lo hace libre de interbloqueos. El programa anterior sigue el Conservative 2-PL.

Algunas características interesantes sobre Conservative 2-PL: 
 

  • El siguiente programa no tendrá una fase de crecimiento como hemos visto en Básico, Estricto y Riguroso 2-PL. Dado que es obligatorio bloquear los datos antes de usarlos, este protocolo no tiene fase de crecimiento . Además, esta regla lo libera de interbloqueos, ya que si un elemento no está disponible para bloquear, la transacción libera todos los bloqueos y vuelve a intentarlo más tarde, es decir, no espera ni espera . Esto hace que una de las cuatro condiciones necesarias para el interbloqueo sea nula.
  • Solo tenemos que bloquear todos los elementos de antemano, por lo que liberarlos o desbloquearlos no tiene restricciones como las que teníamos en Strict or Rigorous 2-PL.
  • Como no se realizan operaciones antes de adquirir todos los bloqueos, no tenemos una fase de Crecimiento en este protocolo, a diferencia de Básico, Estricto, Riguroso 2-PL.
  • Aunque obtenemos un cronograma libre de Deadlock en este protocolo, aún podemos enfrentar inconvenientes como Cascading Rollbacks . Por lo que este protocolo no asegura Horarios Estrictos . Esta es una desventaja en comparación con Strict and Rigorous 2-PL.

Vamos a discutir un ejemplo ahora. Vea cómo el programa a continuación sigue el 2-PL conservador pero no sigue el 2-PL estricto y riguroso. 
 

  T 1 T 2
1 
 
Bloqueo-X(A)  
2 Bloqueo-X(B)  
3 Leer un)  
4 *operación en A  
5 Escribe un)  
6 Desbloquear (A)  
7   Bloqueo-X(A)
8   Leer un)
9   *operación en A
10   Escribe un)
11   Desbloquear (A)
12 Leer (B)  
13 *operación en B  
14 Escribir (B)  
15 Desbloquear (B)  
dieciséis Comprometerse  
17   Comprometerse

Mire el cronograma, sigue completamente a Conservative 2-PL, pero no cumple con los requisitos de Strict and Rigorous 2-PL, eso se debe a que desbloqueamos A y B antes de que se confirme la transacción. 

¿Cómo puede ocurrir el aborto en cascada en Conservative 2-PL?  
Esto puede suceder porque una transacción puede realizar una lectura sucia de otra transacción. No tenemos tales restricciones en nuestro protocolo, por lo que esta situación es posible. 

Mire el ejemplo anterior, tenemos una operación de lectura sucia de T 1 a T 2 en el paso 8. Si T 1 aborta, entonces T 2 se retrotraerá. 

Pregunta relacionada con GATE: 
GATE-CS-2016 (Conjunto 1) | Pregunta 61
 

Publicación traducida automáticamente

Artículo escrito por zerocool y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *