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

Décisions SGBD Discussion :

Attributs surdimensionnés dans une table


Sujet :

Décisions SGBD

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 17
    Points : 27
    Points
    27
    Par défaut Attributs surdimensionnés dans une table
    Bonjour, lorsque dans une base de données,
    de nombreux attributs sont surdimensionnés.

    J'entends par là par exemple que des attributs n'aurait pas de saisie de plus de 3, 10 ou 20 caractères alors qu'ils sont laissés par défaut en varchar(255) et que donc de l'espace mémoire est pris pour rien.

    Quels sont les problèmes qui peuvent advenir ??

    Des problèmes lors d'une éventuelle mise à jour de la BDD?? lors de la recherche dans la BDD?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Ça dépend le moteur de la base de données, mais l'impact sur 255 est probablement très minime, en terme de stockage ça ne change rien (le varchar étant variable par nature), il y a quelques opérations type agrégat où certains moteurs doivent compléter avec des espaces jusqu'à la longueur maximale, mais à moins que votre requête analyse un volume de données très conséquent, peu de chance que ce soit significatif.

    Voyez plutôt les longueurs maximales comme une contrainte concernant les données que vous souhaitez écrire.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 152
    Points : 1 939
    Points
    1 939
    Par défaut
    Bonjour,

    Lors de la modélisation il vaut mieux en effet définir une taille max proche de la réalité. Ça ne sert à rien de définir une colonne varchar2(255) si on sait pertinemment qu'elle ne dépassera jamais 10 caractères par exemple.
    Maintenant avec les capacités de stockage élevé l'impact ne devrait pas être énorme. Il peut y avoir des problèmes par exemple pour les index, si les colonnes indexées sont définies au max (varchar2(4000) par exemple).


    Concernant l'utilisation de variables définies avec des grandes tailles, oui l'espace alloué en mémoire sera plus important, mais avec les machines actuelles c'est rarement un problème.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    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 874
    Points : 53 045
    Points
    53 045
    Billets dans le blog
    6
    Par défaut
    Je vous confirme que l'impact est peu important sauf pour le cas ou le surdimensionnement est énorme et pour certaines opérations ou l'alignement des longueurs est nécessaire. En particulier comme le dit Waldar, les GROUP BY mais aussi les DISTINCT (une forme de GROUP BY) et les UNION / INTERSECT et EXCEPT (qui intègrent un DISTINCT).

    Je me souviens que lors d'un audit d'une base dont les développeurs avaient mis partout du VARCHAR(8000) certaines requêtes consommaient une place gigantesque en mémoire lors de l'exécution , alors que le volume du résultat était ridicule...

    A +

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 677
    Points
    39 677
    Billets dans le blog
    9
    Par défaut
    J'ajoute à ce qui précède que le varchar, en cas de mise à jour avec modification de la longueur du contenu, peut provoquer des déplacements dans les pages data et index *, ce qui bien entendu pénalise les performances. De plus, le varchar requiert un attribut pour stocker la longueur effective, qui ajoute 1 à 3 octets à la longueur de la donnée.
    C'est pourquoi, pour des longueurs aussi petites que 3, 10 ou 20 octets, je lui préfère du char fixe.

    * : exception faite de postgresql dont la gestion très particulière des update fonctionne differemment

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    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 874
    Points : 53 045
    Points
    53 045
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    ...* : exception faite de postgresql dont la gestion très particulière des update fonctionne differemment
    En pire ! Copies des versions des lignes dans les pages....

    A +

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

Discussions similaires

  1. Attribut VARCHAR dans une table
    Par Patrice Henrio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/03/2012, 13h45
  2. boutons radio dans une table, attribut "index" de t:radio
    Par NomUtilisateurDejaPris dans le forum JSF
    Réponses: 4
    Dernier message: 22/05/2008, 13h36
  3. Réponses: 1
    Dernier message: 15/05/2007, 10h40
  4. Changer la position d'un attribut dans une table?
    Par gui38 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2007, 21h27
  5. Comment connaitre le type d'un attribut dans une table?
    Par Abdou_9002 dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/03/2006, 10h07

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