【发布时间】:2010-10-24 01:11:09
【问题描述】:
我正在对 postgresql 数据库中的表运行查询。数据库位于远程计算机上。该表有大约 30 个使用 postgresql partitioning capability 的子表。
查询将返回一个大的结果集,大约 180 万行。
在我的代码中,我使用 spring jdbc 支持,方法 JdbcTemplate.query,但我的 RowCallbackHandler 没有被调用。
我的最佳猜测是 postgresql jdbc 驱动程序(我使用版本 8.3-603.jdbc4)在调用我的代码之前将结果累积到内存中。我以为fetchSize configuration 可以控制这个,但我试过了,没有任何改变。我这样做是作为 postgresql 手册recomended。
当我使用 Oracle XE 时,此查询运行良好。但是我正在尝试迁移到 postgresql,因为分区功能在 Oracle XE 中不可用。
我的环境:
- PostgreSQL 8.3
- Windows Server 2008 企业版 64 位
- JRE 1.6 64 位
- 春季 2.5.6
- Postgresql JDBC 驱动程序 8.3-603
【问题讨论】:
-
您的电话回了吗?如果没有,您是否尝试过 ctrl-\(Windows 的 ctrl-break)、jstack、jconsole、visualvm 或类似工具来查找线程停止的位置?
-
它在驱动程序内部处理查询。
标签: java spring postgresql jdbc spring-jdbc