Control de concurrencia en DBMS – Part 1

El control de concurrencia se ocupa de la ejecución intercalada de más de una transacción. En el próximo artículo, veremos qué es la serialización y cómo encontrar si un horario es serializable o no.

¿Qué es Transacción? 

Un conjunto de operaciones relacionadas lógicamente se conoce como transacción. Las principales operaciones de una transacción son:

Read(A): operaciones de lectura Read(A) o R(A) lee el valor de A de la base de datos y lo almacena en un búfer en la memoria principal.

Escribir (A): la operación de escritura Write(A) o W(A) vuelve a escribir el valor en la base de datos desde el búfer. 

(Nota: no siempre es necesario volver a escribirlo en una base de datos, solo escribe los cambios en el búfer, esta es la razón por la que la lectura sucia entra en escena) 

Tomemos una transacción de débito de una cuenta que consta de las siguientes operaciones:

  1. REAL ACADEMIA DE BELLAS ARTES);
  2. A=A-1000;
  3. WASHINGTON);

Suponga que el valor de A antes de iniciar la transacción es 5000.

  • La primera operación lee el valor de A de la base de datos y lo almacena en un búfer.
  • la segunda operación disminuirá su valor en 1000. Por lo tanto, el búfer contendrá 4000.
  • la tercera operación escribirá el valor del búfer en la base de datos. Entonces el valor final de A será 4000.

Pero también puede ser posible que la transacción falle después de ejecutar algunas de sus operaciones. La falla puede ser por hardware, software o energía, etc. Por ejemplo, si la transacción de débito discutida anteriormente falla después de ejecutar la operación 2, el valor de A permanecerá en la base de datos en 5000, lo cual no es aceptable para el banco. Para evitar esto, la base de datos tiene dos operaciones importantes: 

Confirmar: después de que todas las instrucciones de una transacción se ejecutan con éxito, los cambios realizados por una transacción se hacen permanentes en la base de datos.

Revertir: si una transacción no puede ejecutar todas las operaciones con éxito, se deshacen todos los cambios realizados por una transacción.

Propiedades de una transacción:

Atomicidad: Como una transacción es un conjunto de operaciones relacionadas lógicamente, se deben ejecutar todas o ninguna . Una transacción de débito discutida anteriormente debe ejecutar las tres operaciones o ninguna. Si la transacción de débito falla después de ejecutar las operaciones 1 y 2, su nuevo valor de 4000 no se actualizará en la base de datos, lo que genera inconsistencias.

Coherencia: si las operaciones de transacciones de débito y crédito en la misma cuenta se ejecutan al mismo tiempo, puede dejar la base de datos en un estado inconsistente.

  • Por ejemplo, con T1 (débito de 1000 rupias de A) y T2 (crédito de 500 para A) ejecutándose simultáneamente, la base de datos alcanza un estado inconsistente.
  • Supongamos que el saldo de la cuenta de A es Rs. 5000. T1 lee A(5000) y almacena el valor en su espacio de búfer local. Luego, T2 lee A(5000) y también almacena el valor en su espacio de búfer local.
  • T1 realiza A=A-1000 (5000-1000=4000) y 4000 se almacena en el espacio de búfer de T1. Entonces T2 realiza A=A+500 (5000+500=5500) y 5500 se almacena en el espacio de búfer de T2. T1 vuelve a escribir el valor de su búfer en la base de datos.
  • El valor de A se actualiza a 4000 en la base de datos y luego T2 vuelve a escribir el valor de su búfer en la base de datos. El valor de A se actualiza a 5500, lo que muestra que el efecto de la transacción de débito se pierde y la base de datos se vuelve inconsistente.
  • Para mantener la consistencia de la base de datos, necesitamos protocolos de control de concurrencia que se discutirán en el próximo artículo. Las operaciones de T1 y T2 con sus buffers y base de datos se muestran en la Tabla 1.
T1 espacio de búfer de T1 T2 Espacio de búfer de T2 Base de datos
        A=5000
