Maison > base de données > tutoriel mysql > le corps du texte

Comment optimiser les requêtes MySQL pour les retours de données volumineux ?

Linda Hamilton
Libérer: 2024-11-10 06:19:02
original
1025 Les gens l'ont consulté

How to Optimize MySQL Queries for Large Data Returns?

Paramètres MySQL optimaux pour les requêtes fournissant de grandes quantités de données

Question :

Comment puis-je optimiser les requêtes MySQL qui renvoient un grand nombre d'enregistrements (environ 50 millions dans ce cas), ce qui entraîne des temps d'exécution prolongés ?

Réponse :

Réglez MySQL pour votre moteur

  • Vérifiez la configuration du serveur et ajustez les paramètres en conséquence.
  • Familiarisez-vous avec des ressources telles que :

    • http://www.mysqlperformanceblog. com/
    • http://forge.mysql.com/wiki/ServerVariables
  • Envisagez d'utiliser une procédure stockée pour traiter les données côté serveur, réduisant ainsi le besoin de transfert de grands ensembles de données à la couche application.

Envisagez d'utiliser le moteur InnoDB

  • InnoDB propose des index clusterisés qui améliorent potentiellement les performances en stockant les données de ligne sur le même page comme recherche d'index.
  • Créez une clé primaire composite incluant les champs d'index pour optimiser l'accès. Notez que vous ne pouvez pas utiliser AUTO_INCREMENT avec des clés composites dans InnoDB.

Divide and Conquer

  • Renvoyer les données par lots à l'aide d'une procédure stockée qui vous permet pour spécifier une plage de valeurs pour un champ clé (par exemple, df_low et df_high).
  • Dans la couche d'application, utilisez le multithreading ou une boucle pour récupérer et traiter les données en morceaux gérables.

Optimisations supplémentaires

En plus des suggestions ci-dessus, explorez ces ressources pour d'autres améliorations des performances :

  • http://www.jasny .net/?p=36
  • http://jpipes.com/presentations/perf_tuning_best_practices.pdf

Exemple spécifique utilisant une procédure stockée InnoDB

L'exemple suivant montre comment améliorer les performances à l'aide d'une procédure stockée InnoDB et d'une application C# multithread :

  1. Créez une procédure stockée pour récupérer des données par lots :

    create procedure list_results_innodb(
        in p_rc tinyint unsigned,
        in p_df_low int unsigned,
        in p_df_high int unsigned
    )
    begin
        select rc, df, id from results_innodb where rc = p_rc and df between p_df_low and p_df_high;
    end
    Copier après la connexion
  2. Développez une application C# qui appelle la procédure stockée et ajoute les résultats à une collection pour le traitement post-requête.
  3. Utilisez plusieurs threads pour récupérer simultanément différents lots de données.

En suivant ces étapes, vous pouvez réduire considérablement le temps d'exécution des requêtes de données volumineuses dans MySQL.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal