Gestión de transacciones en sistemas de gestión de bases de datos: estados, tipos y ACID.

⚡ Resumen inteligente

La gestión de transacciones de bases de datos trata una o más operaciones de base de datos como una única unidad lógica que traslada la base de datos de un estado coherente a otro. Se basa en las propiedades ACID, los estados de transacción definidos y las planificaciones para garantizar un acceso concurrente correcto.

  • 🔁 Unidad central: Una transacción agrupa operaciones de lectura y escritura relacionadas, de modo que se completan o fracasan conjuntamente, nunca a medias.
  • 🧪 Propiedades del ÁCIDO: AtomLa fiabilidad, la consistencia, el aislamiento y la durabilidad garantizan resultados correctos incluso en caso de fallo o concurrencia.
  • 🚦 Estados de la transacción: Las etapas Activa, parcialmente confirmada, confirmada, fallida y terminada describen el ciclo de vida de una transacción.
  • 👥 ¿Por qué la concurrencia? Al ser una base de datos compartida, se ejecutan muchas transacciones simultáneamente y estas no deben corromper los datos de las demás.
  • 📋 Horarios: Un cronograma ordena las operaciones de transacciones paralelas, preservando al mismo tiempo la secuencia interna de cada transacción.
  • 🔗 Serializabilidad: Una planificación concurrente es correcta cuando su resultado es igual a alguna ejecución en serie, según lo determine el principio de equivalencia de conflictos o vistas.
  • ↩️ Recuperación: Una transacción fallida se revierte, de modo que sus escrituras parciales nunca llegan a la base de datos confirmada.

Gestión de transacciones en sistemas de gestión de bases de datos (DBMS)

¿Qué es una transacción de base de datos?

A Transacción de base de datos Una transacción es una unidad lógica de procesamiento en un sistema de gestión de bases de datos (DBMS) que implica una o más operaciones de acceso a la base de datos. En resumen, las transacciones de base de datos representan eventos reales de cualquier empresa.

En los sistemas de gestión de bases de datos (DBMS), todas las operaciones de acceso a la base de datos que se realizan entre las instrucciones de inicio y fin de la transacción se consideran una única transacción lógica. Durante la transacción, la base de datos permanece inconsistente. El estado cambia de un estado consistente a otro solo cuando la transacción se confirma.

Transacción de base de datos que se mueve entre estados consistentes
Transacción de base de datos

Información sobre las transacciones en bases de datos

  • Una transacción es una unidad de programa cuya ejecución puede cambiar o no el contenido de una base de datos.
  • El concepto de transacción en DBMS se ejecuta como una sola unidad.
  • Si las operaciones de la base de datos no actualizan la base de datos sino que solo recuperan datos, este tipo de transacción se denomina transacción de solo lectura.
  • Una transacción exitosa puede cambiar la base de datos de un ESTADO CONSISTENTE a otro.
  • Las transacciones de los sistemas de gestión de bases de datos (DBMS) deben ser atómicas, consistentes, aisladas y duraderas.
  • Si la base de datos estuviera en un estado inconsistente antes de una transacción, permanecería en ese estado después de la transacción.

¿Por qué se necesita la concurrencia en las transacciones?

Una base de datos es un recurso compartido. Muchos usuarios y procesos la utilizan simultáneamente. Algunos ejemplos son los sistemas bancarios, los sistemas de reservas de trenes y vuelos, el seguimiento del mercado de valores y los sistemas de inventario y cajas de los supermercados.

No gestionar el acceso simultáneo puede crear problemas como:

  • Fallos de hardware y bloqueos del sistema.
  • Ejecución simultánea de la misma transacción, punto muerto, o rendimiento lento.

Controlar este acceso compartido es tarea de control de concurrencia, que utiliza bloqueos y marcas de tiempo para intercalar transacciones de forma segura. Antes de eso, es útil conocer los estados por los que pasa una transacción.