REAL ACADEMIA DE BELLAS ARTES); A=5000     A=5000
  A=5000 REAL ACADEMIA DE BELLAS ARTES); A=5000 A=5000
A=A-1000; A=4000   A=5000 A=5000
  A=4000 A=A+500; A=5500  
WASHINGTON);     A=5500 A=4000
    WASHINGTON);   A=5500

tabla 1

Aislamiento: el resultado de una transacción no debe ser visible para otros antes de que se confirme la transacción. Por ejemplo, supongamos que el saldo de A es Rs. 5000 y débitos T1 Rs. 1000 de A. El nuevo saldo de A será de 4000. Si T2 acredita Rs. 500 al nuevo saldo de A, A se convertirá en 4500, y después de esto T1 falla. Luego, también tenemos que revertir T2 porque está usando el valor producido por T1. Por lo tanto, los resultados de la transacción no se hacen visibles para otras transacciones antes de que se confirme.

Duradero: una vez que la base de datos ha confirmado una transacción, los cambios realizados por la transacción deben ser permanentes. p.ej; Si una persona ha acreditado $500000 en su cuenta, el banco no puede decir que la actualización se ha perdido. Para evitar este problema, se almacenan varias copias de la base de datos en diferentes ubicaciones.

¿Qué es un Horario? 

Un cronograma es una serie de operaciones de una o más transacciones. Un horario puede ser de dos tipos: 

  • Programación en serie: cuando una transacción se ejecuta por completo antes de iniciar otra transacción, la programación se denomina programación en serie. Un horario serial siempre es consistente. p.ej; Si un cronograma S tiene una transacción de débito T1 y una transacción de crédito T2, los posibles cronogramas en serie son T1 seguido de T2 (T1->T2) o T2 seguido de T1 ((T2->T1). Un cronograma en serie tiene un bajo rendimiento y menos utilización de recursos. .
  • Cronograma Concurrente: Cuando las operaciones de una transacción se intercalan con operaciones de otras transacciones de un cronograma, el cronograma se denomina cronograma Concurrente. p.ej; el Cronograma de transacciones de débito y crédito que se muestra en la Tabla 1 es concurrente. Pero la concurrencia puede generar inconsistencias en la base de datos. El ejemplo anterior de un cronograma concurrente también es inconsistente.

Pregunta: Considere la siguiente transacción que involucra dos cuentas bancarias x e y: 

  1. leer(x);
  2. x := x – 50;
  3. escribir(x);
  4. Listo);
  5. y := y + 50;
  6. escribir(y);

La restricción de que la suma de las cuentas xey debe permanecer constante es la de? 

  1. Atomicidad
  2. Consistencia
  3. Aislamiento
  4. Durabilidad                                                                                                                                                                                          [GATE 2015]

Solución: como se discutió en las propiedades de las transacciones, las propiedades de consistencia dicen que la suma de las cuentas x e y debe permanecer constante antes de comenzar y después de completar una transacción. Entonces, la respuesta correcta es B. 

Ventajas de la concurrencia:

En general, concurrencia significa que más de una transacción puede funcionar en un sistema.

Las ventajas de un sistema concurrente son:

  • Tiempo de espera: significa que si un proceso está en un estado listo pero aún así el proceso no logra que el sistema se ejecute, se denomina tiempo de espera. Entonces, la concurrencia conduce a menos tiempo de espera .
  • Tiempo de respuesta: el tiempo perdido en obtener la respuesta de la CPU por primera vez se denomina tiempo de respuesta. Por lo tanto, la concurrencia conduce a un menor tiempo de respuesta .
  • Utilización de recursos: la cantidad de utilización de recursos en un sistema en particular se denomina utilización de recursos. Múltiples transacciones pueden ejecutarse en paralelo en un sistema. Por lo tanto, la simultaneidad conduce a una mayor utilización de recursos .
  • Eficiencia: La cantidad de producto producido en comparación con la entrada dada se llama eficiencia. Entonces, la concurrencia conduce a una mayor eficiencia .
     

Artículo siguiente-  Serializabilidad de Horarios 

Artículo aportado por 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 *