【发布时间】:2013-01-13 13:28:24
【问题描述】:
我将 SQL 查询的结果存储到 Arraylist<Hashtable<String, String>>,其中每个结果都存储在 Hashtable 中,然后每个结果都存储在列表中
如果结果少于 100.000 个,则它可以正常工作,如果我得到更多结果和 OutOfMemory 异常,则为 buf。
您对我如何改善这种情况有什么建议吗?
【问题讨论】:
-
您真的需要一次获得所有结果吗?很可能您可以存储有限的数量,并在您真正需要它们时通过另一个查询提取更多。否则通常只是浪费内存。
-
是的,我这样做了,因为我正在做的是从 JDBC 数据库表中获取信息并将其存储在 MongoDB 中,所以我需要存储所有信息
-
我很困惑——你为什么不能把它作为一个多步骤的过程呢?如果您实际上是在另一个数据库上使用 SELECT 查询和 INSERT 查询,那么这是将其分开的完美候选者。无论如何,除非 JDBC 数据库表永远不会增长,否则您将不可避免地不得不这样做。即使您可以稍微提高存储效率,字符串也很大。你最终会耗尽内存。
-
你能在 WHILE 循环中从记录集中一一读取记录并在该循环内保存到 MongoDB 中吗?
-
你完全正确,克里斯。我没有想到那种情况。
标签: java sql arraylist hashtable