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 :

requetes trop longue


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 89
    Par défaut requetes trop longue
    Bonjour,

    Je parse un fichier générant des insert dans une base.
    Le nombre d'enregistrement générer est tres important (~150000 insert) et bien sur mon script par en timeout.
    Le seul moyen que j'ai trouvé est d'augmenter la valeur du time out et de séparer les taches (un serveur web et un serveur bdd). Mon problème est que malgré cela, il arrive encore de tombé en timeout et augmenter encore cette variable me dérange un peu (720 en test et 360 en prod).

    Il faut également savoir qu'avant l'insert, je suis obliger de faire plusieurs select pour récupérer et/ou vérifier les informations que je vais injecter. Evidemment, cela n'arrange rien...

    Une idée lumineuse? une solution miracle?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu fais tous les contrôles que tu veux sur le fichier et les corrections éventuelles puis tu utilises une requête LOAD DATA INFILE
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Cinephil > Surtout pas !
    Ce sera beaucoup plus efficace de charger toutes les données en base dans une table dédiée, puis de faire les contrôles avec une requête par contrôle, puis d'insérer ce qui est valide, toujours en ensembliste.

    C'est ainsi que fonctionne les alimentations de datawarehouse !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    J'avais cru comprendre qu'il partait de données en fichier texte mais peut-être que mon rhume empêche l'oxygénation correcte de mes neurones !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    C'est ce que je dis !

    On monte le fichier texte dans une table dédiée, sans contrôle avec un loader par exemple - je ne sais pas si ça existe sous MySQL.

    Puis on fait le select avec les jointures qui vont bien pour créer l'ordre d'insertion.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 89
    Par défaut
    Hello,

    Je pars d'un fichier Excel et je dois travailler dessus dans son format natif.
    Si le script ne fait que lire le fichier, il s'exécute avec une vitesse satisfaisante mais des qu'intervient l'interaction avec la BDD, c'est la mort (du serveur).

    J'ai penser a l'injection brut et direct dans une table dédié mais après essais, ce n'est pas très concluent.
    Ou alors je m'y prend mal. Peu être qu'en vous expliquant la structure du fichier, vous y verrez plus clair que moi.
    En colonne, j'ai des articles et les infos sur cette article. Il n'y a de limite au nombre d'articles que le nombre de colonne de Excel.
    En ligne j'ai des noms,adresse etc... De même, il n'y a de limite que le nombre de lignes que Excel permets.
    A l'intersection de ces 2 infos, j'ai un nombre (ou pas) qui m'indique combien de cette articles, une personne désire.
    je dois injecter les articles, les destinataires et leurs demandes dans ma base.
    Je ne vois pas comment injecter ça autrement que dans 3 tables différentes et pour ne pas perdre le fil, attribuer les index nécessaires dans les tables adéquat ce qui reviens a mon injection final.

    Est ce que travailler avec des procédures stockées plutôt que des requêtes du serveur web pourrais me faire gagner encore quelque précieuse millisecondes ?
    Au niveau config du serveur mysql, est ce que je peu 'joué' avec quelque variable pour le gonfler un peu ?

    Merci de vous pencher sur mon problème.

    A+

Discussions similaires

  1. requete trop longue?
    Par samplaid dans le forum Débuter
    Réponses: 1
    Dernier message: 11/08/2008, 09h53
  2. requete trop longue
    Par realkilla dans le forum WinDev
    Réponses: 6
    Dernier message: 05/12/2007, 14h33
  3. pb requete trop longue
    Par Leimi dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/07/2006, 16h16
  4. requetes trop longues
    Par caro_tpl dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/07/2006, 14h27
  5. Requete trop longue à exécuter
    Par fguilbert dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/06/2006, 10h33

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