Propriétés ACID et anomalies
Revoyez l’atomicité, la cohérence, l’isolation, la durabilité et les quatre anomalies classiques : lecture incohérente, lecture non répétable, lecture fantôme et mise à jour perdue.
Propriétés ACID et anomalies est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
ACID
Une transaction est fiable lorsqu’elle est :
- Atomique — tout ou rien
- Cohérente — elle fait passer la base de données d’un état valide à un autre
- Isolée — les transactions concurrentes n’interfèrent pas les unes avec les autres
- Durable — une fois validées, les données survivent aux pannes
Une transaction en SQL
Encapsulez les opérations 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.L’atomicité en action
Si le second UPDATE échoue, le premier est annulé — l’argent n’est pas perdu en cours de route :
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Crash here, or ROLLBACK: account 1 is unchanged.Cohérence
Les contraintes (NOT NULL, CHECK, FK) sont vérifiées au moment de COMMIT. Une transaction qui laisserait la base de données dans un état invalide échoue :
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.Isolation : pourquoi est-elle importante ?
Sans isolation, deux transactions concurrentes peuvent altérer la vue que chacune a des données. Voici les anomalies classiques :
- Lecture de données non validées — lire des données non validées
- Lecture non répétable — une même requête renvoie des lignes différentes
- Lecture fantôme — de nouvelles lignes apparaissent au cours de la transaction
- Mise à jour perdue — deux mises à jour s’écrasent mutuellement
Lecture de données non validées
Lire une ligne qu’une autre transaction a modifiée, mais pas encore validée. PostgreSQL empêche cela à tous les niveaux d’isolation.
Lecture non répétable
Vous lisez la ligne 1, une autre transaction valide une mise à jour de la ligne 1, puis vous la relisez — la valeur est différente.
Lecture fantôme
Vous exécutez SELECT COUNT(*) deux fois dans une même transaction. Entre les deux appels, une autre transaction valide un INSERT — votre second décompte est plus élevé.
Mise à jour perdue
Deux transactions lisent toutes les deux balance=100, écrivent toutes les deux balance=balance-50, puis valident — l’une des deux diminutions de 50 est perdue.
Durabilité
Une fois que COMMIT a renvoyé son résultat, la modification se trouve sur le disque (ou a été répliquée, selon les paramètres). Une panne survenant une milliseconde plus tard ne la fait pas perdre. PostgreSQL assure la durabilité au moyen de WAL (journalisation à écriture anticipée).
Validation automatique
Par défaut, chaque instruction constitue sa propre transaction :
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Implicitly: BEGIN; statement; COMMIT;SAVEPOINT
Annulation partielle au sein d’une transaction :
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;Récapitulatif
Les transactions sont le filet de sécurité des bases de données relationnelles.
- ACID : atomique, cohérente, isolée, durable
- Les quatre anomalies classiques
- BEGIN ... COMMIT ou ROLLBACK
- SAVEPOINT pour une annulation partielle
Vérification rapide
Quelle anomalie se produit lorsque deux transactions lisent la même valeur, la modifient, puis la valident toutes les deux ?
Questions Fréquemment Posées
La leçon « Propriétés ACID et anomalies » est-elle gratuite ?
Oui — le texte complet de « Propriétés ACID et anomalies » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Propriétés ACID et anomalies » ?
Revoyez l’atomicité, la cohérence, l’isolation, la durabilité et les quatre anomalies classiques : lecture incohérente, lecture non répétable, lecture fantôme et mise à jour perdue. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Propriétés ACID et anomalies » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Propriétés ACID et anomalies
- Niveaux d’isolation : READ COMMITTED, REPEATABLE READ, SERIALIZABLE
- Interblocages : détection et prévention
- Verrouillage optimiste ou pessimiste