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#

  1. #21
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    bon pour l'insertion sans procédure stockée c'est exactement la même chose. et pour le MysqlImport je vois pas d'options me permmettant de traiter mon fichier tel qu'il est !!
    Exemple d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0200000009MA0000010803SAM  05700112000001000000000411000006300000000258930000000005178600000051790000002589300000025890000025978447GLE25                           MCA18/06/200918/06/200923/06/20092406372    DSTE PRODUITS BITUMES ET PEROLIERS       178780212829189921000724178780212829189921000724                                                   00200039132492113

  2. #22
    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

    Effectivement, MysqlImport accepte le tab delimité, tu peux aussi essayer un load data infile
    Donc pour ce test, tu devrais préalablement decouper les champs de ton fichier inpiut en tab délimité

    Sincérement j'ai déja chargé des millions de record en Mysql et j'aurais abandonné depuis longtemps avec les performance dont tu parle, il y a certainement un bingz quelque part !

    Tu a des blob ou des text dans ta table ?

  3. #23
    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.

  4. #24
    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?

  5. #25
    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.

  6. #26
    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'

  7. #27
    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

  8. #28
    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.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

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

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