为什么结果集如此之大?

时间:2010-12-14 00:36:01

标签: java spring postgresql jdbc

为什么数据库的结果集如此之大?我通常会得到大约一百万行的结果集,每行包含几个数字,一个varchar(75),一个大的int ......无论如何。可能每行不超过100个字节。然而它需要6 GB!这是典型的行为吗?我的堆栈是Postgres + JDBC + Spring - 我对其他技术没有任何经验。

2 个答案:

答案 0 :(得分:2)

java.sql.ResultSet本身通常只会随时缓存几十行数据(可配置)。

现在,如果您将所有这些行作为Java对象加载到内存中,那么您将看到使用了大量内存。例如,String每个字符有两个字节,两个对象标题,一个偏移量,两个长度和一个缓存的哈希值。 BigInteger类似。这一切都加起来。使用分析器。

对于缓存的行集,您可能会有更好的运气。那或者不要一次加载整个结果集。

答案 1 :(得分:1)

我们需要查看查询,看看它为何如此之大。也许你没有正确地加入赌桌。 (我希望我能评论一下......)