</>

Transactions et concurrence

Avancé

ACID, niveaux d'isolation, MVCC, verrous, deadlocks et upsert : garder des données correctes sous charge concurrente.

  1. 01

    Transactions et ACID

    Une transaction regroupe plusieurs opérations en une seule unité : tout réussit, ou rien n'est appliqué.

  2. 02

    MVCC : lire sans bloquer

    PostgreSQL utilise le MVCC (Multi-Version Concurrency Control) : une modification ne réécrit pas la ligne, elle en crée une nouvelle version, et chaque transaction voit la version qui correspond à son instantané.

  3. 03

    Niveaux d'isolation et anomalies

    Le niveau d'isolation détermine ce qu'une transaction voit des changements concurrents.

  4. 04

    Verrous de lignes : FOR UPDATE, SKIP LOCKED

    Quand plusieurs transactions décident à partir de la même ligne, on la verrouille pour sérialiser l'accès et éviter les mises à jour perdues.

  5. 05

    Deadlocks

    Un deadlock survient quand deux transactions s'attendent mutuellement : PostgreSQL le détecte et annule l'une des deux.

  6. 06

    Upsert et idempotence : ON CONFLICT

    L'INSERT ... ON CONFLICT rend l'écriture atomique et rejouable : « insère, ou met à jour si elle existe déjà », sans course entre un SELECT et un INSERT.