0Pricing
SQL Interview Prep · Lección

Explicación de las propiedades ACID

Atomicidad, consistencia, aislamiento y durabilidad con ejemplos concretos.

Explicación de las propiedades ACID es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

Por qué los entrevistadores preguntan por ACID

Cuando un entrevistador sénior dice «explíqueme ACID», no está comprobando si memorizó cuatro palabras. Quiere saber si entiende qué garantiza una base de datos cuando muchos usuarios acceden a ella al mismo tiempo.

ACID significa Atomicity, Consistency, Isolation y Durability. Todas las bases de datos transaccionales (Postgres, MySQL/InnoDB, SQL Server y Oracle) prometen estas cuatro propiedades para las operaciones ejecutadas dentro de una transacción.

Las mejores respuestas relacionan cada letra con un fallo concreto que evita. En las próximas escenas haremos exactamente eso.

¿Qué es una transacción?

Una transacción es una unidad de trabajo que la base de datos trata como un único paso indivisible. Se inicia con BEGIN, se ejecutan una o más instrucciones y, después, se usa COMMIT para hacer los cambios permanentes o ROLLBACK para descartarlos por completo.

El ejemplo clásico es una transferencia bancaria: debitar una cuenta y acreditar otra. Ambas operaciones deben realizarse o no debe realizarse ninguna. La transacción es el mecanismo que permite garantizarlo.

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

A = Atomicidad

Atomicidad significa que una transacción se ejecuta por completo o no se ejecuta. Si alguna instrucción falla o el servidor se bloquea a mitad del proceso, todos los cambios de esa transacción se revierten como si nunca hubiera comenzado.

En el ejemplo de la transferencia, si el abono falla después de que el débito se haya realizado correctamente, la atomicidad garantiza que el débito también se revierta. Así, nunca perderá dinero por una operación incompleta.

Forma de expresarlo en una entrevista: "La atomicidad garantiza que la transacción se confirme en su totalidad o no se confirme, sin dejar un estado parcial."

La atomicidad en acción

Aquí, la segunda actualización infringe una restricción de comprobación (el saldo no puede ser negativo). La base de datos aborta la transacción y ROLLBACK también revierte la primera actualización.

El punto clave para las entrevistas es que, después de la reversión, la cuenta 1 conserva su saldo original. No queda ninguna escritura parcial en la tabla.

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- next line fails: balance would go below 0
UPDATE accounts SET balance = balance - 999999 WHERE id = 2;
ROLLBACK;  -- account 1 is restored to its original balance

C = Consistencia

Consistencia significa que una transacción lleva la base de datos de un estado válido a otro estado válido. Toda transacción confirmada debe respetar todas las reglas definidas: restricciones, claves foráneas, triggers y cascadas.

Si una transacción dejara una restricción incumplida (una clave foránea huérfana, una clave primaria duplicada o un CHECK fallido), la base de datos se negaría a confirmarla.

Matiz que conviene mencionar: la base de datos aplica las reglas declaradas, pero las invariantes del nivel de la aplicación ("un usuario puede tener como máximo 3 sesiones activas") son responsabilidad de usted, a menos que las modele como restricciones.

Consistencia aplicada mediante restricciones

La consistencia es, en gran medida, el resultado de las reglas de su esquema. A continuación, una clave foránea garantiza que nunca pueda insertar un pedido para un cliente que no existe.

Si la inserción hace referencia a un cliente inexistente, la transacción falla, la atomicidad la revierte y se preserva la consistencia. Por eso, en las entrevistas se dice que la atomicidad y la consistencia trabajan juntas.

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT NOT NULL REFERENCES customers(id),
  amount NUMERIC(10,2) CHECK (amount > 0)
);

-- This fails if customer 999 does not exist, keeping data consistent
INSERT INTO orders (id, customer_id, amount) VALUES (1, 999, 50.00);

I = Aislamiento

Aislamiento significa que las transacciones simultáneas no interfieren entre sí. Idealmente, cada transacción se comporta como si se ejecutara sola, incluso cuando se ejecutan decenas al mismo tiempo.