Estados de transacciones

Los distintos estados de un concepto de transacción en DBMS se enumeran a continuación:

Estado Mareas Ideales para Lecciones
Estado activo Una transacción entra en estado activo cuando comienza el proceso de ejecución. Durante este estado, se pueden realizar operaciones de lectura o escritura.
Parcialmente comprometido Una transacción pasa al estado de parcialmente comprometida una vez finalizada la misma.
Estado comprometido Cuando la transacción alcanza el estado de confirmada, ha completado su ejecución con éxito y todos sus cambios se registran de forma permanente en la base de datos.
Estado fallido Se considera que una transacción ha fallado cuando falla cualquiera de las comprobaciones, o si la transacción se interrumpe mientras se encuentra en estado activo.
Estado terminado El estado de una transacción llega al estado de finalizada cuando la transacción abandona el sistema y no se puede reiniciar.

Diagrama de transición de estados para una transacción de base de datos

Estudiemos un diagrama de transición de estado que resalta cómo se mueve una transacción entre estos distintos estados.

  1. Una vez que una transacción comienza a ejecutarse, se vuelve activa. Puede realizar una operación de lectura o escritura.
  2. Una vez completadas las operaciones de lectura y escritura, la transacción alcanza el estado de parcialmente confirmada.
  3. A continuación, algunos protocolos de recuperación deben garantizar que un fallo del sistema no impida registrar permanentemente los cambios de la transacción. Si esta comprobación es satisfactoria, la transacción se confirma y pasa al estado de confirmada.
  4. Si la verificación falla, la transacción pasa al estado de fallida.
  5. Si la transacción se cancela mientras está activa, pasa al estado de error. La transacción debe revertirse para deshacer el efecto de sus operaciones de escritura en la base de datos.
  6. El estado terminado se refiere a la transacción que sale del sistema.

¿Cuáles son las propiedades ácidas?

Propiedades del ÁCIDO se utilizan para mantener la integridad de la base de datos durante el procesamiento de transacciones. ACID en DBMS significa Atomicidad Ccoherencia Isoledad, y Durabilidad.

  • Atomciudad: Una transacción es una única unidad de operación. O lo ejecuta por completo o no lo ejecuta en absoluto. No puede haber ejecución parcial.
  • Consistencia: Una vez que se ejecuta la transacción, debería pasar de un estado consistente a otro.
  • Aislamiento: Una transacción debe ejecutarse de forma aislada de otras transacciones. Durante la ejecución concurrente, los resultados intermedios de las transacciones que se ejecutan simultáneamente no deben estar disponibles entre sí.
  • Durabilidad: Tras la correcta finalización de una transacción, los cambios en la base de datos deberían persistir, incluso en caso de fallos del sistema.

Propiedad ACID en DBMS con ejemplo

A continuación se muestra un ejemplo de la propiedad ACID en un sistema de gestión de bases de datos (DBMS):

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

La transacción 1 consiste en transferir $50 de la cuenta X a la cuenta Y.

La transacción 2 consiste en acreditar a cada cuenta un pago de interés del 10%.

Si ambas transacciones se envían simultáneamente, no hay garantía de que la Transacción 1 se ejecute antes que la Transacción 2, ni viceversa. Independientemente del orden, el resultado debe ser como si las transacciones se ejecutaran secuencialmente, una tras otra.

Tipos de transacciones

Según las áreas de aplicación:

  • No distribuido vs. distribuido.
  • Transacciones compensatorias.
  • Momento de la transacción.
  • En línea frente a procesamiento por lotes.

Basado en acciones:

  • Dos pasos.
  • Restringido.
  • Modelo de acción.

Basado en la estructura:

  • Transacciones planas o simples: consisten en una secuencia de operaciones primitivas ejecutadas entre una operación de inicio y una de fin.
  • Transacciones anidadas: una transacción que contiene otras transacciones.
  • Flujo de trabajo.

