0Pricing
SQL Interview Prep · Leçon

Les propriétés ACID expliquées

Atomicité, cohérence, isolation et durabilité avec des exemples concrets

Les propriétés ACID expliquées est une leçon SQL Interview Prep 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 Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Interview Prep comprend 4 leçons au total.

Pourquoi les recruteurs posent des questions sur ACID

Lorsqu’un recruteur expérimenté vous dit « expliquez-moi ACID étape par étape », il ne cherche pas à vérifier que vous avez mémorisé quatre mots. Il veut savoir si vous comprenez ce qu’une base de données garantit lorsque de nombreux utilisateurs l’interrogent simultanément.

ACID signifie atomicité, cohérence, isolation et durabilité. Toute base de données transactionnelle (PostgreSQL, MySQL/InnoDB, SQL Server, Oracle) garantit ces quatre propriétés pour les opérations exécutées dans une transaction.

Les meilleures réponses relient chaque lettre à une défaillance concrète qu’elle permet d’éviter. C’est exactement ce que nous allons faire dans les prochaines scènes.

Qu'est-ce qu'une transaction ?

Une transaction est une unité de travail que la base de données traite comme une étape unique et indivisible. Vous l'ouvrez avec BEGIN, exécutez une ou plusieurs instructions, puis utilisez soit COMMIT pour rendre les changements définitifs, soit ROLLBACK pour tout annuler.

L'exemple classique est celui d'un virement bancaire : débiter un compte et en créditer un autre. Les deux opérations doivent avoir lieu, ou aucune des deux. Une transaction est l'enveloppe qui vous permet de garantir cela.

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

A = Atomicité

L'atomicité signifie qu'une transaction est exécutée entièrement ou pas du tout. Si une instruction échoue ou si le serveur tombe en panne en cours d'exécution, toutes les modifications de cette transaction sont annulées, comme si elle n'avait jamais commencé.

Dans l'exemple du virement, si le crédit échoue après la réussite du débit, l'atomicité garantit que le débit est lui aussi annulé. Vous ne perdez jamais d'argent à cause d'une opération inachevée.

Formulation pour un entretien : « L'atomicité garantit que la transaction est validée dans son ensemble ou pas du tout, sans laisser d'état partiel. »

L'atomicité en action

Ici, la deuxième mise à jour viole une contrainte CHECK (le solde ne peut pas être négatif). La base de données annule la transaction, et le ROLLBACK annule également la première mise à jour.

Le point essentiel pour les entretiens : après l'annulation, le compte 1 possède toujours son solde d'origine. Aucune écriture partielle ne reste dans la table.

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 = Cohérence

La cohérence signifie qu'une transaction fait passer la base de données d'un état valide à un autre état valide. Toute transaction validée doit respecter toutes les règles définies : contraintes, clés étrangères, déclencheurs et actions en cascade.

Si une transaction devait laisser une contrainte violée (une clé étrangère orpheline, une clé primaire en double ou un CHECK non respecté), la base de données refuse de la valider.

Nuance à mentionner : la base de données applique les règles déclarées, mais les invariants au niveau de l'application (« un utilisateur peut avoir au maximum 3 sessions actives ») relèvent de votre responsabilité, sauf s'ils sont modélisés sous forme de contraintes.

La cohérence assurée par les contraintes

La cohérence est principalement la somme des règles de votre schéma. Ci-dessous, une clé étrangère garantit que vous ne pourrez jamais insérer une commande pour un client qui n'existe pas.

Si l'insertion fait référence à un client manquant, la transaction échoue, l'atomicité l'annule et la cohérence est préservée. C'est pourquoi les recruteurs disent que l'atomicité et la cohérence fonctionnent ensemble.

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 = Isolation

L'isolation signifie que les transactions concurrentes ne se gênent pas. Idéalement, chaque transaction se comporte comme si elle s'exécutait seule, même lorsque des dizaines de transactions s'exécutent simultanément.

En pratique, les bases de données proposent différents niveaux d'isolation, qui équilibrent le degré de rigueur et les performances. Les niveaux plus faibles autorisent certaines anomalies (lectures sales, lectures fantômes) en échange d'une concurrence accrue.

