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?
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.
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.