¿Qué es un cronograma?

Un plan de ejecución consiste en crear un grupo de múltiples transacciones paralelas y ejecutarlas una a una. Debe preservar el orden en que aparecen las instrucciones en cada transacción. Si dos transacciones se ejecutan simultáneamente, el resultado de una puede afectar el resultado de la otra.

Ejemplo

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Si la Transacción 2 se ejecuta antes que la Transacción 1, se leerá información desactualizada sobre la cantidad del producto. Por lo tanto, se requieren horarios.

La ejecución paralela en una base de datos es inevitable. Sin embargo, la ejecución paralela está permitida cuando existe una relación de equivalencia entre las transacciones que se ejecutan simultáneamente. Esta equivalencia puede ser de tres tipos.

Equivalencia de resultados: Si dos programaciones muestran el mismo resultado tras su ejecución, se denomina programación de resultado equivalente. Pueden ofrecer el mismo resultado para algunos valores y resultados diferentes para otros. Por ejemplo, una transacción actualiza la cantidad del producto, mientras que otra actualiza los datos del cliente.

Ver equivalencia: La equivalencia de vistas se produce cuando las transacciones en ambos planes de ejecución realizan una acción similar. Por ejemplo, una transacción inserta los detalles del producto en la tabla de productos, mientras que otra lo hace en la tabla de archivo. La transacción es la misma, pero las tablas son diferentes.

Equivalencia de conflictos: En este caso, dos transacciones actualizan o visualizan el mismo conjunto de datos. Existe un conflicto entre las transacciones, ya que el orden de ejecución afectará el resultado.

¿Qué es la serialización?

La serializabilidad es el proceso de búsqueda de una planificación concurrente cuyo resultado sea igual a una planificación serial donde las transacciones se ejecutan una tras otra. Según el tipo de planificación, existen dos tipos de serializabilidad:

  • Serializabilidad del conflicto.
  • Ver serializabilidad.

Ambos difieren en el rigor con que juzgan la equivalencia, como se resume a continuación.

Aspecto Serializabilidad de conflictos Ver serializabilidad
Base Orden de operaciones conflictivas Relaciones de lectura y escritura final
Prueba El grafo de precedencia debe ser acíclico. Ver equivalencia a un cronograma serial
Rigor Más estricto, un subconjunto Más amplio, incluye a los ciegos que escriben
Costo de la revisión Eficiente Computacionalmente difícil

Cada planificación serializable por conflicto también es serializable por vista, pero no al revés, razón por la cual la serializabilidad por conflicto es la prueba práctica que aplica un sistema de gestión de bases de datos (DBMS).

Preguntas Frecuentes

La operación Commit hace que los cambios de una transacción sean permanentes en la base de datos. La operación Rollback deshace todos los cambios realizados desde que comenzó la transacción, devolviendo la base de datos al estado coherente que existía antes de que comenzara.

AtomLa atomicidad, en caso de fallo durante la ejecución, garantiza que el trabajo parcial se descarte, de modo que la transacción se trate como si nunca se hubiera ejecutado. La durabilidad protege el trabajo comprometido tras la recuperación.

La IA analiza los tiempos de espera de bloqueo y los gráficos de interbloqueo para detectar las transacciones que bloquean a otras, y luego recomienda un nivel de aislamiento o un cambio de índice que reduzca la contención sin debilitar la corrección.

Hasta cierto punto. Al aprender los patrones de solicitud de bloqueo que precedieron a los interbloqueos anteriores, un modelo puede detectar una combinación de transacciones riesgosa con anticipación, lo que permite al planificador retrasar o reordenar las transacciones antes de que se forme un ciclo.

Una planificación serial ejecuta una transacción por completo antes de que comience la siguiente, por lo que no hay posibilidad de que se produzcan errores de intercalación en los datos. Es lenta, por lo que el objetivo es una planificación concurrente serializable a esta.

Resumir este post con: