Propiedades ACID y anomalías
Repase la atomicidad, la coherencia, el aislamiento y la durabilidad, además de las cuatro anomalías clásicas: lectura sucia, lectura no repetible, lectura fantasma y actualización perdida.
Propiedades ACID y anomalías es una lección gratuita de SQL Academy 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 Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
ACID
Una transacción es fiable cuando es:
- Atómica — todo o nada
- Consistente — lleva la base de datos de un estado válido a otro
- Aislada — las transacciones simultáneas no interfieren entre sí
- Duradera — una vez confirmados los cambios, los datos sobreviven a los fallos
Una transacción en SQL
Incluya las operaciones entre BEGIN ... COMMIT:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- If anything fails, ROLLBACK leaves both rows unchanged.La atomicidad en acción
Si falla el segundo UPDATE, el primero se revierte; el dinero no se pierde a mitad de la operación:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Crash here, or ROLLBACK: account 1 is unchanged.Consistencia
Las restricciones (NOT NULL, CHECK, FK) se comprueban al confirmar los cambios. Una transacción que dejaría la base de datos en un estado no válido falla:
BEGIN;
INSERT INTO orders (user_id, total) VALUES (999, 100); -- FK fails on commit if user 999 doesn't exist.
COMMIT;
-- ERROR: insert or update violates foreign key constraint
-- ROLLBACK happens automatically.Aislamiento: por qué es importante
Sin aislamiento, dos transacciones simultáneas pueden corromper la visión que cada una tiene de los datos. Anomalías clásicas:
- Lectura sucia — leer datos no confirmados
- Lectura no repetible — la misma consulta devuelve filas distintas
- Lectura fantasma — aparecen filas nuevas durante la transacción
- Actualización perdida — dos actualizaciones se sobrescriben entre sí
Lectura sucia
Leer una fila que otra transacción ha modificado, pero todavía no ha confirmado. PostgreSQL lo impide en todos los niveles de aislamiento.
Lectura no repetible
Lee la fila 1, otra transacción confirma una actualización de la fila 1 y vuelve a leerla: el valor es diferente.
Lectura fantasma
Ejecuta SELECT COUNT(*) dos veces en una misma transacción. Entre ambas llamadas, otra transacción confirma un INSERT; el segundo recuento es mayor.
Actualización perdida
Dos transacciones leen balance=100, ambas escriben balance=balance-50 y ambas confirman los cambios: una de las operaciones -50 se pierde.
Durabilidad
Una vez que COMMIT devuelve el control, el cambio está en el disco (o se ha replicado, según la configuración). Un fallo un milisegundo después no lo pierde. PostgreSQL consigue la durabilidad mediante WAL (Write-Ahead Logging).
Autocommit
De forma predeterminada, cada instrucción es su propia transacción:
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Implicitly: BEGIN; statement; COMMIT;SAVEPOINT
Reversión parcial dentro de una transacción:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SAVEPOINT before_step2;
UPDATE accounts SET balance = balance + 100 WHERE id = 999;
-- ERROR — but we can recover:
ROLLBACK TO SAVEPOINT before_step2;
-- continue
COMMIT;Resumen
Las transacciones son la red de seguridad de las bases de datos relacionales.
- ACID: atómicas, consistentes, aisladas y duraderas
- Cuatro anomalías clásicas
- BEGIN ... COMMIT o ROLLBACK
- SAVEPOINT para realizar una reversión parcial
Comprobación rápida
¿Qué anomalía se produce cuando dos transacciones leen el mismo valor, lo modifican y ambas confirman los cambios?
Preguntas frecuentes
¿La lección «Propiedades ACID y anomalías» es gratis?
Sí — el texto completo de «Propiedades ACID y anomalías» 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 Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Propiedades ACID y anomalías»?
Repase la atomicidad, la coherencia, el aislamiento y la durabilidad, además de las cuatro anomalías clásicas: lectura sucia, lectura no repetible, lectura fantasma y actualización perdida. Practicas SQL Academy 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 Academy?
No se requiere experiencia previa. SQL Academy 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 «Propiedades ACID y anomalías»?
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 Academy?
Sí. Cada lección de SQL Academy 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
- Propiedades ACID y anomalías
- Niveles de aislamiento: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
- Interbloqueos: detección y prevención
- Bloqueo optimista frente a pesimista