Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Bases de DatosNivel: Principiante15 min de lección

¿Qué son las Propiedades ACID en Bases de Datos?

Desglosa cada pilar del modelo transaccional ACID: los comandos BEGIN, COMMIT y ROLLBACK, los niveles de aislamiento y los mecanismos de durabilidad física con WAL (Write-Ahead Logging).

¿Qué son las Propiedades ACID en Bases de Datos?
AROS STUDENT
E
Equipo de Ingeniería ArostikEspecialista en Sistemas y TI · Actualizado el 20 mar 2026
¿Qué es y para qué sirve?

ACID es un acrónimo que representa las cuatro propiedades esenciales que garantizan que una transacción en una base de datos se procese de manera confiable: Atomicidad (Atomicity), Consistencia (Consistency), Aislamiento (Isolation) y Durabilidad (Durability).

¿Por qué deberías aprenderlo y usarlo?

Es la garantía técnica que impide desastres financieros y de datos: asegura que si el servidor pierde energía eléctrica a la mitad de una transferencia de dinero, los fondos no desaparezcan mágicamente ni se dupliquen, manteniendo el sistema en un estado matemáticamente íntegro.

Analogía de la Vida Real

Imagina una transferencia bancaria entre Juan y Pedro: el sistema debe restar $100 de la cuenta de Juan y sumarle $100 a la de Pedro. La Atomicidad garantiza que o se hacen ambas operaciones o no se hace ninguna (si el cable de red se corta justo tras restar los $100 de Juan, el dinero regresa de inmediato a Juan). No existe la posibilidad de que Juan se quede sin dinero y Pedro nunca lo reciba.

Explicación Paso a Paso del Tema

1

Controlar transacciones con BEGIN, COMMIT y ROLLBACK

Agrupa múltiples operaciones SQL en una sola unidad lógica indivisible.

Por defecto, la mayoría de los clientes SQL operan en modo 'autocommit' (cada línea se confirma al instante). Para aplicar Atomicidad, inicias explícitamente con `BEGIN;` (o `START TRANSACTION;`). Ejecutas todas las modificaciones. Si todo fue exitoso, ejecutas `COMMIT;` para sellar los cambios. Si ocurrió una excepción en tu lógica, ejecutas `ROLLBACK;` para devolver todo al estado previo al BEGIN.

Comando de Terminal / Código
BEGIN;
INSERT INTO pedidos (id, total) VALUES (501, 120);
INSERT INTO detalle_pedidos (pedido_id, item) VALUES (501, 'Monitor');
COMMIT;
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
BEGINApertura transaccionalInicia un nuevo bloque de transacción aislada del resto del servidor
COMMITConfirmación permanenteAplica los cambios en disco y los hace visibles a los demás usuarios de forma irrevocable
ROLLBACKDeshacer seguroCancela todas las operaciones del bloque devolviendo los datos a su estado original
Consejo Profesional:

Envuelve siempre tus llamadas transaccionales en bloques try/catch/finally en tu lenguaje de backend: haz `COMMIT` en el try y asegura un `ROLLBACK` en el bloque catch.

Error Común a Evitar:

Abrir una transacción con `BEGIN` en el backend y dejar la conexión colgada sin hacer `COMMIT` ni `ROLLBACK`, manteniendo bloqueos de tablas que congelan a los demás usuarios.

2

Comprender los 4 niveles de Aislamiento (Isolation Levels)

Equilibra el rendimiento de concurrencia frente al rigor de aislamiento.

El estándar SQL define 4 niveles: 1. Read Uncommitted (peligroso: permite leer datos no confirmados por otros). 2. Read Committed (el más habitual por defecto en PostgreSQL: solo lees datos ya confirmados). 3. Repeatable Read (asegura que si lees una fila dos veces en la misma transacción, verás exactamente los mismos valores). 4. Serializable (el más estricto: simula que las transacciones corren una detrás de otra en fila india).

Comando de Terminal / Código
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
Read CommittedNivel estándarEvita lecturas sucias pero permite lecturas no repetibles ante commits externos
SerializableMáxima protecciónPreviene cualquier anomalía concurrente abortando transacciones en conflicto para reintentar
Consejo Profesional:

Para el 95% de los casos de uso empresariales, el nivel 'Read Committed' ofrece el balance perfecto entre velocidad y consistencia.

Error Común a Evitar:

