Cuando varias transacciones se ejecutan al mismo tiempo de manera no controlada o sin restricciones, esto puede generar varios problemas. Estos problemas se conocen comúnmente como problemas de concurrencia en un entorno de base de datos. Los cinco problemas de concurrencia que pueden ocurrir en la base de datos son:
- Problema de actualización temporal
- Problema de resumen incorrecto
- Problema de actualización perdida
- Problema de lectura irrepetible
- Problema de lectura fantasma
Estos se explican a continuación a continuación.
Problema de actualización temporal:
El problema de actualización temporal o lectura sucia ocurre cuando una transacción actualiza un artículo y falla. Pero el artículo actualizado es utilizado por otra transacción antes de que el artículo se cambie o se revierta a su último valor.
Ejemplo:
En el ejemplo anterior, si la transacción 1 falla por algún motivo, X volverá a su valor anterior. Pero la transacción 2 ya ha leído el valor incorrecto de X.
Problema de resumen incorrecto:
Considere una situación en la que una transacción aplica la función agregada en algunos registros mientras otra transacción actualiza estos registros. La función agregada puede calcular algunos valores antes de que se actualicen los valores y otros después de que se actualicen.
Ejemplo:
En el ejemplo anterior, la transacción 2 calcula la suma de algunos registros mientras que la transacción 1 los actualiza. Por lo tanto, la función agregada puede calcular algunos valores antes de que se actualicen y otros después de que se actualicen.
Problema de actualización perdida:
En el problema de actualización perdida, una actualización realizada en un elemento de datos por una transacción se pierde ya que se sobrescribe con la actualización realizada por otra transacción.
Ejemplo:
En el ejemplo anterior, la transacción 1 cambia el valor de X pero se sobrescribe con la actualización realizada por la transacción 2 en X. Por lo tanto, la actualización realizada por la transacción 1 se pierde.
Problema de lectura irrepetible:
El problema irrepetible ocurre cuando dos o más operaciones de lectura de la misma transacción leen valores diferentes de la misma variable.
Ejemplo:
En el ejemplo anterior, una vez que la transacción 2 lee la variable X, una operación de escritura en la transacción 1 cambia el valor de la variable X. Por lo tanto, cuando la transacción 2 realiza otra operación de lectura, lee el nuevo valor de X que fue actualizado por transacción 1.
Problema de lectura fantasma:
El problema de lectura fantasma ocurre cuando una transacción lee una variable una vez, pero cuando intenta leer esa misma variable nuevamente, ocurre un error que dice que la variable no existe.
Ejemplo:
En el ejemplo anterior, una vez que la transacción 2 lee la variable X, la transacción 1 elimina la variable X sin el conocimiento de la transacción 2. Por lo tanto, cuando la transacción 2 intenta leer X, no puede hacerlo.
Publicación traducida automáticamente
Artículo escrito por lemilxavier y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA