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 :

Nombre de tables & Performance


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Nombre de tables & Performance
    Bonjour,

    J'aimerais savoir si le nombre de tables dans une bdd MySQL a un impact sur les performances globales ?
    Pour mon site e-commerce prestashop, j'ai une base avec plus de 4000 tables dont 90% sont des petites (moins de 10k lignes).
    Ces tables sont générées par un module pour la mise en place de filtres personnalisés pour chacune de mes catégories.
    Si oui, en quoi cela est "néfaste" pour les performances ?

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Le nombre de tables importe peu, mais 4000 tables pour une seule base de données j'ai du mal à imaginer ce qui peut justifier une telle pléthore de tables !
    Avec autant de tables, vous avez très probablement de nombreuses redondances de données, sans garantie de cohérence, or la première qualité d'une BDD est de garantir la cohérence de l'information.
    Je doute que ce soit possible avec un tel modèle.

    Pour les perfs il faut éviter les tables avec un très grand nombre de colonnes (tables dites "obèses') qui génèrent des contentions et de la charge réseau inutile.
    Il faut également pister les index inutiles surtout s'ils sont multi-colonnes et non uniques
    Enfin choisir des clefs concises et stables, donc non sémantiques

    A partir de là, le fait qu'une table contienne des millions ou milliards de lignes ne nuit pas aux perfs, si les accès sont sélectifs via des requêtes sargables utilisant des index filtrants

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    Citation Envoyé par agslk
    J'aimerais savoir si le nombre de tables dans une bdd MySQL a un impact sur les performances globales ?
    Chez moi, quand on parle de performance, je comprends le temps nécessaire à l'exécution d'une requête, mais aussi la volumétrie.

    Donc non, cela n'a aucun impacte sur le temps d'exécution, mais cela risque d'avoir un sérieux impacte sur la volumétrie.
    Sont-ce des tables d'archivages ? Des partitions ? Ou simplement le fait d'éclater une table principale logique en plusieurs sous-tables physiques ?

    Citation Envoyé par agslk
    Pour mon site e-commerce prestashop, j'ai une base avec plus de 4000 tables dont 90% sont des petites (moins de 10k lignes).
    4000 tables, c'est une hérésie en terme de base de données.

    Citation Envoyé par agslk
    Ces tables sont générées par un module pour la mise en place de filtres personnalisés pour chacune de mes catégories.
    Je ne connais pas prestashop. Il est difficile de dire si cela est adapté à ce que vous voulez faire.

    Citation Envoyé par agslk
    Si oui, en quoi cela est "néfaste" pour les performances ?
    Je voie essentiellement deux points :

    1) les jointures sur une quinzaine de table n'est pas ce que j'appelle une bonne conception de votre base de données.
    Plus il y a d'accès et plus long sera la récupération des données.
    En fait, il faut voir d'une part la volumétrie et d'autre comment les jointures sont faites.

    2) la multitude de tables suppose que vous avez un découpage par thème.
    Cela sous entend que vous avez autant de sous-applications qu'il y a de thèmes.
    Bonjour la maintenance !

    Il vaut mieux avoir peu de tables, même très grosses en volumétrie et sans avoir trop de colonnes.
    Une sélection filtrante serait le mieux pour avoir de bon temps d'exécution. D'où la gestion des index.

    Mais la question cruciale est le SGBDR que vous utilisez !
    MySql n'est pas ce qu'il y a de mieux si vous atteignez une certaine volumétrie.
    Les temps de réponses risquent de s'allonger exponentiellement.

    Acheter un package tout fait est la solution de facilitée.
    Du sûr mesure serait mieux mais cela risque de coûter plus cher.

    Au départ, vu que la volumétrie est faible, tout semble parfaitement fonctionner.
    Mais à partir d'un certain seuil, vous allez vite comprendre que le choix MySql n'est pas très judicieux.
    Encore que cela dépend aussi ce que vous faites dans votre applications.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  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 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    De tourtes façon, le modèle de données de prestashop est une vaste merde. Il contient déjà des tables obèses... J'ai dénoncé cela dans l'ouvrage que nous avons publié moi collègue Christian Soutou et moi sur la modélisation et que vous trouverez ici... De la à ajouter une mauvaise pratique de plus.. Cela ne m'étonne pas du tout....

    Nom : Modelisation_bases_de_donnees_SGBDR.jpg
Affichages : 174
Taille : 32,7 Ko

    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/ * * * * *

Discussions similaires

  1. Impact sur les performances avec un grand nombre de tables
    Par enila dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 04/08/2011, 15h40
  2. Impact sur les performances d'un grand nombre de tables
    Par thechief dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/07/2010, 16h47
  3. Problème Performance Postgres / Nombre de tables
    Par kxxx78 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/12/2009, 10h01
  4. [Volume des tables et performance]
    Par kase74 dans le forum InterBase
    Réponses: 9
    Dernier message: 09/03/2004, 14h14
  5. Réponses: 5
    Dernier message: 25/11/2003, 09h41

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