Fundamentos de Transacciones y Control de Concurrencia en Bases de Datos

Clasificado en Informática

Escrito el en español con un tamaño de 5,59 KB

Conceptos Fundamentales de Transacciones en Bases de Datos

Definición de Transacción

Una transacción es una unidad lógica de procesamiento de la base de datos que incluye operaciones de inserción, eliminación, modificación o recuperación (lectura o escritura).

Propiedades ACID

Las transacciones deben cumplir las siguientes propiedades esenciales:

  • Atomicidad: Se ejecuta toda la transacción o no se ejecuta nada.
  • Consistencia: Lleva a la base de datos de un estado válido a otro válido.
  • Aislamiento (Isolation): Parece ejecutarse de forma independiente de otras transacciones concurrentes.
  • Durabilidad: Los cambios persisten aún ante fallos del sistema.

Estados de una Transacción

Los estados principales de una transacción son:

  1. Activa
  2. Parcialmente confirmada
  3. Confirmada
  4. Fallida
  5. Terminada

Protocolos de Control de Concurrencia

Protocolos de Bloqueo (Two-Phase Locking - 2PL)

El protocolo Two-Phase Locking (2PL) se divide en dos fases:

  • Fase Creciente: Se adquieren bloqueos.
  • Fase Decreciente: Se liberan bloqueos.

Protocolos con Marcas Temporales (Timestamps)

A cada transacción T se le asigna una marca de tiempo TS(T) (timestamp), que representa el momento lógico en el que comenzó.

  • Cuanto más baja sea la marca, más antigua es la transacción.
  • Se pueden usar contadores globales o marcas del sistema.

El protocolo asegura que el orden de ejecución de las operaciones respete el orden temporal de los timestamps, simulando una planificación serie en orden de tiempo.

Garantías del Protocolo de Marcas Temporales

  • Serialización por Orden Temporal: Cada transacción parece ejecutarse en el orden de su timestamp, eliminando la necesidad de usar bloqueos.
  • Libre de Interbloqueo (Deadlock-Free): Nunca se bloquean recursos (no hay locks); si hay conflictos, la transacción se aborta.

Granularidad de Bloqueo

La granularidad se refiere al nivel de detalle con el que se aplican los bloqueos sobre los datos de la base de datos.

Se utiliza una jerarquía de bloqueo, representada como un árbol de niveles:

BD > Tabla > Página > Tupla > Atributo

Para asegurar el acceso correcto en esta jerarquía, se usan bloqueos de intención.

Técnicas de Recuperación de Bases de Datos

La recuperación es el proceso mediante el cual el sistema restaura la base de datos a un estado consistente después de una falla (caída del sistema, error de transacción, corte de luz, etc.).

Componentes clave para la recuperación:

  • Bitácora (log) que registra las operaciones de cada transacción.
  • Checkpoint (punto de control) para acelerar el proceso de recuperación.
  • Mecanismos para rehacer (REDO) o deshacer (UNDO) operaciones según el caso.

Métodos de Actualización

1. Actualización Diferida (Deferred Update)

  • Las escrituras no se aplican inmediatamente en la BD, sino que se guardan en la bitácora.
  • Solo se escriben en la BD cuando la transacción realiza commit.

2. Actualización Inmediata (Immediate Update)

  • Los cambios se aplican de inmediato a la base de datos.
  • La bitácora guarda el valor viejo y el nuevo con cada write_item.
  • Transacciones con commit requieren REDO.
  • Transacciones sin commit requieren UNDO.

3. Paginación a la Sombra (Shadow Paging)

Se utilizan dos directorios:

  • Actual: Apunta a las páginas modificadas.
  • Sombra: Apunta a la versión original.

Al realizar una escritura (write), se crea una nueva copia y se actualiza el Directorio actual.

  • Si la transacción falla: Se descarta el directorio actual.
  • Si realiza commit: Se descarta el directorio sombra.

Recuperabilidad y Puntos de Control

Planificación Recuperable

Una planificación es recuperable si una transacción T2 que leyó un dato escrito por otra transacción T1, solo realiza commit después de que T1 también lo haya hecho. De esta manera, si T1 aborta, T2 no queda comprometida con un dato inválido.

Planificación No Recuperable

Si una transacción T2 realiza commit después de leer un dato de T1, pero T1 luego aborta, T2 queda utilizando un dato inválido. En este caso, no hay forma de recuperar la consistencia.

Checkpoint (Punto de Control)

Es un punto de sincronización que guarda un estado estable de la base de datos y la bitácora para acelerar la recuperación.

Proceso durante el Checkpoint:

  • Se suspenden las transacciones.
  • Se escribe toda la caché al disco.
  • Se registra [checkpoint] en el log.
  • Se reanudan las transacciones.

Retroceso en Cascada (Rollback en Cascada)

Ocurre cuando una transacción T1 aborta y otras transacciones que leyeron datos de T1 también deben abortar en cadena (T2, T3...).

Nota: El rollback en cascada es recuperable, pero resulta costoso. No debe confundirse con una planificación no recuperable.

Entradas relacionadas: