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

Outils MySQL Discussion :

Optimiser le load d'un dump sur une machine multi-processeur


Sujet :

Outils MySQL

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut Optimiser le load d'un dump sur une machine multi-processeur
    Bonjour

    J'ai un serveur de backup (bipro dual core donc 4 coeurs, windows server 2003) sur lequel je load tous les soirs des bases de taille assez importantes.
    Pour ça, je lance la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start mysql --uuser-ppass -e "source D:\Backup DB\base1.sql"
    start mysql --uuser-ppass -e "source D:\Backup DB\base2.sql"
    start mysql --uuser-ppass -e "source D:\Backup DB\base3.sql"
    pour lancer les imports de 3 bases en parallèle. Ca marche très bien, je gagne beaucoup de temps et mon indicateur de charge est de 80%. Cependant, j'ai une de ces bases qui est nettement plus grosse que les autres (15 Go contre 2 pour les autres). Ce qui fait qu'à la fin, mon indicateur de charge ne dépasse pas 25%, le chargement n'étant pris en charge que par un seul coeur.
    Est-il possible d'optimiser la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start mysql --uuser-ppass -e "source D:\Backup DB\base3.sql
    pour qu'elle tourne sur plusieurs processeurs ou au moins plusieurs coeurs ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Maatkit (anciennement MySQL Toolkit) a un outil pour dumper/recharger en parallèle : http://maatkit.sourceforge.net/.

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Merci, ça a l'air pas mal, mais c'est en perl, et ça ne tournera pas sur mon serveur.
    Enfin, je vois comment ça fonctionne, c'est de la pseudo-parallèlisation : j'ai l'impression qu'il dump/load les tables une par une, mais si une table est énorme, ça ne fera rien gagner.

    En fait, ce que je cherche est une version multiprocesseur du mysqld et du client

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par guidav Voir le message
    Merci, ça a l'air pas mal, mais c'est en perl, et ça ne tournera pas sur mon serveur.
    Ca devrait encore pourvoir s'arranger avec une version de perl pour windows. Il doit même y avoir moyen de pondre un ".exe" (reste à voir si ça marche avec Maatkit).

    Citation Envoyé par guidav Voir le message
    Enfin, je vois comment ça fonctionne, c'est de la pseudo-parallèlisation : j'ai l'impression qu'il dump/load les tables une par une, mais si une table est énorme, ça ne fera rien gagner.
    http://maatkit.sourceforge.net/doc/m...mp.html#chunks : pas que j'ai essayé mais ça m'a l'air prometteur. Par contre je ne sais pas si le gain peut être aussi important sur une unique table qu'en répartissant sur plusieurs...

    Citation Envoyé par guidav Voir le message
    En fait, ce que je cherche est une version multiprocesseur du mysqld et du client
    mysqld est multiprocesseur, mais une requête ne tourne que sur un thread et je doute que ce soit près de changer. Et le client est pour ainsi dire par définition monothread.


    Sinon il faut saucissonner les INSERT pour la table en question à la main et ça va être tout de suite moins drôle. Mais arrivé à ce point là je ne sais pas si ça en vaut la peine, a moins que quelqu'un ait une meilleure idée...

  5. #5
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Ca devrait encore pourvoir s'arranger avec une version de perl pour windows. Il doit même y avoir moyen de pondre un ".exe" (reste à voir si ça marche avec Maatkit).
    Je ne suis pas certain de pouvoir faire ça, je vais foir avec mon admin.
    mysqld est multiprocesseur, mais une requête ne tourne que sur un thread et je doute que ce soit près de changer. Et le client est pour ainsi dire par définition monothread.
    Merci de confirmer mes craintes, je m'en doutais un peu. Tant pis.
    Sinon il faut saucissonner les INSERT pour la table en question à la main et ça va être tout de suite moins drôle. Mais arrivé à ce point là je ne sais pas si ça en vaut la peine, a moins que quelqu'un ait une meilleure idée...
    Je pense aussi que le temps de parser le fichier sql prendra plus de temps que le load ! A moins de faire une dll, mais là on oublie.

    Merci pour toutes ces réponses quand même !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/02/2013, 13h39
  2. dump sur une base access au format CSV
    Par Mumak dans le forum Access
    Réponses: 1
    Dernier message: 07/03/2008, 18h58
  3. Savoir quel OS est installer sur une machine
    Par batmat86 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 16h16
  4. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41
  5. [Débutant] Connexion sur une machine distante protégée
    Par arthix dans le forum Développement
    Réponses: 3
    Dernier message: 28/08/2003, 09h46

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