Maison >base de données >tutoriel mysql >Comment puis-je récupérer efficacement 90 millions d'enregistrements de base de données sans épuisement de la mémoire ?

Comment puis-je récupérer efficacement 90 millions d'enregistrements de base de données sans épuisement de la mémoire ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 04:42:12350parcourir

How Can I Efficiently Retrieve 90 Million Database Records Without Memory Exhaustion?

Utiliser ScrollableResults pour gérer de grands ensembles de données

Lorsque vous travaillez avec des ensembles de données volumineux, l'optimisation de la récupération des données devient cruciale. Dans ce scénario, l'utilisation de ScrollableResults d'Hibernate pour lire 90 millions d'enregistrements de base de données peut entraîner un épuisement de la mémoire en raison d'une tentative de chargement de l'intégralité de l'ensemble de données dans la RAM.

Pour éviter cela, l'approche recommandée consiste à utiliser les méthodes setFirstResult et setMaxResults. . Lors de l'itération des résultats, ces méthodes permettent de spécifier des parties spécifiques de l'ensemble de données à récupérer à la fois, évitant ainsi les goulots d'étranglement de la mémoire. Cependant, à mesure que le décalage augmente, les performances peuvent se dégrader.

Une solution alternative consiste à utiliser une approche de requête SQL personnalisée. En récupérant progressivement des sous-ensembles de données en fonction d'un décalage croissant, vous pouvez réduire la surcharge de mémoire. Le modèle de requête suivant illustre cette stratégie :

SELECT * 
FROM person 
WHERE id > <offset> 
AND <other_conditions> 
ORDER BY id asc  
LIMIT <batch_size>

Cette requête récupère un lot d'enregistrements avec un ID supérieur à un décalage spécifié, en filtrant en fonction de conditions supplémentaires. La nature incrémentielle de cette approche garantit une récupération efficace des données sans surcharger les ressources mémoire.

De plus, l'optimisation de la requête MySQL elle-même peut améliorer les performances. L'utilisation d'index appropriés et la garantie de conditions optimisées peuvent réduire considérablement les temps de traitement, faisant de cette méthode une solution viable pour gérer de grands ensembles 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