1. Les fondements ACID d’un système transactionnel

Une transaction est une unité logique de travail qui modifie l’état de la base de données. Pour assurer l’intégrité absolue en environnement critique (ex. virement interbancaire), le SGBD applique le contrat ACID :

  • Atomicité (Atomicity) : Tout ou rien. Soit l’intégralité des opérations de la transaction est validée (COMMIT), soit la totalité est annulée (ROLLBACK).
  • Cohérence (Consistency) : La transaction fait passer la base d’un état valide à un autre état valide en respectant toutes les contraintes d’intégrité définies.
  • Isolation : Les transactions concurrentes s’exécutant simultanément ne doivent pas interférer de manière imprévisible entre elles.
  • Durabilité (Durability) : Une fois le commit confirmé, les modifications sont persistées de façon irréversible sur stockage non volatile, même en cas de panne de courant immédiate.

2. Le contrôle de concurrence multiversion (MVCC) de PostgreSQL

Contrairement aux anciens systèmes qui bloquaient les lecteurs pendant qu’un rédacteur écrivait, PostgreSQL utilise le modèle MVCC (Multi-Version Concurrency Control) : « Les lecteurs ne bloquent jamais les rédacteurs, et les rédacteurs ne bloquent jamais les lecteurs. » Chaque mise à jour crée une nouvelle version physique du tuple identifiée par un numéro de transaction (xmin, xmax).

3. Les 4 niveaux d’isolation standard SQL

  1. Read Uncommitted : Permet les lectures sales (Dirty Reads). Non implémenté dans PostgreSQL (qui applique au minimum Read Committed).
  2. Read Committed (Défaut) : Une transaction ne voit que les modifications validées par d’autres transactions avant le début de chaque instruction SQL.
  3. Repeatable Read : La transaction dispose d’un instantané (Snapshot) figé au moment de sa première instruction. Protège contre les lectures non reproductibles (Non-Repeatable Reads).
  4. Serializable : Niveau d’isolation maximal (SSI – Serializable Snapshot Isolation). Simule une exécution séquentielle stricte des transactions pour éliminer toute anomalie d’écriture concurrente.