Maison  >  Article  >  base de données  >  Comment puis-je optimiser les performances de MySQL LOAD DATA INFILE pour les importations de données volumineuses ?

Comment puis-je optimiser les performances de MySQL LOAD DATA INFILE pour les importations de données volumineuses ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 19:01:02142parcourir

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

Optimisation des performances MySQL LOAD DATA INFILE

Lors de l'importation de grandes quantités de données dans des tables MySQL à l'aide de la commande LOAD DATA INFILE, les performances peuvent être un préoccupation importante. L'un des défis qui se pose est le compromis entre l'importation sans clés, qui peut entraîner un chargement de données plus rapide mais une création de clé plus lente, et l'importation avec des clés, qui ralentit le processus d'importation. Voici quelques stratégies pour accélérer l'importation :

Ordre des données par clé primaire :

Avant de charger les données, triez votre fichier CSV selon l'ordre de la clé primaire du table cible. Ceci est particulièrement avantageux lors de l'utilisation d'InnoDB, car il utilise des clés primaires en cluster, ce qui signifie que les données seront chargées plus rapidement une fois triées.

Désactiver les contraintes :

Désactiver temporairement les contraintes uniques et étrangères contraintes clés (set unique_checks = 0; set Foreign_key_checks = 0;) pour améliorer la vitesse d'importation. Une fois les données chargées, vous pouvez réactiver ces contraintes (set unique_checks = 1; set Foreign_key_checks = 1;).

Désactiver la journalisation binaire :

Désactiver la journalisation binaire :

Désactiver la journalisation binaire (set sql_log_bin=0;) peut également augmenter les délais d'importation. Lorsqu'il est activé, MySQL enregistre toutes les requêtes d'écriture dans le journal binaire à des fins de réplication. Sa désactivation libère des ressources qui peuvent être utilisées pour le chargement des données.

Tronquer la table :

Avant de charger les données, tronquez la table cible pour supprimer toutes les lignes existantes (tronquer < ;tableau>;). Cela garantit que les données que vous importez sont les seules données du tableau.

Diviser le fichier CSV :

Si votre fichier CSV est très volumineux, envisagez de le diviser en des morceaux plus petits. Cela permet à MySQL de charger les données par lots plus petits, réduisant ainsi le temps requis pour chaque opération de chargement.

Terminer les requêtes lentes :

Pour terminer une requête lente sans redémarrer MySQL , utilisez la commande KILL QUERY. Cette commande peut être exécutée à partir de la ligne de commande MySQL ou à l'aide d'un outil comme phpMyAdmin.

    Conseils supplémentaires :
  • Utilisez l'option REPLACE ou INSERT IGNORE pour éviter erreurs de clé en double.
  • Utilisez le mot-clé LOCAL pour empêcher la création de tables temporaires à chaque importation.
Utilisez un serveur hautes performances avec suffisamment de ressources RAM et CPU.

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