我正在对postgresql数据库中的表运行查询。数据库位于远程机器上。该表有大约30个使用postgresql partitioning capability的子表。postgresql查询上的大型结果集
该查询将返回一个大型的结果集,大约有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或类似的找到线程停止的地方? – 2009-05-05 22:08:40
它正在处理驱动程序内部的查询。 – tuler 2009-05-06 00:25:30
另请参见https://stackoverflow.com/a/47517489/32453 – rogerdpack 2017-11-27 19:56:36