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:
- Activa
- Parcialmente confirmada
- Confirmada
- Fallida
- 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.