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

C# Discussion :

Performance C# & MySQL


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut Performance C# & MySQL
    Bonjour,
    Je suis en ce moment en stage et je travaille sur l'automatisation d'une tâche donnée, bon une première chose à faire c'est de prendre des informations sur des titres d'un fichier .txt et de les décortiqués et par la suite les insérer dans ma base de données. Mon problème c'est que les fichiers par moyenne contienne 5000 lignes ainsi qu'une trentaine d'attributs chose qui me prend beaucoup de temps pour l'insertion dans ma base de donnée (environ 1min30) et donc je voudrais savoir s'il y a moyen d'améliorerla performance.
    outils utilisés : C# & MySQL 5.1.
    Méthode utilisées:
    • public static MySqlConnection connexion() //pour la connexion que n'ouvre qu'une seule fois question d'optimiser
    • public static void inserer(string requeteInsert,MySqlConnection connection)

    Merci de m'aider dans les limites du possible !
    N.B: mon application ne prend pas bcp de ressources mémoire et CPU!

  2. #2
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Bonjour,
    Je pense que j'ai trouvé une solution (vu que le problème est certainement au niveau de la liaison .net MySQL), c'est de générer un fichier SQL après la lecture de mon fichier ce fichier SQL doit contenir toutes les INSERT ! mais là un problème se pose c'est que je dois faire un appel système à mySQL pour faire exécuter le fichier SQL sur le SGBD ! Comment pourrais-je le faire ?!
    merci d'avance.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Citation Envoyé par kobe24 Voir le message
    Bonjour,
    Je pense que j'ai trouvé une solution (vu que le problème est certainement au niveau de la liaison .net MySQL), c'est de générer un fichier SQL après la lecture de mon fichier ce fichier SQL doit contenir toutes les INSERT ! mais là un problème se pose c'est que je dois faire un appel système à mySQL pour faire exécuter le fichier SQL sur le SGBD ! Comment pourrais-je le faire ?!
    merci d'avance.
    Tu as pensé à mesurer le temps que mets ta requête à aller vers ton server MySQL?
    Est-ce que tu ferme bien toutes tes connections vers la base aussi?

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Oui je ferme toutes les connexions, concernant le temps non je l'ai pas fait ! mais à travers toutes les essaies que j'ai fait, c'est clair que le problème c'est à ce niveau. si tu sais comment je pourrais faire pour exécuter le fichier SQL à partir de le ligne de commande.

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Moi, je suis plus que sceptique sur l'origine du problème et la maniere de l'aborder

    Mais ce que tu essaye de faire est a mon avis la PIRE des solution

    Si c'est pour faire ca tu pourrais creer un fichier texte tab delimité
    Et lancer une commande SQL genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LOAD DATA INFILE 'c:\\tmp\\monfichier.txt' 
    INTO TABLE rar 
    FIELDS ENCLOSED BY "" TERMINATED BY '\t' 
    LINES TERMINATED BY '\r\n'

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Par défaut
    Je plussois l'utilisation de load from file mais on ne peut pas faire de manipulation de données avant l'insert, il est nécessaire que le fichier soit correctement construit dés le début. Une solution est donc de réaliser tes traitements et de créer un fichier comptabile avec load from file. Au final, je ne suis pas sûr que tu gagne du temps.

    Une autre alternative serait de construire moins de requetes INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO matable (`col1`, `col2`...) VALUES
         ('values1', 'values2'...),
         ('values1', 'values2'...),
         ('values1', 'values2'...),
         ('values1', 'values2'...);

    Je ne crois pas que cette syntaxe supporte 5000 insertions en une seule fois. Par contre 100 par 100 ça roule et tu viens de passer de 5000 requêtes à 50.

    Dans tous les cas, il faudrait déterminer quelle est la partie de ton traitement qui utilise le plus de temps. Rajoute des chrono dans ton code pour évaluer chaque partie.

    Swann

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Bonjour,
    C'est résolu ! le problème n'étais ni de mon code ni de la liaison, c'est en changeant le type de ma base de données de InnoDB à MyISAM que le temps que prend l'opération ne dur plus que 5 à 6 secondes (2 minutes avant) ! merci pour vous tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2014, 14h15
  2. Problème performance sous requête MySQL
    Par Razielwar dans le forum Requêtes
    Réponses: 17
    Dernier message: 23/02/2012, 12h11
  3. Performances comparatives de MySQL
    Par pat06 dans le forum Requêtes
    Réponses: 0
    Dernier message: 22/01/2008, 18h12

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