我想用 Java 从 PostgreSQL 中读取一个大表的所有行。我正在 Java 软件中逐行处理。
默认情况下,JDBC PostgreSQL 驱动程序将所有行读入内存,这意味着我的程序内存不足。
documentation使用 st.setFetchSize(50);
讨论“基于游标获取结果”;我已经实现了它并且运行良好。
这种方法有什么缺点吗?如果没有,我会为我们所有的查询启用它,无论大小,还是一个坏主意?
最佳答案
好吧,如果您的提取大小为 50
,并且您得到了 1000
个结果,这将导致 20
次数据库往返.所以不,盲目启用它而不考虑正在运行的实际查询不是一个好主意。
一个更大的问题是为什么您的 ResultSets
太大以至于内存不足。您是否只加载了将要使用的数据而内存不足,或者是否存在设计不当的查询会返回过多的结果。
关于java - 在 Java PostgreSQL 中使用游标读取有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838643/