DevFormat
Language
Retour au blog
1 mars 2026

UUID v7 vs v4 : Optimiser les Performances d'Indexation en Base de Données

Découvrez comment les identifiants UUID v7 triables par le temps évitent la fragmentation des index B-Tree et pourquoi votre base MySQL ou PostgreSQL en a besoin.

Depuis des décennies, les développeurs s'appuient sur l'UUID v4 pour les identifiants uniques. Cependant, alors que les données montent en charge, le caractère aléatoire de la v4 devient un goulot d'étranglement massif pour les performances. En 2026, l'industrie a migré vers l'UUID v7.

Le Défaut Majeur de l''UUID v4

L'UUID v4 est entièrement aléatoire. Lorsqu'il est utilisé comme clé primaire dans des bases de données comme PostgreSQL ou MySQL, chaque nouvel enregistrement est inséré à un emplacement aléatoire dans l'index B-Tree. Cela provoque :

  1. Fragmentation de l'Index : La base de données doit constamment déplacer des blocs de données pour faire de la place aux nouvelles entrées.
  2. Échecs du Cache (Cache Misses) : Comme les données sont dispersées, le CPU ne peut pas mettre en cache efficacement la "tête" de l'index.
  3. Amplification d'Écriture : Les pointes d'E/S disque augmentent à mesure que la base de données lutte pour réorganiser l'arbre.

La Solution : Pourquoi l''UUID v7 est Triable

L'UUID v7 inclut un horodatage Unix Epoch dans les 48 premiers bits. Cela rend l'identifiant "triable par le temps" (triable lexicographiquement).

Lorsque vous utilisez l'UUID v7, les nouveaux enregistrements sont toujours ajoutés à la fin de l'index. Cela se traduit par une fragmentation proche de 0 % et des vitesses d'écriture nettement plus rapides, similaires à un entier auto-incrémenté standard mais avec l'unicité globale d'un UUID.

Analyse des Performances

Dans les environnements à forte concurrence, passer de la v4 à la v7 peut réduire la taille de l'index jusqu'à 30 % et améliorer les performances d'insertion d'un facteur 2.

Spécifications Techniques :

  • Bits 0-47 : Horodatage Unix (millisecondes)
  • Bits 48-51 : Version (0111 pour v7)
  • Bits restants : Entropie aléatoire pour éviter les collisions.
Interactive Example
Local Execution
Générer 100 UUID v7

Clicking will load this data into the tool locally.

Outil de formatage associé

Besoin de formater votre code maintenant ? Utilisez nos outils sécurisés.

Ouvrir le formateur JSON