Recuperabilidad en DBMS – Part 1

Requisito previo:

Como se discutió, es posible que una transacción no se ejecute por completo debido a una falla de hardware, falla del sistema o problemas de software. En ese caso, tenemos que deshacer la transacción fallida. Pero alguna otra transacción también puede haber usado valores producidos por la transacción fallida. Así que también tenemos que revertir esas transacciones.

Horarios recuperables:

  • Los programas en los que las transacciones se confirman solo después de que todas las transacciones cuyos cambios leen se confirman se denominan programas recuperables. En otras palabras, si alguna transacción Tj está leyendo el valor actualizado o escrito por alguna otra transacción Ti , entonces la confirmación de Tj debe ocurrir después de la confirmación de Ti .
    Ejemplo 1:
    S1: R1(x), W1(x), R2(x), R1(y), R2(y), 
             W2(x), W1(y), C1, C2; 

    El programa dado sigue el orden de Ti->Tj => C1->C2 . La transacción T1 se ejecuta antes que T2, por lo tanto, no hay posibilidad de que ocurra un conflicto. R1(x) aparece antes de W1(x) y la transacción T1 se compromete antes de T2, es decir, la finalización de la primera transacción realizó la primera actualización en el elemento de datos x, por lo tanto, el cronograma dado es recuperable.

    Ejemplo 2: Considere el siguiente cronograma que involucra dos transacciones T 1 y T 2 .

    T 1 T 2
    REAL ACADEMIA DE BELLAS ARTES)
    WASHINGTON)
    WASHINGTON)
    REAL ACADEMIA DE BELLAS ARTES)
    comprometerse
    comprometerse

    Este es un programa recuperable ya que T 1 se compromete antes que T 2 , lo que hace que el valor leído por T 2 sea correcto.

Horario Irrecuperable:

  • La siguiente tabla muestra un cronograma con dos transacciones, T1 lee y escribe A y ese valor lo lee y escribe T2. T2 se compromete. Pero más tarde, T1 falla. Así que tenemos que revertir T1. Dado que T2 ha leído el valor escrito por T1, también debe revertirse. Pero ya hemos cometido eso. Entonces este horario es un horario irrecuperable. Cuando Tj está leyendo el valor actualizado por Ti y Tj se confirma antes de confirmar Ti, el cronograma será irrecuperable.
    Recoverabilityofschedules

Recuperable con Cascading Rollback:

  • La siguiente tabla muestra un cronograma con dos transacciones, T1 lee y escribe A y ese valor lo lee y escribe T2. Pero más tarde, T1 falla. Así que tenemos que revertir T1. Dado que T2 ha leído el valor escrito por T1, también debe revertirse. Como no se ha comprometido, también podemos revertir T2. Por lo tanto, es recuperable con una reversión en cascada. Por lo tanto, si Tj está leyendo el valor actualizado por Ti y la confirmación de Tj se retrasa hasta la confirmación de Ti, la programación se llama recuperable con reversión en cascada.
    Recoverabilityofschedules2

Reversión recuperable sin cascada:

  • La siguiente tabla muestra un cronograma con dos transacciones, T1 lee y escribe A y confirma, y ​​T2 lee ese valor. Pero si T1 falla antes de la confirmación, ninguna otra transacción ha leído su valor, por lo que no es necesario revertir otra transacción. Así que este es un programa recuperable sin cascada. Por lo tanto, si Tj lee el valor actualizado por Ti solo después de que Ti se haya comprometido, el programa será recuperable sin cascada.
    Recoverability3

Pregunta: ¿Cuál de los siguientes escenarios puede conducir a un error irrecuperable en un sistema de base de datos?

  1. Una transacción escribe un elemento de datos después de que una transacción no confirmada lo lea.
  2. Una transacción lee un elemento de datos después de que lo haya leído una transacción no confirmada.
  3. Una transacción lee un elemento de datos después de que una transacción confirmada lo escriba.
  4. Una transacción lee un elemento de datos después de que una transacción no confirmada lo haya escrito.

Respuesta: vea el ejemplo discutido en la Tabla 1, una transacción está leyendo un elemento de datos después de que una transacción no confirmada lo escribe, el cronograma será irrecuperable.
Publicación relacionada:
Serializabilidad de conflictos

Este artículo es una contribución de Sonal Tuteja . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *