Fundamentos de Transacciones en Bases de Datos: Propiedades ACID y Niveles de Aislamiento
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,77 KB
Conceptos Fundamentales de Transacciones en Bases de Datos
- TRANSACCIÓN
- Unidad básica de procesamiento de datos en forma contable y existente, formada por un conjunto de operaciones de lectura y escritura.
- CONSISTENCIA DE UNA BD
- Si todas las restricciones y reglas de integridad definidas en ella se cumplen, la Base de Datos (BD) debe encontrarse en estado consistente al inicio y al fin de la transacción.
- TRANSACCIÓN CONSISTENTE
- La BD debe estar en estado consistente aunque existan peticiones concurrentes que lean o modifiquen datos. En una BD replicada, la consistencia debe aplicarse a cada nodo.
- CONFIABILIDAD
- Capacidad de la BD para ser flexible y tolerante a fallas, así como su capacidad de recuperación. La capacidad de recuperación permite que la BD se mueva de un estado consistente anterior a uno nuevo.
- ADMINISTRACIÓN DE TRANSACCIONES
- Componente encargado de realizar las acciones necesarias para mantener a una BD en un estado consistente bajo cualquier problema que se presente.
- TRANSACTION MANAGER
- Encargado de confirmar y coordinar los commits y las transacciones (Txn) en Bases de Datos Distribuidas (BDD).
Propiedades ACID de las Transacciones
Las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) son esenciales para garantizar la fiabilidad del procesamiento de transacciones en bases de datos.
Atomicidad
La BD considera o trata a una transacción (Txn) como si fuera una sola operación. O se ejecuta completamente o no se ejecuta en absoluto.
Consistencia
Capacidad del manejador para llevar a la BD de un estado consistente a otro, asegurando que se cumplen todas las reglas de integridad.
Isolation (Aislamiento)
Es la capacidad de la transacción para ver a la BD consistente en “cualquier instante de tiempo”. Para implementar esta propiedad se utilizan los llamados niveles de aislamiento, donde cada nivel resuelve un problema que puede generar inconsistencia en los datos.
Durabilidad
Asegura que una vez que los datos se han confirmado (commit), estos no se perderán a pesar de la ocurrencia de fallas. Se implementa a través de multiplexores (mecanismos de persistencia y registro).
Niveles de Aislamiento y Problemas de Concurrencia
Los niveles de aislamiento definen cómo y cuándo los cambios realizados por una transacción se vuelven visibles para otras transacciones concurrentes.
Problemas de Inconsistencia
- DIRTY READS (Lecturas Sucias)
- Ocurre cuando una transacción lee datos modificados por otra transacción (Txn) que aún no ha hecho commit.
- LECTURAS NO REPETIBLES
- Los datos se mueven o cambian mientras una transacción (T2) se está ejecutando, asumiendo que dichos datos no han cambiado entre lecturas sucesivas dentro de la misma transacción.
- LECTURAS FANTASMA (Phantom Reads)
- Ocurre cuando una transacción ejecuta una consulta que devuelve un conjunto de filas, y al ejecutar la misma consulta más tarde, encuentra filas nuevas que cumplen el criterio de búsqueda (insertadas por otra transacción concurrente).
Mecanismos de Control
SELECT FOR UPDATE bloquea todas las tablas involucradas, lo que generalmente conduce a un nivel de aislamiento Serializable.
Resumen de Niveles de Aislamiento
A continuación, se presenta un resumen de los niveles de aislamiento estándar y los problemas que resuelven:
- READ UNCOMMITED: No resuelve ningún problema de inconsistencia.
- READ COMMITED (Lecturas Confirmadas): Resuelve el problema de Lecturas Sucias.
- REPETEABLE READS: Resuelve Lecturas Sucias y Lecturas No Repetibles.
- ANOMALY SERIALIZABLE: Resuelve Lecturas Sucias, Lecturas No Repetibles y Lecturas Fantasma.
Control Distribuido de Concurrencia y Bloqueos
- CONTROL DISTRIBUIDO DE CONCURRENCIA
- Mecanismo que intenta encontrar un equilibrio entre el nivel de concurrencia y mantener la base de datos consistente.
- TIPOS DE BLOQUEOS
- READ LOCK (Bloqueo Compartido - S): Puede ser adquirido por múltiples operaciones a la vez (S1, S2, S3…).
- WRITE LOCK (Bloqueo Exclusivo - E): Puede ser adquirido a lo más por una operación (E1).