BD volumineuse\Réseau\temps de reponse

Résolu/Fermé
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 - 15 avril 2008 à 09:47
DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 - 15 avril 2008 à 14:10
Bonjour,

Je developpe actuellement une base de données pour une entreprise et je rencontre des problémes par rapport au temps d'éxécution des requetes.

A la base j'ai utilisé mon pc portable en local avec une base de données de plus de 700 000 enregistrements : mais il n'y avait pas de soucis, les requetes étaient assez rapides (moins de 1-2 secondes pour la plupart).

Une fois ma bd apliquée sur le réseau de l'entreprise, comme je m'y attendais le temps de réponse à considérablement augmenté
(maintenant : 10 et 20 secondes), et il faudrait que mes requetes s'executent quasiment instantanément!!!

J'utilise phpmyadmin, ma base de données est classique mais posséde beaucoup d'enregistrements (plus de 700 000 enregistrements), mes requetes sont elles aussi classiques (ex : select distinct ville from listville order by ville) j'ai deja essayé les index a bon essient mais ça ne change pas grand chose... et je ne connais pas beaucoup de d'améliorations possibles pour les requetes... peut etre que ma base est mal ordonnée?

En gros je cherche a faire des recherches globales a chaque fois sur ces 700 000 enregistrements et je n'ai pas le choix car je developpe des outils de recherche (avec des imbrications de requetes en fonctions des choix de l'utilisateur) par exemple je cherche à afficher toutes les communes qu'il y a dans la base de donnée classées par communes (croissant) sans doublons dans un menu déroulant ====> 10-20 secondes de réponse!!!
Puis ensuite en fonction de la commune : afficher les adresses possibles dans un autre menu déroulant...

Comment faire pour que ces requetes aient un temps de reponse trés court???

Mais il y a quelque chose que je ne comprends pas trés bien : je posséde deux tables (une contenant 700 000 enregistrements et une autre possédant 500 enregistrements) et le temps de reponse sur l'une ou l'autre des tables est le même = trés long!!! comment est-ce possible?

Bref je me doute que vous aurez besoin d'informations supplémentaires pour pouvoir m'aider donc j'attends vos réponses et je me tiens prêt à vous répondre ;)

MERCI POUR VOTRE PATIENCE : il en faut!!

5 réponses

DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 2
15 avril 2008 à 09:57
Salut,

Petite remarque qui me passe par la tête : quelle est la latence du réseau de ton entreprise ? quand tu ping le serveur de BD par exemple ?
Il faudrait que tu puisse décomposer le temps d'éxécution de ta requete en :
- temps de connection à la base
- temps d'éxecution effectif (avec phpmyadmin, il doit le donner... A moins que le temps que tu ai annoncé soit déjà le temps donné par phpmyadmin ??)
- temps de retour de la réponse

Car entre 1 ou 2 secondes sur un portable, et 20 secondes sur le réseau de l'entreprise, l'écart me parrait affolant :-)

Désolé, je ne t'aide pas spécialement,
j'essaye juste de comprendre en même temps, problème intéressant !

DoLF
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3
15 avril 2008 à 10:08
Non non c'est super simpa de ta part de répondre aussi vite ;)
Donc la je vais récuperer les infos et je te recontacte!!
Je suis stagiaire donc pas super super calé, et surtout le réseau c'est pas ma spécialité!!

Ok alors ping serveur : inférieur à 10 ms!! bizarre.. (paquet de 32 octets envoyé)
Ensuite pour décomposer le temps des différentes étapes de ma requete je ne sais pas comment faire ;( bouh le nul !!
Peux-tu m'éclairer STP ?
0
DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 2
15 avril 2008 à 11:23
Désolé comme tu as fait un EDIT, j'avais pas vu ta réponse !

Oui donc visiblement le réseau n'est pas en cause... Est-ce que ce n'est pas que le serveur de BD est très sollicité ?? et qu'il te répond un peu quand il a le temps... ?

Pour tester le temps de connection à la BD, et le temps a partir duquel elle te répond, tu peux t'amuser avec des outils comme wireShark (en regardant passer les trames, et leur timestamp), mais il faut être un peu geek ^^

Et donc quand tu fais tes requetes par phpmyadmin sur la bd, c'est la que ca met 20 secondes ??
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3
15 avril 2008 à 11:38
Alors aprés bataillage (sa existe pas comme mot) j'ai reussi à optimiser le temps des requetes passant ainsi de 10-20 secondes à 5 secondes environ. J'ai bien ajusté mes index et réorganisé un peu mes tables... donc c'était bien une erreur de ma part.

Par contre bien que 5 secondes soit un temps de reponse honorable il faudrait quand même que ce temps soit quasi nul!!!

Je vais telecharger wireshark et voir quand meme ce que ça donne..mais je pense que le probleme n'est pas du réseau comme tu l'as indiqué.. quoique on sait jamais!! Car je pense que maintenant le temps de réponse est à peu prés normal.

Si tu as d'autres suggestions je suis preneur...
0
DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 2
15 avril 2008 à 11:44
Oui 5 secondes c'est dejà plus raisonnable,

Mais en utilisant wireshark je pensais plutôt voir le temps que met le serveur de base de donnée à accepter ta connexion, si tu vois ce que je veux dire... (j'ai exclu le problème de réseau oui, si le ping est < 10 ms c'est bon)

Plutôt dans l'idée de voir s'il n'est pas un peu chargé de demandes...
Il y a autre chose qui tourne dessus ? il est actuellement utilisé ? ou il ya juste ta base ?
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3
15 avril 2008 à 11:59
Bon j'ai un petit peu regardé les trames issues des tests : j'avoue que j'ai du mal!!

Quelles sont les lignes que je dois regarder pour voir le temps que met le serveur de base de donnée à accepter Ma connexion ? (l'ip ou est hébérgé la base est 143.83.7.40, la mienne est 143.83.6.150) j'arrive a identifier les ip mais je ne sais pas quel protocole ni quelles informations m'intéressent...

En effet je travaille dans une grosse entreprise donc il y a beaucoup de monde sur le réseau, il est utilisé en permanance et plusieurs bases tournent dessus!!

PS : je vais manger la je suis de retour vers 13 heures ;)
0
DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 2
15 avril 2008 à 13:50
Ben moi quand je faisais ca je lançais wireshark, je lançait une connexion via SQLPLUS à ma base oracle,
et je comparais les temps entre la requête, sur le port 1521 (tcp), et la réponse...
Mais la adapté a ton cas...
tu utilise mysql je suppose ?(le port mysql ca doit être euhh 3306)
sous linux pour se connecter a ma base mysql j'utilise la commande "mysql" mais sous windows j'ai jamais eu à m'en servir...

si je pense à autre chose, je te sonne ^^ mais pour le moment j'ai plus trop d'idées...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3
15 avril 2008 à 14:04
ok merci pour ton aide en tout cas c'est simpa de ta part ;)
Je vais reposter car maintenant mon probléme est légèrement différent ;)
A plouf et bonne journée
Bonne continuation
0
DoLF_ Messages postés 92 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2008 2
15 avril 2008 à 14:10
you're welcome

bonne journée
0