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 :

comment optimiser l'injection de 1000000 de requêtes ?


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut comment optimiser l'injection de 1000000 de requêtes ?
    bonjour à tous,

    j'ai un problème (sans blague?) lourd.

    J'ai un fichier de 250 Mo contenant un ensemble de requêtes (environ 1,5 millions) qui doivent être éxécutées.
    Son exécution qui se fait par la commande 'mysql...<dump toto.sql', se déroule trop longuement...
    si c'était une fois ça passerait mais ça doit se faire chaque nuit.

    Avec phpmyadmin, en faisant un refresh toutes les secondes, je constate qu'il y a 100 requêtes d'éxécutées à la seconde (car je vois le nombre de tuples augmenté de 100).

    je trouve cela extremement lent car la config matériel est tres bonne (serveur dédié à 2Go RAM , cpu xeon, sous linux debian).

    alors je me dit qu'il y a un problème quelque part.
    -soit ça vient du fichier dumpé qui est trop gros (mysql ramerait avec un dump de 250Mo ??)
    -soit ce sont mes requêtes qui sont trop longues. ces dernieres sont des simplettes (50% d'insert, 50% de update monotable à 1 seule condition)

    Donc je me pose des questions....
    En faisant un 'top' (sous linux), je m'aperçois que le process mysql ne dépasse pas 128M et prend 80% du CPU.
    y-a-t-il un goulot d'étranglement quelque part ?
    y-a-t-il un paramètre pour lui dire de prendre plus de 128Mo si ça peut le faire aller plus vite ?

    avez vous des idées ?

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Y a t'il des commits effectués de temps en temps ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut ok
    bonjour,

    non il n'y a aucun commit.
    pensez-vous qu'il fasse en rajouter pour que ça aille plus vite ?

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Ca me semble 1 bonne idée, pour autant que ce process de chargement l'autorise...

    Si ces requètes font partie d'une seule unité d'oeuvre, c'est impossible: toutes les mises à jour doivent être faites, ou aucune. Ces mises à jour sont à inclure dans la même transaction.

    Dans le cas contraire, il faut commiter de temps en temps afin de libérer les fichiers de journalisation. S'il n'y a pas de commit, le SGBD passe de +en + de temps à journaliser au détriment des mises à jour.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut ok
    bonjour,

    je viens de mettre des
    START TRANSACTION et des COMMIT toutes les 10 lignes;

    ça va un poil plus vite, il n'y a rien de flagrant.

    d'autre solution ....?

  6. #6
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Citation Envoyé par USA Mike Voir le message
    toutes les 10 lignes;
    Faut quand même pas exagérer....

    1000 me parait plus optimisé, mais peut-être qu'avec 2000 ou 5000 c'est mieux.
    Il n'y a pas de recette miracle pour ajuster ce nombre.

    Par contre, je ne suis pas sûr que le START TRANSACTION explicite soit une bonne chose.
    http://dev.mysql.com/doc/refman/5.0/...it-commit.html

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

Discussions similaires

  1. Comment optimiser ma requête?
    Par jam92400 dans le forum Développement
    Réponses: 5
    Dernier message: 29/09/2008, 10h25
  2. Comment optimiser requête SQL avec création Index
    Par schumi101 dans le forum SQL
    Réponses: 25
    Dernier message: 11/12/2007, 21h28
  3. Comment optimiser les temps de réponse d'une requête ?
    Par renaudjuif dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/02/2007, 14h12
  4. Comment optimiser une lourde requête avec des index
    Par Romalafrite dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/12/2006, 19h18
  5. [CF][C#] Comment optimiser mes requêtes avec SqlCE ?
    Par david71 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 20/01/2006, 14h48

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