java - 在 Java PostgreSQL 中使用游标读取有什么缺点吗?

标签 java postgresql jdbc

我想用 Java 从 PostgreSQL 中读取一个大表的所有行。我正在 Java 软件中逐行处理。

默认情况下,JDBC PostgreSQL 驱动程序将所有行读入内存,这意味着我的程序内存不足。

documentation使用 st.setFetchSize(50); 讨论“基于游标获取结果”;我已经实现了它并且运行良好。

这种方法有什么缺点吗?如果没有,我会为我们所有的查询启用它,无论大小,还是一个坏主意?

最佳答案

好吧,如果您的提取大小为 50,并且您得到了 1000 个结果,这将导致 20 次数据库往返.所以不,盲目启用它而不考虑正在运行的实际查询不是一个好主意。

一个更大的问题是为什么您的 ResultSets 太大以至于内存不足。您是否只加载了将要使用的数据而内存不足,或者是否存在设计不当的查询会返回过多的结果。

关于java - 在 Java PostgreSQL 中使用游标读取有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838643/

相关文章:

java - 如何在java中测试sql查询是否返回true

java - 用于在 Oracle 中调用过程的 Jdbc 实用程序

postgresql - 开拓者 + 身份 : why there is an error?

postgresql - 如何在 PostgreSQL 中以区分大小写的方式对结果进行排序?

java - 矩阵求幂方法JAVA

java - 控制 ime_action_done 行为

sql - 使用新的外键 ID 复制数据的方法

java - 当 ehcache 从 1.5.0 升级到 2.8.3 时,web 应用程序无法在 tomcat 上启动

java - 使用正则表达式检查字符串是否至少有两个数字

java - 具有offer和flush的非阻塞并发队列