我得到了一个将巨大的表转换为自定义XML文件的任务。我将使用Java来完成这项工作。
如果我只是发出“ SELECT * FROM customer”,它可能会返回大量数据,这些数据最终会导致OOM。我想知道,有没有一种方法可以立即处理记录,一旦可用,就可以在sql检索过程中从内存中删除记录?
-–于2009年7月13日编辑
让我详细说明我的问题。我有1个数据库服务器和1个应用程序服务器。当我在应用程序中发出选择查询时,数据将从数据库服务器传播到应用程序服务器。
我相信(如果我错了,请纠正我)ResultSet将需要等待,直到接收到查询中的所有记录。即使将获取大小设置为4,对于1000条记录的表,我们仍然在应用程序服务器的堆内存中仍然有1000条记录,对吗?访存大小仅影响往返数据库服务器的往返次数。
我的问题是,如何在到达应用服务器后立即开始处理这4个(或任何数量)记录,并将其处置以释放应用服务器中的内存?
我认为您可以使用与此解决方案相同的解决方案。可滚动的结果集。