Oracle
 sql >> Base de données >  >> RDS >> Oracle

hibernate.jdbc.fetch_size ou @QueryHints(@javax.persistence.QueryHint(name=org.hibernate.fetchSize, value=10)) ne fonctionne pas

La taille d'extraction par défaut dans oracle est déjà de 10 enregistrements, il est donc étrange que vous rencontriez des problèmes de mémoire lorsque vous ajoutez cet indice. Surtout si 100000 ne pose pas de problème.

Certaines choses que je ferais pour identifier le problème et fournir une solution :

Testez votre code Barebone

Testez le code responsable de vos requêtes (probablement votre DAO) avec une surcharge minimale. Je soupçonne que l'exception de mémoire insuffisante est plus susceptible d'être due au traitement des résultats de la base de données et non à la requête réelle + fetchsize.

Modifiez donc temporairement votre code pour exécuter simplement la requête, mais ne faites aucun mappage ou autre traitement dessus. Assurez-vous simplement que c'est fait.

Si cela semble "résoudre" votre problème, il se peut que vous en ayez effectué sur les données que vous recevez qui inondent votre mémoire.

Mettre à jour vos dépendances

Si vous utilisez maven (ou gradle, ou tout autre outil de construction), je suggérerais de mettre à jour toute mise à jour au moins vers la dernière version mineure (par exemple 1.2.3 -> 1.2.9), cela ne devrait rien casser mais pourrait corriger quelques bugs.

N'allez pas au hasard avec les tailles de récupération

Découvrez ces réponses pour décider quelle pourrait être une bonne taille de récupération pour votre situation.