web-dev-qa-db-fra.com

Pourquoi l'importation de SQL est-elle si lente?

J'ai un fichier SQL contenant deux tables avec environ 600 000 lignes au total. Hier, j'ai essayé d'importer le fichier dans ma base de données MySQL sur Fedora 16, et il a fallu plus de 2 heures pour importer le fichier. Sur mon PC Windows, cela a pris 7 minutes. Mes machines Linux et Windows ont exactement le même matériel. Un couple de mes amis a également essayé et ils ont vécu une expérience similaire.

La commande que nous utilisions était: mysql -u root database_name < sql_file.sql.

Pourquoi y a-t-il une telle différence de vitesse?

36
Lars Steen

Je parie que Fedora 16 respecte la sémantique de transaction/synchronisation et Windows ne l'est pas. Si vous faites le calcul, 600 000 mises à jour en deux heures correspondent à 5 000 par minute. C'est le même ordre de grandeur que le taux de rotation d'un disque.

Vous pouvez essayer d'ajouter SET autocommit=0; au début de votre fichier d'importation et COMMIT; jusqu'à la fin. Voir cette page pour plus d'informations.

68
David Schwartz

Pourquoi n'exportez-vous pas le fichier .sql en tant que BULK INSERT option et l'importer, essayez ces options tout en prenant une sauvegarde en utilisant mysqldump

--extended-insert: utiliser des instructions d'insertion sur plusieurs lignes

--quick: ne pas mettre en mémoire tampon les données de ligne, bon si les tables sont grandes

Remarque: Assurez-vous que vous devez augmenter la valeur de max_allowed_packet = 32M ou plus dans le fichier my.cnf avant de générer le fichier .sql.

4
Mahesh Patil