Bonjour,
j'ai développé une appli de gestion de documents numériques (pour ceux que ça intéresse voir ici), et je m'apprête à augmenter considérablement le volume de données de la base (le nb de document va passer en gros de 1500 à 15000 ...).
D'après la façon dont réagit mon serv de développement, il faut absolument que je trouve quelque chose pour que ça "rame" moins lorsque les données seront versées sur le serv de prod ...
J'ai déjà essayé d'optimiser autant que possible mes requêtes, ce qui a effectivement amélioré les choses, mais ce n'est pas suffisant.
Description (rapide et partielle) de ma base :
Les documents sont décrits par des "métadonnées" (auteur, titre, date, etc ...) dont la liste des champs est prédéfine. On apelle l'ensemble des métadonnées liées à un document sa "notice".
J'ai donc trois tables :
et la table d'association :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 document(id_document, id_utilisateur ...) metadonnee(id_metadonnee, libelle, obligatoire, nb_max etc ...)C'est cette dernière table qui pose à mon avis problème : suite à l'ajout massif de documents qui est imminent, le nombre d'enregistrement de cette table passe à plus de 150 000 !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part notice(id_document#, id_metadonnee#, valeur)
Or, les fonctionnalités de mon applis sont telles que j'ai besoin d'executer des bonnes grosses requêtes bien bourrines avec des sous requêtes imbriquées et tout (comme je l'ai dit plus haut, j'ai essayé d'optimiser le plus possible ces requêtes mais au vu des fonctionnalités, il y a un niveau de complexité sous lequel je ne peux pas descendre).
Du coup, avec tout ça, le serveur a du mal à suivre : certaines requêtes mettent 30sec à répondre en utilisant 70% du cpu) bref, les temps de réponses sont inacceptables pour l'utilisateur
Le serveur est une machine assez puissante, sous LAMP, logiciels plutôt à jour (mysql 5.1), environ 10 000 pages vues/jour, probablement bientôt le double.
D'où mes questions :
- comment configurer le serveur pour qu'il tourne le mieux possible ?
Quelles variables de conf peuvent être importantes ? Comment optimiser la structure de ma BD (indexes, partitionnement etc ... ).
- si ce n'est pas possible : quelle conf materielle faut-il ? mémoire, processeurs, disque etc ... que me conseillez-vous ?
Voilà, si vous avez ne serait-ce que des pistes à explorer pour résoudre mon pb, je suis prenneur, si vous avez besoin d'infos plus détaillées sur la conf de mon serveur ou la structure de ma BD aucun problème.
Merci d'avance
Partager