MVCC

Définition, exemples et bonnes pratiques

À retenir

  • Permet des lectures et écritures simultanées sans attente.
  • Assure la cohérence : on voit toujours une version stable des données, même si elles changent ailleurs.
  • Évite le verrouillage complet des tables de données.

Le MVCC est une méthode permettant à plusieurs utilisateurs d'accéder simultanément aux mêmes données sans se bloquer les uns les autres. Imaginez une bibliothèque où, au lieu de prêter l'unique exemplaire d'un livre, on donnerait à chaque lecteur une photocopie instantanée de l'ouvrage : chacun peut lire sa version tranquillement pendant qu'un auteur prépare une nouvelle édition en coulisses.

Étymologie

Le terme est l'acronyme anglais de Multiversion Concurrency Control (Contrôle de l'accès concurrent par versions multiples). Il est apparu dans la recherche sur les bases de données dans les années 1970 pour résoudre les problèmes de lenteur causés par les systèmes de verrouillage classiques.

Exemples d'usage

  • PostgreSQL : utilise ce système pour garantir que les lecteurs ne bloquent jamais les rédacteurs de données.
  • MongoDB (via le moteur WiredTiger) : gère les écritures massives grâce à des clichés de données.
  • Git : bien que ce soit un outil de versionnage de code, il partage la même philosophie en gérant différentes versions d'un même projet en parallèle.

Cas d'usage

On utilise principalement le MVCC dans les systèmes de gestion de bases de données (SGBD) relationnels et NoSQL, ainsi que dans certains langages de programmation pour gérer la mémoire partagée de manière sûre et rapide.

Bonnes pratiques

Il est crucial de ne pas laisser de transactions ouvertes inutilement. Puisque le système doit garder en mémoire toutes les versions des données tant qu'un utilisateur les consulte, des sessions trop longues peuvent entraîner une consommation excessive d'espace disque (phénomène de bloat).

Synonymes

contrôle de concurrence multi-version versionnage transactionnel

Antonymes

verrouillage pessimiste accès exclusif lock-based concurrency

Conseil

Pour bien comprendre le MVCC, visualisez-le comme un système de « photos » : chaque fois que vous commencez une tâche, le système prend une photo des données. Peu importe ce que font les autres après, votre photo ne changera pas jusqu'à la fin de votre travail.

Questions fréquentes

Le MVCC prend-il plus de place sur le disque ?

Oui, car il doit stocker temporairement plusieurs versions d'une même information au lieu d'écraser directement l'ancienne.

Est-ce que c'est automatique ?

Dans la plupart des bases de données modernes comme PostgreSQL ou Oracle, c'est le mode de fonctionnement par défaut que vous utilisez sans le savoir.