Maison >base de données >tutoriel mysql >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 ?

DDD
DDDoriginal
2024-11-30 01:20:10635parcourir

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

Diffusion en continu 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 la diffusion en continu des ensembles de résultats dans le pilote MySQL JDBC, une approche plus complète est nécessaire :

  1. Créer une déclaration Instance :

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

    stmt.setFetchSize(Integer.MIN_VALUE);

Précautions :

Cette méthode a certains mises en garde :

  • Toutes les lignes de l'ensemble de résultats doivent être lues (ou l'ensemble de résultats fermé) avant d'émettre d'autres requêtes sur la 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 est dû au problème sous-jacent. 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].

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