2010-06-05 8 views
0

J'ai une base de données mysql et une table de taille 74 GB. J'utilise actuellement la commande mysql pour charger ces données dans la base de données mysql. Il a fallu plus de 10 heures et toujours en cours d'exécution. Existe-t-il un moyen de charger les données dans la base de données mysql parallèlement. Une façon serait de diviser les données de la table en plusieurs fichiers, puis d'appeler load sur chacun de ces fichiers. Mais, c'est plus un hack. Y a-t-il quelque chose que les stackoverflowers suivent?Chargement des données dans la base de données mysql parallèlement

Merci.

Répondre

1

Assurez-vous que votre fichier source et votre base de données sont stockés sur des disques rapides et ne sont pas fragmentés. J'ai vu cela valant la peine de changer les moteurs de base de données pour les tables afin d'accélérer l'importation, puis de les changer après l'importation. Je voudrais essayer avec les moteurs INNODB et MyISAM pour voir si l'on est plus rapide.

Supprimez tous les index et ajoutez-les lorsque vous avez terminé. Vous devrez les réoptimiser de toute façon et il est beaucoup plus rapide de l'effectuer une seule fois. Lorsque vous les rajoutez, combinez-les en une seule instruction alter (c'est plus rapide). Exporter vos données dans un format de chargement en vrac pratique

Vous pouvez facilement obtenir 10 000 lignes de base de données ou plus dans une seule ligne de votre fichier.

PHPMyAdmin et MySQL Doc ont des paramètres que vous devez utiliser pour retarder autant que possible pour accélérer la lecture. Assurez-vous que rien d'autre n'utilise cette base de données et/ou cette table. Cela ne peut que ralentir les choses.

Assurez-vous que le codage fourni correspond au codage sur le DB.

Transférez le fichier sur le serveur de base de données et importez-le à partir de là (ne pas importer depuis un autre ordinateur sur le réseau).

Désactivez la réplication si vous le pouvez et si vous l'utilisez. Désactivez la journalisation si vous le pouvez et si vous l'utilisez. Les journaux binaires vont doubler la quantité de données que vous avez à écrire.

À la votre! Jacob

+1

En outre, la combinaison de vos lignes en insertions plus grandes réduit le texte et la sortie lors de l'importation. Vous ne voulez pas que votre importation crache beaucoup de sortie. Si vous avez le luxe, pensez à mettre autant de mémoire que possible et/ou à redémarrer MySQL avec des tampons plus grands pour rendre les choses plus faciles et plus rapides. – TheJacobTaylor

0

Les insertions parallèles dans une table (pour la vitesse) est un non-sens.
Et le fractionnement des tables n'est pas trop raisonnable.
Vous devez vous assurer qu'il n'y a pas d'index dans la table.
Et ce serait bien d'avoir un fichier source sur un disque/contrôleur séparé.

Questions connexes