0Pricing
SQL Academy · Leçon

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

  1. Propriétés ACID et anomalies
  2. Niveaux d’isolation : READ COMMITTED, REPEATABLE READ, SERIALIZABLE
  3. Interblocages : détection et prévention
  4. Verrouillage optimiste ou pessimiste
← Retour à SQL Academy