Table mysql à 1Go, 5 millions d'entrée, le serveur rame...

benjiman
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 254
Inscription: 9 Oct 2005

Table mysql à 1Go, 5 millions d'entrée, le serveur rame...

Message le Lun Déc 17, 2007 20:44

Bonjour !!

Voila, j'ai un EG 2007 (reloaded) de chez OVH (soit 2x1,8 Ghz, 2 Go de DDR) et j'ai un gros problème avec Mysql (ce serveur n'est que un serveur mysql).

En effet, j'ai une table d'environ 5 millions d'entrées pesant à peu pres 1,1 Go.

Malgré un parfait choix des clés ... le site rame énormement lorsqu'on lui parle de cette table !
Je viens de voir en plus, par le script d'aide de configuration de mysql que 75% de mes clés sont enregistrées sur le disque dur et non pas dans la ram ...
(d'un autré coté, c'est normal ... je ne vais pas fixé à 2 Go de Ram la quantité de clés enregistrés dans la Ram ... Ca ne laisserait rien a mysql en lui meme....)

D'où ma question : COMMENT je peux faire pour que mysql puisse acceder à cette table sans délai de 1 minute pour chaque demande ?

Parce que prendre un serveur avec 4 Go de Ram, je veux bien, mais ca ne va rien me changer parce que dans 2 mois, il faudra en prendre 8 etc.


Voila, j'espère que vous aurez une solution à mon problème

rikew
WRInaute impliqué
WRInaute impliqué
 
Messages: 735
Inscription: 19 Déc 2002

Message le Lun Déc 17, 2007 21:31

ya quoi comme données dans la table ?
si c'est des logs tu devrait les archiver. tu regroupe tout les logs d'une journée dans un seul enregistrement.

Genesys
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 2 Mar 2004

Message le Lun Déc 17, 2007 22:56

Une table de cette taille n'est pas insurmontable. Tout dépend de la manière dont on y extrait les informations. Les performances se dégradent sensiblement dans le cas d'une requête avec un ORDER BY ou un SELECT qui parcourt toutes les lignes de la table.

Il est possible, et à condition de disposer d'une version MySQL récente, de partitionner la table :
http://krierjon.developpez.com/mysql/partitionnement/

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Re: Table mysql à 1Go, 5 millions d'entrée, le serveur rame.

Message le Mar Déc 18, 2007 1:43

benjiman a écrit:Parce que prendre un serveur avec 4 Go de Ram, je veux bien, mais ca ne va rien me changer parce que dans 2 mois, il faudra en prendre 8 etc.


je pense que tu as du te poser la question si tu souhaites accéder rapidement à ses infos mais as tu vraiment besoin de TOUTES ces infos et en temps réel ?

Serait-il tolérable par exemple de n'accéder uniquement à J+1 aux données du jour J ?
Est ce que tu peux découper les données en données utiles et une autre partie moins utile ?
Tu n'as pas d'index FULLTEXT dessus au moins ? car ca ca fait ramer ?

Qu'elle est la nature des opérations que tu fais sur la table ? beaucoup d'insert / update ? si oui cela demande de la part de mysql de mettre à jour ses index ?

As tu des index sur toutes les colonnes ? peux tu supprimer des indexs et en mettre uniquement sur les colonnes qui dispose de foreignkey ?

bref des débuts de réflexions...

ps : c'est quoi comme données qui grossit aussi vite ? archivage de flux rss ?


david96
WRInaute passionné
WRInaute passionné
 
Messages: 1430
Inscription: 28 Aoû 2005

Message le Mar Déc 18, 2007 2:12

Sujet intéressant, on peut tous y avoir droit un jour.
As tu optimisé tes index ?
Via la console ou phpmyadmin qu'est-ce que te donnes la commande explain devant tes requêtes SQL ?


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Mar Déc 18, 2007 2:12

les dernières versions loggent les slow query me semble-t-il

ça devrait dejà te mettre sur une piste

il y a tellement de facteurs qui peuvent freiner tes requêtes

rog

gilles000000
WRInaute discret
WRInaute discret
 
Messages: 70
Inscription: 9 Déc 2005

Message le Mar Déc 18, 2007 4:27

Les requêtes qui ont accès à ta base de données sont très importantes.
Notre base de données contient plusieurs tables de plus de 1 millions d'enregistrements. Il y a 1 an, nous avons dû revoir complètement toutes les requêtes de notre site. Mysql est capable d'en prendre sans problème mais il faut savoir s'en servir correctement.
Il a fallu revoir toutes les recherches et convertir des champs en FullText. Faire un select sur plusieurs champs en texte peut être pénible pour Mysql. C'est pour ça qu'il ont inventé la clé FullText.
Également, faire des requêtes JOIN , ou encore, des ORDER BY, peut être fastudieux pour Mysql si c'est mal fait.
Il est vrai que notre base de données de notre site est sur un serveur dédié à lui seul mais tout de même, il y a environ 22 millions de requêtes par jour sur notre base de données et il se comporte très bien


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité