-
Limite de Mysql?
Bonjour,
je viens ici pour avoir votre avis sur les limites de mysql pour assurer de bonnes performances de mysql. J'ai actuellement une base de donnée qui fait 597 gigas en taille et possède environ 256000 tables. J'ai cherché sur la documentation officielle quelle serait la limite en taille ou en nombre de tables qui serait préjudiciable au performance mais sans succès. Le serveur fonctionne correctement à un rythme de 400 requêtes seconde en moyenne mais qu’adviendra t-il si l'activité augmente(disons double). Comment puis-je évaluer efficacement le comportement de mysql en fonction de l'activité. Enfin dernière question: par moment, Mysql créé des fichier temporaire(plusieurs giga) et je ne sais pas à quoi ils correspondent. J'ai assez peu d'expérience en tant qu'administrateur de basse de donnée, c'est pourquoi je sollicite votre avis.
Merci d'avance.
-
256.000 tables ? ça sent l'erreur de conception ça....
On peut avoir un exemple de tables ? (noms + structures)
Pour les fichiers temporaires, certaines requêtes ont besoin de table temporaire, qui sont stockés dans des fichiers temporaire dans ce cas la (faites un explain sur votre requete pour savoir si une table temporaire est créer)
-
Oui effectivement, il y a un certain nombre de choses "étonnantes" dans la conception. En fait, je viens d'arriver dans un nouveau poste et je découvre l’environnement. Le code en place fait un certain nombre d'opérations sur des documents et crée dynamiquement trois tables par document (oui, ça m'a fait drôle à moi aussi). Du coup, le nombre de table augmente d'environ 600 tables par jour. Je vais changer radicalement de solution et utiliser Lucene qui est plus adapté. Ma question est en fait: combien de temps j'ai, pour résoudre ce problème de conception avant de voir les performances de Mysql s'effondrer. Je ne trouve pas dans la documentation officiel le nombre de table maximum recommandé ou un autre indicateur des limites de Mysql.
Merci pour l'indication sur les tables temporaires, je vais regarder ça.
-
Il est effectivement urgent de reconcevoir ce truc ! 8O
Quel est le sagouin qui a "conçu" une telle bombe à retardement ?
Tu n'as pas dû chercher beaucoup pour avoir réponse à ta question !
:google: te donne entre le lien vers notre FAQ MySQL. Temps de recherche inférieur à 1 minute.
Il n'y a pas de limite théorique au nombre de tables. C'est limité par la taille de stockage disponible ou éventuellement la limite du nombre de fichier de l'OS.
-
Oui, je suis d'accord qu'il faut changer ça (et je crois que on l'est tous).
Merci pour ta réponse et pour le lien. Je l'avais déjà trouvé et parcouru (avec un temps de recherche sensiblement similaire :D) ainsi que celui-ci "http://www.dbforums.com/mysql/378480-max-number-tables-mysql-database.html" qui donne la même réponse. Le nombre maximum de table est donc théoriquement limité par le système de fichier. Mais je me demandais si il fallait que je m'attende à voir les performances diminuer dans une semaine ou dans un an. Parce que sinon, toujours théoriquement, j'ai du temps avant de prendre en défaut ext4. En fait, je cherchais à évaluer la viabilité du système, et son comportement en cas de montée de l'activité. Je vais considérer le problème comme très urgent et changer la solution au plus vite.
Je vous remercie pour vos réponses.
-
Le seul problème que tu pourrait avoir au niveau de MySQL c'est au niveau de la limite de table ouvertes :
http://dev.mysql.com/doc/refman/5.1/en/table-cache.html
-
Merci pour le lien, je vais essayer d'affiner les réglages de Mysql pour retarder l’inéluctable, ainsi que de mettre en place une réplique pour lui faire faire les opérations de lecture. J'espère avoir changé de système avant de pouvoir publier un benchmark sur l'impact du nombre de table sur la performance ;).
Merci encore.