IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Performance de PostgreSQL avec uuid comme clé primaire


Sujet :

PostgreSQL

  1. #1
    Membre confirmé Avatar de steel-finger
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 180
    Points : 529
    Points
    529
    Par défaut Performance de PostgreSQL avec uuid comme clé primaire
    Bonjour,

    Je suis un tout nouveau utilisateur de PostgreSQL. Et j'aimerais savoir si le fait d'utiliser des UUID comme clé primaire peut poser des soucis de performances.
    Nous avons à l'heure actuelle beaucoup de clusters MySQL, et de gros soucis de performances avec le stockage des données sous cette forme (c'est surtout en écriture).

    J'aimerais savoir si des personnes utilisent des UUID sur de très grosses bases de données PostgreSQL et si les performances ne sont pas altérées.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    C'est vrai quelque soit le SGBDR !
    L'usage des UUID ou GUID est à proscrire en tant que clef primaire à la fois pour des raisons de performance et de sécurité (dans certaines release d'OS)

    En effet un UUID c'est 16 octets nécessitant au minimum 2 passes dans le processeur afin de lire les valeurs, là une une clef de type BIGINT (64 bits) n'en fait qu'une...

    En sus le calcul des UUID nécessite d'utiliser la même routine pour toutes les tables (et même pour les autres programmes) ce qui constitue un "hot spot". En effet, la génération des UUID est basé sur une lecture de la carte réseau du PC. C'est donc le même bout de code système qui est appelé pour toutes voas tables et pour d'autres applications....

    De plus l'utilisation des UUID, fournissant par nature des valeurs aléatoires, fragmente terriblement les tables et les index. Or en cette matière PG est assez mauvais (VACUUM, REINDEX...) et ces routines provoquent souvent de nombreux verrous mortels.

    De plus le tri des UUID (nécessaire pour les index des clefs praires) ne répond pas à une logique triviale....

    Pour toutes ces raisons, il est totalement contre performant d'utiliser ce type de données, destinées à identifier des objets dans des systèmes répartis ce qui n'est pas le cas des clefs primaires des tables.

    Il y a 10 ans, ayant fait un audit pour la COTOREP nous avions signalé cette utilisation imbécile du GUID et obligé l'éditeur à revoir entièrement la conception de sa base de données tellement cela posait de nombreux problèmes...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé Avatar de steel-finger
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 180
    Points : 529
    Points
    529
    Par défaut
    Malheureusement l'architecture a été conçue comme ceci, je n'aurais pas fait ce choix personnellement.

    De ce que j'ai pu voir sur les discussions de GitHub il devrait normalement pas y avoir de soucis, car PostgreSQL stocke les données d'une autre manière.
    MySQL lui utilise les clés primaires pour sauvegarder les tables sur le disque dur .

    Je vais faire des tests d'écriture avec PostgreSQL en important une partie de la base de données (~500 Go).
    Espérons que tout se passera bien, je ferai un retour des performances.

  4. #4
    Membre confirmé Avatar de steel-finger
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 180
    Points : 529
    Points
    529
    Par défaut
    Bon les testes d'écritures sont une réussite ! Reste plus qu'à migrer le tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/05/2017, 19h38
  2. Creation de table avec un champ texte comme clé primaire
    Par Sytchev3 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/07/2007, 12h40
  3. [langage] supprimer un # avec un . comme marqueur
    Par Cjules dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2004, 18h54
  4. Sauvegarde possible de PostgreSQL avec Netbackup ?
    Par gueeyom dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/05/2004, 11h56
  5. Performance de PostGresql
    Par atao dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/01/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo