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

Requêtes MySQL Discussion :

Ralentissement de mysql.


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut Ralentissement de mysql.
    Bonjour à tous.

    Je programme en python, et le programme conserné par ce problème à pour but de remplir un tableau excel!

    Pour chaque case du tableau je doit faire une requete sql... une requete toute simple du type:
    SELECT SUM('XXX') FROM XXX WHERE truc= truc and truc2 = 1..............
    J'utilise donc des boucles.

    Cette requete marche bien au debut du premier tableau, et puis elle devient de plus en plus lente! Mais vraiment........ vraiment............vr...ai....m...ent................ tres tres lente!
    Apres quatre tableau je stop le programme... c'est vraiment trop lent!

    J'ai mis certain champs en index (comme il se doit) mais sa n'arrange rien.
    Je ne comprend pas!
    Quelqu'un aurait il une idée?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Par défaut
    Salut


    Pourquoi passer par Python? Excel sait récuperer les données d'un table mysql (grace à mysql_connector.)

    Il nous faudrait la structure des tables concernes

  3. #3
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    J'ai pris vb (microsoft?) en grippe!

    Non, sérieusement!
    Tout le reste de l'application est en python, et les variables utilisé pour récupérer tel ou tel type de donnée sont dans des class python... je reste donc sur python par "commodité"!

    Celà dit, et pour tester, j'ai recodé un petit "test" en vb... et le résultat est le même! Se qui me suggère que le problème viendrais de la base MySQL.

    Pour se qui est de la structure...hmmm.... j'ai presque honte de vous montrer sa! C'est pas moi qui est fait la base, c'est une seul table avec 25 champs!
    Tout les champs ne sont pas utilisé, et la base est remplie à partir de fichier csv que nous fournis le serveur. Bordelique quoi, et avec pas mal de champs test(que je n'utilise pas dans ce cas)!

    J'ai aussi pu remarquer que durant les requetes le serveur utilise 50% des deux cpu.

    Est-ce normal qu'il n'utilise pas 100%? (ou presque)
    Est-ce le serveur qui n'arrive pas à suivre?

    Merci.

  4. #4
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    Voilà quelque info sur la base de donnée et le "serveur" qui la fait tourner!

    Base de donnée:
    • Une seul table
    • 800 000 enregistrements
    • 190 Mio


    Le serveur:
    • windows serveur 2003
    • Pentium 4: 3.40Ghz double coeur
    • 1 Go RAM


    La question, est-ce le serveur qui n'est pas assé puissant pour faire fonctionné le tout?

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Ce qui, à mon avis, prend le plus de temps, ce sont les accès au serveur et les requêtes itératives.
    Si j'ai bien compris, tu exécutes autant de requêtes que tu as de cellules à remplir. Ça veut dire à chaque fois un nouvel accès serveur, une connexion à la base et une nouvelle requête.

    Personnellement, j'exécuterai une grosse requête une bonne fois pour toute, avec un peu plus de colonnes renvoyées, puis je traiterais ce résultat dans le langage de programmation pour insérer les valeurs souhaitées dans les cellules correspondantes. Un seul accès au serveur, une seule requête, et les temps de réponse sont grandement améliorés .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    J'ai déjà raccourcie un peut le temps de traitement en créant une connexion persistante avec le serveur! Ainsi la connexion ne s'effectue qu'une seul fois!

    Pour se qui est de la requête... heu... je vois pas comment faire!

    Donc, explication de mon tableau:
    Il s'agit en faite d'un tableau d'encaissement!
    En vertical, chaque ligne représente un jour du mois!
    En horizontal, chaque colonne représente un type d'encaissement. (CB, mandats, cheque,.....)
    Pour chaque type d'encaissement j'ai un montant encaissé(SUM), et le nombre d'encaissement(COUNT)!

    Chaque requête est donc soumit à plusieurs clause WHERE date=...., type_encaissement=... qui sont variable et change pour chaque requête.
    mais aussi client=...., lieux=...... qui change pour chaque tableau.

    Quel méthode doit-je utiliser? Des sous-requêtes?

Discussions similaires

  1. ralentissement base mysql
    Par to1n00 dans le forum Administration
    Réponses: 0
    Dernier message: 31/08/2010, 15h50
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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