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

MySQL Discussion :

Ordre de grandeur d'une BDD


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 68
    Par défaut Ordre de grandeur d'une BDD
    Bonjour,

    Je débute en MySQL et j'aurai besoin de votre avis/expérience :
    J'ai créé une base avec plusieurs tables, dont 1 qui contient 30 millions de lignes. Cette table fait dans les 3Go. Ca me parait énorme.
    Quand j'exporte la base dans un fichier texte, j'ai un fichier de 700Mo et je pensais que ma base était 2x moins grosse que ça alors qu'elle est 4x plus grosse !

    Est-ce que c'est un ordre de grandeur normal, 3Go pour 30M lignes ?
    On peut paramétrer la base pour réduire la taille ?

  2. #2
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 812
    Par défaut
    Bonjour,
    Tout dépend de la structure de tes données. Si, par exemple, tu as une colonne que tu as déclaré en CHAR(150) alors que les enregistrements ne dépassent jamais 50 caractères pour cette colonne, tu as perdu 100 caractères multiplié par le nombre d'enregistrements ou alors tu définis une colonne avec INT et que tes enregistrements contiennent des chiffres de 0 à 255, tu aurais dû créer cette colonne avec TINYINT UNSIGNED parce que tu perds 3 octets multiplié par le nombre d'enregistrements.

    Je te suggères de passer avec phpmyadmin ta table avec la fonction Suggérer des optimisations quant à la structure de la table Tu la trouveras en bas du tableau de structure de ta table. Il faut quand même faire attention, ça peut être assez lent avec de grandes tables.

    Dans mon cas, j'ai une table de 120.000 enregistrements et elle occupe près de 700 Mo.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 68
    Par défaut
    Dans cette table j'ai 4 champs qui sont des int(8) unsigned.
    Mais après avoir lu un peu de doc, il semble que la taille spécifiée dans les parenthèses ne joue pas. Il faut plutot passer en tinyint, smallint, mediumint...

    Mais quand meme quelque chose de bizarre :
    3G les 30M de lignes, ca fait 100 octets la ligne.
    Or une ligne de 4 champs int (=4 octets) = 16 octets
    Où est l'erreur ?

    Sinon j'ai spécifié un champ comme 'primary', un couple de champs comme 'unique', et un champ comme 'index'.
    est-ce que cela prend de la place ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 68
    Par défaut
    J'ai adapté la structure de ma table pour avoir des smallint/mediumint au lieu des int. Ca ne change rien.
    Par contre j'ai remarqué que les données prennent 900M et les indexes 2,2G.

    J'ai 2 champs qui sont des clés étrangères donc je leur ai mis un index chacun, et en plus ces 2 champs sont un couple unique donc ils ont un index unique.
    c'est mauvais de faire ça ?

  5. #5
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 812
    Par défaut
    Bonjour,
    est-ce que tu as pensé à Suggérer des optimisations quant à la structure de la table comme je t'en ai parlé?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 68
    Par défaut
    Non pas encore, j'ai bien peur que la requête n'aboutisse pas avec les 30M de lignes.
    Deja pour supprimer un index, il a mis 4h...

Discussions similaires

  1. Ordre de grandeur pour développer une petite animation 3D
    Par greg08 dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 06/12/2009, 19h54
  2. Ordre de grandeur d'une fonction
    Par Bool1988 dans le forum Caml
    Réponses: 7
    Dernier message: 05/09/2007, 16h38
  3. [XML] extraction directe de données d'une BDD
    Par MicKCanE dans le forum XQUERY/SGBD
    Réponses: 7
    Dernier message: 04/09/2006, 14h01
  4. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 07h53
  5. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 19h18

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