C'est la partie la plus riche de tout entretien sur ACID ; les deux prochaines leçons présentent donc en détail les niveaux d'isolation et les anomalies de lecture.

Pourquoi l'isolation forme un éventail

Une isolation parfaite (SERIALIZABLE) coûte cher, car elle doit empêcher tout conflit d'entrelacement possible, souvent en verrouillant ou en annulant des transactions.

La norme SQL définit donc quatre niveaux. Un piège fréquent en entretien : les candidats supposent que l'isolation est binaire. Ce n'est pas le cas. Vous choisissez explicitement le degré d'isolation souhaité.

  • READ UNCOMMITTED, le plus faible
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE, le plus fort
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;

D = Durabilité

La durabilité signifie qu'une fois une transaction validée, ses modifications survivent aux pannes, aux coupures de courant et aux redémarrages. Une transaction validée est enregistrée sur un stockage persistant.

Les bases de données y parviennent grâce à un journal d'écriture anticipée (WAL) : les modifications sont écrites dans un journal durable avant la mise à jour des fichiers de données. Au redémarrage, le moteur rejoue le journal pour récupérer tout travail validé qui n'avait pas encore été écrit dans les fichiers principaux.

Formulation pour un entretien : « La durabilité est garantie par le WAL ; COMMIT ne renvoie un résultat qu'une fois l'enregistrement du journal écrit sur le disque. »

Assembler le virement bancaire

Un seul virement met les quatre propriétés à l'épreuve simultanément :

  • Atomicité : les deux mises à jour sont appliquées ou aucune ne l'est.
  • Cohérence : un CHECK maintient les soldes positifs ou nuls.
  • Isolation : un lecteur concurrent ne voit pas un virement à moitié effectué.
  • Durabilité : après COMMIT, les nouveaux soldes survivent à une panne.

Savoir associer un seul exemple aux quatre lettres est exactement ce qui vous rapporte des points en entretien.

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

Questions de suivi courantes

Les recruteurs explorent souvent les cas limites. Préparez-vous à répondre aux questions suivantes :

  • « Quelle propriété une clé étrangère fait-elle respecter ? » La cohérence.
  • « Qu'est-ce qui vous protège d'une panne du serveur au milieu d'une transaction ? » L'atomicité (annulation de ce qui n'est pas validé) ainsi que la durabilité (relecture de ce qui est validé).
  • « L'isolation est-elle gratuite ? » Non, une isolation plus forte réduit la concurrence.
  • « Les bases NoSQL offrent-elles ACID ? » Beaucoup échangent ces garanties contre la disponibilité (BASE) ; répondez que cela dépend du moteur.

Vérification rapide

Évaluez votre compréhension de la fonction de chaque propriété ACID.

Récapitulatif : ACID en un souffle

Vous pouvez maintenant répondre clairement à la question :

  • Atomicité - tout ou rien ; le travail partiel est annulé.
  • Cohérence - chaque validation respecte les contraintes et laisse un état valide.
  • Isolation - les transactions concurrentes ne se corrompent pas mutuellement ; le degré de rigueur est réglable.
  • Durabilité - les données validées survivent aux pannes grâce au journal d'écriture anticipée.

Associez chaque lettre à un échec concret qu'elle empêche et vous réussirez haut la main le début de tout entretien sur la concurrence.

Questions Fréquemment Posées

La leçon « Les propriétés ACID expliquées » est-elle gratuite ?

Oui — le texte complet de « Les propriétés ACID expliquées » 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 Interview Prep, passe à CoddyKit PRO. Le cours SQL Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Les propriétés ACID expliquées » ?

Atomicité, cohérence, isolation et durabilité avec des exemples concrets Tu pratiques SQL Interview Prep 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 Interview Prep ?

Aucune expérience préalable n'est requise. SQL Interview Prep 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 « Les propriétés ACID expliquées » ?

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 Interview Prep ?

Oui. Chaque leçon SQL Interview Prep 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. Les propriétés ACID expliquées
  2. Les quatre niveaux d’isolation
  3. Lectures sales, non répétables et fantômes
  4. Interblocages, verrous et MVCC
← Retour à SQL Interview Prep