Usar el nivel Serializable para todas las consultas del sistema sin necesidad, lo que provoca abortos continuos por serialización y alta carga de CPU.

3

Entender la Durabilidad y el log WAL

Aprende cómo la base de datos sobrevive a un apagón repentino del servidor.

La 'D' de Durabilidad asegura que una vez que recibes el mensaje 'COMMIT OK', los datos no se perderán aunque se desconecte el enchufe del servidor un milisegundo después. Esto se logra mediante el Write-Ahead Logging (WAL): el motor graba primero la intención del cambio secuencialmente en un archivo de registro en disco no volátil antes de actualizar las páginas de datos en memoria.

Comando de Terminal / Código
WAL (Write-Ahead Logging): Grabar secuencialmente en disco primero -> Responder COMMIT -> Escribir tablas en memoria
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
WAL / Redo LogMecanismo de resilienciaRegistro continuo que permite reconstruir el estado íntegro tras un reinicio inesperado
Consejo Profesional:

Mantén siempre los archivos WAL en discos SSD NVMe con alta velocidad de escritura secuencial para maximizar la tasa de commits por segundo.

Error Común a Evitar:

Desactivar la sincronización a disco (`fsync = off`) en configuraciones de producción para ganar velocidad artificial; perderás datos ante cualquier fallo eléctrico.

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1Caso de Producción: Prevención de Doble Gasto de Saldo en Pasarela de Billetera Digital

Escenario Real:

Una aplicación de billetera virtual experimentaba desbalance contable: usuarios malintencionados abrían dos pestañas a la vez y presionaban 'Transferir $50' simultáneamente teniendo solo $50 de saldo, logrando transferir $100 antes de que el saldo se actualizara.

Solución de Ingeniería Aplicada:

Se encapsuló la deducción de saldo y la acreditación dentro de una transacción ACID con bloqueo de fila (`SELECT saldo FROM cuentas WHERE id = 1 FOR UPDATE;`), impidiendo que la segunda petición lea el saldo hasta que la primera transacción confirme el descuento.

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

Atomicidad (Todo o Nada)

La transacción es una unidad indivisible de trabajo: todas las operaciones que contiene se completan con éxito o ninguna de ellas tiene efecto.

Si falla el paso 4 de 5, el motor ejecuta un ROLLBACK automático cancelando los pasos 1, 2 y 3.
Consistencia

La transacción solo puede llevar a la base de datos de un estado válido a otro estado válido, respetando todas las reglas de integridad, tipos y restricciones.

No permite que el saldo de una cuenta sea negativo si existe una regla CHECK (saldo >= 0).
Aislamiento (Isolation)

Las transacciones concurrentes operan de manera independiente sin interferir entre sí antes de confirmarse oficialmente.

Un usuario no puede ver datos a medio modificar por otra transacción que aún no ha hecho COMMIT.
Autoevaluación Rápida3 preguntas

¿Qué son las Propiedades ACID en Bases de Datos?

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Qué propiedad de ACID asegura que una transacción se complete en su totalidad o no se aplique ningún cambio en absoluto?

2

¿Qué comando SQL se ejecuta para cancelar y revertir todas las operaciones de una transacción en curso ante un error?

3

¿Qué propiedad de ACID asegura que una transacción confirmada no se perderá aunque el servidor sufra un apagón eléctrico repentino?

Preguntas Frecuentes (FAQ)

¿Qué es una 'Lectura Sucia' (Dirty Read)?

Ocurre cuando la transacción A lee los cambios que la transacción B está haciendo en una fila antes de que B haga COMMIT. Si la transacción B luego hace un ROLLBACK, los datos que leyó A eran falsos e inexistentes.

¿Todas las bases de datos NoSQL carecen de ACID?

No. Históricamente muchas priorizaron el modelo BASE y consistencia eventual, pero hoy en día motores modernos como MongoDB (desde la v4.0), Couchbase y DynamoDB ofrecen soporte transaccional ACID.

¿Qué significa la cláusula 'SELECT ... FOR UPDATE'?

Es una instrucción SQL que bloquea exclusivamente las filas seleccionadas dentro de una transacción, impidiendo que otras transacciones concurrentes las modifiquen hasta que se emita el COMMIT o ROLLBACK.

Temas relacionados:#ACID#Transacciones#Bases de Datos#Concurrencia#Integridad