Transactions et concurrence
AvancéACID, niveaux d'isolation, MVCC, verrous, deadlocks et upsert : garder des données correctes sous charge concurrente.
- 01
Transactions et ACID
Une transaction regroupe plusieurs opérations en une seule unité : tout réussit, ou rien n'est appliqué.
- 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é.
- 03
Niveaux d'isolation et anomalies
Le niveau d'isolation détermine ce qu'une transaction voit des changements concurrents.
- 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.
- 05
Deadlocks
Un deadlock survient quand deux transactions s'attendent mutuellement : PostgreSQL le détecte et annule l'une des deux.
- 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.