我正在尝试从我的表中获取数百万数据,并且我正在使用 Java Play Framework 2.0,但存在一些问题。当我对查询设置限制时,它运行良好,如果我要求所有数据,它会抛出错误,例如
Exception in thread "pool-3-thread-1" java.lang.OutOfMemoryError: Java heap space
有人能帮我一下吗?
我正在尝试从我的表中获取数百万数据,并且我正在使用 Java Play Framework 2.0,但存在一些问题。当我对查询设置限制时,它运行良好,如果我要求所有数据,它会抛出错误,例如
Exception in thread "pool-3-thread-1" java.lang.OutOfMemoryError: Java heap space
有人能帮我一下吗?
从手册中引用:
默认情况下,驱动程序一次收集查询的所有结果。这对于大型数据集可能很不方便,因此 JDBC 驱动程序提供了一种将 ResultSet 基于数据库游标并仅获取少量行的方法
(强调我的)
该手册详细描述了如何配置驱动程序以不将所有内容加载到内存中:http:
//jdbc.postgresql.org/documentation/head/query.html#query-with-cursor
java.sql.Statement.setFetchSize 可能会有所帮助,具体取决于您的数据库。我不熟悉 Play Framework,但您可以使用 JDBC 设置获取大小。