uuidv7()
PostgreSQL 🟡 MidDéfinition
Fonction native ajoutée en PostgreSQL 18 (25 septembre 2025) qui génère des UUID version 7 : contrairement a UUIDv4 (aléatoire), les premiers bits d'un UUIDv7 encodent un timestamp, ce qui les rend triables chronologiquement et limite la fragmentation des index B-tree observée avec UUIDv4.
Analogie
Comme numéroter des tickets dans l'ordre d'arrivée (uuidv7) plutôt que de tirer un numéro au hasard dans un sac (uuidv4) : le tri redevient naturel.
Exemple de code
CREATE TABLE events (
id uuid PRIMARY KEY DEFAULT uuidv7(),
payload jsonb
);
-- Les id inseres restent ordonnes
-- chronologiquement dans l'index
Cas d'usage
Remplacer un UUIDv4 comme clé primaire quand l'ordre d'insertion doit rester exploitable, sans revenir a un SERIAL prévisible.
Anti-pattern
Termes liés
En entretien
Explique-moi uuidv7() et pourquoi PostgreSQL 18 l'a ajoutée.
Contrairement à UUIDv4 qui est aléatoire, un UUIDv7 encode un timestamp dans ses premiers bits, ce qui le rend triable chronologiquement et limite la fragmentation des index B-tree observée avec UUIDv4. C'est utile en clé primaire quand l'ordre d'insertion doit rester exploitable.
Quand faut-il remplacer uuidv4() par uuidv7() ?
Sur une table à très fort volume d'écriture où la fragmentation d'index dégrade les performances, sans pour autant revenir à un SERIAL prévisible et énumérable. C'est un compromis entre l'aléatoire d'UUIDv4 et le tri naturel d'un SERIAL.
Fiche mise à jour le 2026-09-27