SQLPostgreSQLArchitecture

Transactions PostgreSQL et niveaux d'isolation : ce que vous devez absolument savoir

19 février 2026 · Sphinx-Digital

Les transactions garantissent ACID. L’isolation definit ce qu’une transaction voit du travail des autres transactions concurrentes.

Les anomalies de concurrence

Dirty read : lire des donnees non commitees. Non-repeatable read : lire la meme ligne deux fois et obtenir des valeurs differentes. Phantom read : une requete sur une plage retourne des lignes differentes entre deux lectures.

Niveaux d’isolation PostgreSQL

NiveauDirty ReadNon-repeatablePhantom
Read CommittedImpossiblePossiblePossible
Repeatable ReadImpossibleImpossibleImpossible
SerializableImpossibleImpossibleImpossible

Demonstration : le probleme de l’inventaire

-- Transaction 1 (Read Committed par defaut)
BEGIN;
SELECT stock FROM products WHERE id = 1;  -- Retourne : 1
-- Transaction 2 commite et decrement stock a 0
SELECT stock FROM products WHERE id = 1;  -- Retourne : 0 (non-repeatable read)
COMMIT;

Avec Repeatable Read :

BEGIN ISOLATION LEVEL REPEATABLE READ;
SELECT stock FROM products WHERE id = 1;  -- Retourne : 1
-- Transaction 2 commite -- IGNORE
SELECT stock FROM products WHERE id = 1;  -- Retourne toujours : 1
COMMIT;

Choisir le bon niveau

# Pour les operations financieres
with engine.connect() as conn:
    conn.execute(text("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"))
    # ... operations
    conn.commit()

Notre formation SQL couvre les transactions avancees avec des exercices pratiques.