Maison >base de données >tutoriel mysql >Comment puis-je optimiser MySQL LOAD DATA INFILE pour des importations de données plus rapides ?

Comment puis-je optimiser MySQL LOAD DATA INFILE pour des importations de données plus rapides ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-08 04:59:02924parcourir

How Can I Optimize MySQL LOAD DATA INFILE for Faster Data Imports?

Optimisation de MySQL LOAD DATA INFILE pour une importation rapide des données

L'importation d'ensembles de données massifs dans MySQL à l'aide de LOAD DATA INFILE peut prendre beaucoup de temps, en particulier lorsque création d'index après l'importation. Cet article explore diverses techniques pour accélérer le processus et résoudre le problème des requêtes terminées qui continuent de s'exécuter dans la base de données.

Accélération de LOAD DATA INFILE

Pour les tables InnoDB, pensez les conseils d'optimisation suivants :

  • Triez le fichier CSV dans l'ordre des clés primaires : InnoDB utilise des clés primaires en cluster, donc le tri du fichier accélérera considérablement le processus de chargement.
  • Tronquer la table avant le chargement : Supprimez les données existantes pour minimiser le temps passé en lecture et en écriture.
  • Désactivez la validation automatique : Définissez autocommit=0 pour retarder la validation de la transaction. jusqu'à la fin de l'importation complète, réduisant ainsi le nombre de validations et améliorant les performances.
  • Désactiver les vérifications : Désactivez temporairement les vérifications de clés uniques et étrangères en utilisant set unique_checks=0 et set Foreign_key_checks=0.
  • Désactivez la journalisation binaire : Suspendez la journalisation binaire avec set sql_log_bin=0 pour éliminer la surcharge associée à l'écriture des journaux.
  • Divisez le fichier CSV en morceaux : Divisez le Fichier CSV en segments plus petits pour un chargement plus rapide.

Terminaison des requêtes

Pour terminer une requête lente sans redémarrer MySQL, essayez ce qui suit :

  • Commande KILL : Émettez la commande KILL {query_id} pour terminer la requête spécifique.
  • Fermer la connexion client : Fermer de force la fenêtre du terminal où la requête a été exécuté arrêtera également la requête en cours d'exécution. Cependant, cela peut entraîner une corruption des données ou des incohérences.

En appliquant ces optimisations, vous pouvez améliorer considérablement les performances de LOAD DATA INFILE et rationaliser le processus d'importation de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn