Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2007, 11h50   #1
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
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 :
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 :
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
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 12h46   #2
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Maatkit (anciennement MySQL Toolkit) a un outil pour dumper/recharger en parallèle : http://maatkit.sourceforge.net/.
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 14h10   #3
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
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
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 14h44   #4
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
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...
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 15h28   #5
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
Citation:
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.
Citation:
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.
Citation:
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 !
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h18.


 
 
 
 
Partenaires

Hébergement Web