web-dev-qa-db-fra.com

Pourquoi importer un fichier de 12 Go .SQL prend-il plus de 36 heures?

J'attends maintenant 36 heures pour qu'un fichier de 12 Go .SQL soit importé avec un simple type site.sql | mysql commande. Je peux voir le ibdata1 augmente encore, actuellement près de 40 Go.

Compte tenu des déclencheurs et des procédures stockées sont à la fin du .sql, je pense que MySQL devrait ajouter des données et des index clés.

Le site.sql a été généré à l'aide de cette commande à partir d'un autre serveur:

mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers

Qu'est ce qui prend si longtemps?

16
servermanfail

Essaye ça:

$ ps -ef|grep [m]ysql

Identifier l'ID de processus alors

$ strace -cp <pid>

Laissez-le 10 secondes ou une minute alors ^C. Cela vous dira où le processus dépend de son temps, par ex. Cela pourrait simplement attendre le disque si vous avez vu read et write dominent.

24
Gaius

Avez-vous des tables innovées avec une clé primaire

  1. contenant plusieurs colonnes?
  2. avoir un large varchar?
  3. et beaucoup d'index non uniques?
  4. un ou plusieurs index non uniques qui ont une clé large?

Toute de ces conditions peut probablement provoquer des nœuds de gros BTREE dans vos indices d'avoir très peu de feuilles dans chaque nœud BTRee. La clé de cluster dans la clé principale est également jointe à chaque entrée de clé non unique dans les clés non clusterées.

Une autre considération: la somme des pages de données InnoDB est-elle significativement inférieure aux pages d'index InnoDB?

Vous pouvez le savoir avec cette requête (en MB):

SELECT SUM(data_length)/POWER(1024,2) InnoDBData,
SUM(index_length)/POWER(1024,2) InnoDBIndexes
FROM information_schema.tables WHERE engine='InnoDB';

Considérations supplémentaires: Avez-vous une journalisation binaire activée dans le serveur DB que vous chargez? Si vous êtes, veuillez le faire sur le serveur que vous chargez:

mysql -h... -u... -p... -A -e"SET sql_log_bin=0; source site.sql"

J'espère que ça aide !!!

7
RolandoMySQLDBA

Êtes-vous sûr que les tables où vous lisez sont sans déclencheurs et index et contraintes? Sur quel matériel et quel système d'exploitation fonctionnez-vous? Comment votre stockage est-il configuré?

Je suis plus familier avec Oracle mais 12g importation sur des tables sans déclencheurs, index et contraintes devraient facilement aller avec 200 Go/h. Un seul déclencheur peut rendre le processus à un escargot, en fonction de ce que ces déclencheurs ...

J'espère que ça aide

6
ik_zelf