En la práctica, las bases de datos ofrecen distintos niveles de aislamiento que intercambian rigor por rendimiento. Los niveles más débiles permiten ciertas anomalías (lecturas sucias y lecturas fantasma) a cambio de una mayor concurrencia.

Esta es la parte más amplia de cualquier entrevista sobre ACID, por lo que las dos lecciones siguientes explican en profundidad los niveles de aislamiento y las anomalías de lectura.

Por qué el aislamiento es un espectro

El aislamiento perfecto (SERIALIZABLE) es costoso porque debe impedir cualquier posible conflicto entre intercalaciones, normalmente bloqueando o abortando transacciones.

Por eso, el estándar SQL define cuatro niveles. Una trampa habitual en las entrevistas es que los candidatos asumen que el aislamiento es binario. No es así: usted elige explícitamente cuánto aislamiento necesita.

  • READ UNCOMMITTED, el más débil
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE, el más fuerte
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;

D = Durabilidad

Durabilidad significa que, una vez confirmada una transacción, sus cambios sobreviven a bloqueos, cortes de energía y reinicios. Una transacción confirmada se encuentra en un almacenamiento persistente.

Las bases de datos lo consiguen mediante un registro de escritura anticipada (WAL): los cambios se escriben en un registro persistente antes de actualizar los archivos de datos. Al reiniciarse, el motor reproduce el registro para recuperar cualquier trabajo confirmado que todavía no se hubiera escrito en los archivos principales.

Forma de expresarlo en una entrevista: "El WAL garantiza la durabilidad; COMMIT solo devuelve el control después de que el registro se haya volcado al disco."

Cómo encajan los cuatro principios en una transferencia bancaria

Una sola transferencia pone a prueba las cuatro propiedades a la vez:

  • Atomicidad: se aplican ambas actualizaciones o no se aplica ninguna.
  • Consistencia: un CHECK mantiene los saldos no negativos.
  • Aislamiento: un lector simultáneo no ve una transferencia a medio realizar.
  • Durabilidad: después de COMMIT, los nuevos saldos sobreviven a un bloqueo.

Poder relacionar un solo ejemplo con las cuatro letras es precisamente lo que le permite obtener puntos en una entrevista.

BEGIN;
UPDATE accounts SET balance = balance - 100
  WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

Preguntas habituales de seguimiento

En las entrevistas suelen explorar los límites. Esté preparado para responder:

  • "¿Qué propiedad aplica una clave foránea?" La consistencia.
  • "¿Qué le protege de un bloqueo del servidor a mitad de una transacción?" La atomicidad (reversión de lo no confirmado) y la durabilidad (reproducción de lo confirmado).
  • "¿El aislamiento es gratuito?" No; un aislamiento más fuerte reduce la concurrencia.
  • "¿Los sistemas NoSQL ofrecen ACID?" Muchos lo intercambian por disponibilidad (BASE); indique que depende del motor.

Comprobación rápida

Compruebe cuánto comprende la función de cada propiedad ACID.

Resumen: ACID en una sola frase

Ahora puede responder a la pregunta con claridad:

  • Atomicidad: todo o nada; el trabajo parcial se revierte.
  • Consistencia: toda confirmación respeta las restricciones y deja un estado válido.
  • Aislamiento: las transacciones simultáneas no se corrompen entre sí; el rigor se puede ajustar.
  • Durabilidad: los datos confirmados sobreviven a los bloqueos gracias al registro de escritura anticipada.

Relacione cada letra con un fallo concreto que evita y superará con facilidad el inicio de cualquier entrevista sobre concurrencia.

Preguntas frecuentes

¿La lección «Explicación de las propiedades ACID» es gratis?

Sí — el texto completo de «Explicación de las propiedades ACID» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Explicación de las propiedades ACID»?

Atomicidad, consistencia, aislamiento y durabilidad con ejemplos concretos. Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Explicación de las propiedades ACID»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Explicación de las propiedades ACID
  2. Los cuatro niveles de aislamiento
  3. Lecturas sucias, no repetibles y fantasma
  4. Interbloqueos, bloqueos y MVCC
← Volver a SQL Interview Prep