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.

¿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.

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. |
Estudiemos un diagrama de transición de estado que resalta cómo se mueve una transacción entre estos distintos estados.
- Una vez que una transacción comienza a ejecutarse, se vuelve activa. Puede realizar una operación de lectura o escritura.
- Una vez completadas las operaciones de lectura y escritura, la transacción alcanza el estado de parcialmente confirmada.
- 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.
- Si la verificación falla, la transacción pasa al estado de fallida.
- 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.
- 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).

