为什么数据库的结果集如此之大?我通常会得到大约一百万行的结果集,每行包含几个数字,一个varchar(75),一个大的int ......无论如何。可能每行不超过100个字节。然而它需要6 GB!这是典型的行为吗?我的堆栈是Postgres + JDBC + Spring - 我对其他技术没有任何经验。
答案 0 :(得分:2)
java.sql.ResultSet
本身通常只会随时缓存几十行数据(可配置)。
现在,如果您将所有这些行作为Java对象加载到内存中,那么您将看到使用了大量内存。例如,String
每个字符有两个字节,两个对象标题,一个偏移量,两个长度和一个缓存的哈希值。 BigInteger
类似。这一切都加起来。使用分析器。
对于缓存的行集,您可能会有更好的运气。那或者不要一次加载整个结果集。
答案 1 :(得分:1)
我们需要查看查询,看看它为何如此之大。也许你没有正确地加入赌桌。 (我希望我能评论一下......)