tul*_*ler 4 java postgresql spring jdbc spring-jdbc
我正在对PostgreSQL数据库中的表运行查询。该数据库位于远程计算机上。该表具有约30个使用postgresql 分区功能的子表。
该查询将返回一个很大的结果集,大约有180万行。
在我的代码中,我使用spring jdbc支持,即方法JdbcTemplate.query,但未调用我的RowCallbackHandler。
我最好的猜测是postgresql jdbc驱动程序(我使用版本8.3-603.jdbc4)在调用代码之前在内存中累积了结果。我以为fetchSize配置可以控制它,但是我尝试了一下,没有任何变化。我这样做是作为postgresql手册推荐的。
当我使用Oracle XE时,此查询工作正常。但是由于分区功能(Oracle XE中不提供该功能),我试图迁移到postgresql。
我的环境:
为了使用游标检索数据,您必须设置ResultSet.Type_TYPE_FORWARD_ONLY的ResultSet类型(默认值),并在设置获取大小的同时自动提交为false。这是您链接到的文档中引用的,但是没有明确提到您已执行这些步骤。
注意PostgreSQL的分区方案。它确实会对优化器造成非常可怕的影响,并且可能会导致本应避免的大量性能问题(取决于数据的具体情况)。无论如何,您的行只有180万行吗?只要有适当的索引,就没有理由只需要基于大小对其进行分区。
归档时间: |
|
查看次数: |
6463 次 |
最近记录: |