"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment diffuser de grands ensembles de résultats MySQL au printemps pour éviter OutOfMemoryError ?

Comment diffuser de grands ensembles de résultats MySQL au printemps pour éviter OutOfMemoryError ?

Publié le 2024-12-22
Parcourir:941

How to Stream Large MySQL Result Sets in Spring to Avoid OutOfMemoryError?

Streaming de grands ensembles de résultats avec MySQL

Lorsque vous traitez des tables MySQL étendues dans une application Spring, une exception OutOfMemoryException peut survenir lorsque le pilote s'efforce de charger la table entière en mémoire. Définition de Statement.setFetchSize(Integer.MIN_VALUE); peut ne pas suffire, car cela fournit simplement une indication sur le pilote JDBC.

Pour activer le streaming des jeux de résultats dans le pilote MySQL JDBC, une approche plus complète est nécessaire :

  1. Créer une instance de déclaration :

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. Définir la récupération Taille :

    stmt.setFetchSize(Integer.MIN_VALUE);

Précautions :

Cette méthode comporte certaines mises en garde :

  • Toutes les lignes du jeu de résultats doivent être lues (ou le jeu de résultats fermé) avant d'émettre d'autres requêtes sur le connexion. Ne pas le faire entraînera des exceptions.
  • Au sein d'une transaction, les verrous ne sont libérés qu'une fois la transaction terminée, ce qui implique que l'instruction doit d'abord terminer son exécution.
  • Si l'erreur OutOfMemoryError persiste, le problème sous-jacent persiste. peut résider dans une utilisation excessive de la mémoire dans le code Java. Cela nécessite un traitement immédiat des données au lieu d'un stockage.

Informations supplémentaires :

Pour d'autres stratégies sur la gestion de grands ensembles de résultats, considérez cette question connexe et sa réponse : [lien vers une question similaire].

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3