Pourquoi les ensembles de résultats provenant de bases de données sont-ils si grands? Je reçois généralement des ensembles de résultats qui sont autour d'un million de lignes, dont chacune contient quelques chiffres, un varchar (75), un gros int ... peu importe. Probablement pas beaucoup plus de 100 octets par ligne. Et pourtant ça prend 6 Go! Est-ce un comportement typique? Ma pile est Postgres + JDBC + Spring - Je n'ai aucune expérience avec d'autres technologies.Pourquoi les ensembles de résultats sont-ils si grands?
Répondre
Nous allons avoir besoin de voir une requête pour voir pourquoi c'est si grand. Peut-être que vous ne rejoignez pas les tables correctement. (Je voudrais pouvoir commenter que ...)
Le java.sql.ResultSet
lui-même aura typiquement seulement quelques douzaines de rangées de données tamponnées à tout moment (configurable).
Maintenant, si vous chargez toutes ces lignes en mémoire en tant qu'objets Java, vous verrez de grandes quantités de mémoire utilisées. Un String
, par exemple, a deux octets par char, deux en-têtes d'objets, un décalage, deux longueurs et une valeur de hachage mise en cache. BigInteger
est similaire. Tout cela s'additionne. Utilisez un profileur.
Vous pourriez avoir plus de chance avec un jeu de lignes en cache. Cela ou ne chargez pas l'ensemble des résultats à la fois.
- 1. NHibernate - Diffusion de grands ensembles de résultats?
- 2. Mysql Problèmes de performances de l'opérateur NOT IN pour les grands ensembles de résultats?
- 3. Transactions SSIS - Grands ensembles d'enregistrements
- 4. PostgreSQL - Pourquoi certaines requêtes sur de grands ensembles de données sont-elles si incroyablement lentes?
- 5. Algorithme de tri pour les grands ensembles de données
- 6. Doctrine avec de grands ensembles de données
- 7. Traitement rapide de grands ensembles de données dans les graphiques
- 8. Gestion de grands ensembles de données de grille en JavaScript
- 9. Gestion de grands ensembles de données avec PHP/Drupal
- 10. Adobe Air/Flex filtrant de grands ensembles de données
- 11. Quelle solution représenter de grands résultats?
- 12. vs Embed lien sur de grands ensembles de MongoDB (rubis)
- 13. Génération de grands ensembles de fenêtres similaires dans WPF
- 14. Data Import/Export de grands ensembles de données avec .net
- 15. Tracer de grands ensembles de données en 3D avec WPF?
- 16. Gestion de grands ensembles d'images en utilisant Javascript sur MobileSafari
- 17. Gestion de grands ensembles de données (objet) avec PHP
- 18. Comparer de grands ensembles de nuages d'étiquettes pondérés?
- 19. Combine 2 ensembles de résultats dans SQL?
- 20. Fusion de deux ensembles de résultats statistiques
- 21. C++ Qt WordCount et grands ensembles de données
- 22. Procédure stockée renvoyer plusieurs ensembles de résultats
- 23. MySQL: différence de deux ensembles de résultats
- 24. Lucene .NET sous-ensembles de résultats
- 25. Comment combiner les ensembles de résultats d'une requête sql?
- 26. Comment joindre les résultats de deux ensembles différents dans LINQ?
- 27. Pagination sur de grands ensembles de données? - Abandonner count (*) après un certain temps
- 28. Exceptions de doublons entre deux ensembles de résultats
- 29. Inconvénients de MARS (ensembles de résultats actifs multiples)?
- 30. Comment puis-je améliorer ma requête de sélection pour stocker de grands ensembles de données versionnés?
Vous devrez être beaucoup plus précis avec toute votre question pour que quelqu'un puisse vous donner une bonne réponse. Que signifie "quoi"? "Probablement" pas beaucoup plus que 100B/row? Faites les calculs et posez votre question. –
Quelle est la raison pour laquelle vous copiez la totalité de la table DB dans la mémoire de Java? Il peut y avoir beaucoup de meilleures solutions pour ce que vous essayez d'accomplir. Par exemple, traitement en lots ou par ligne, ou affichage dans une vue paginée. – BalusC
Comment mesurez-vous que "ça prend 6 Go"? –