回答

收藏

从大表中检索所有记录时,如何避免OOM(内存不足)错误?

技术问答 技术问答 129 人阅读 | 0 人回复 | 2023-09-13

我得到了一个将巨大的表转换为自定义XML文件的任务。我将使用Java来完成这项工作。+ M* p8 y; O+ J  _
如果我只是发出“ SELECT * FROM
9 t) w- V+ t: Dcustomer”,它可能会返回大量数据,这些数据最终会导致OOM。我想知道,有没有一种方法可以立即处理记录,一旦可用,就可以在sql检索过程中从内存中删除记录?0 q3 Y' E. A. y' G. |; Q
-–于2009年7月13日编辑# Q4 Q' n( ^" J3 a+ B3 j0 z
让我详细说明我的问题。我有1个数据库服务器和1个应用程序服务器。当我在应用程序中发出选择查询时,数据将从数据库服务器传播到应用程序服务器。- y& \7 P0 r- Z% f) D& a
我相信(如果我错了,请纠正我)ResultSet将需要等待,直到接收到查询中的所有记录。即使将获取大小设置为4,对于1000条记录的表,我们仍然在应用程序服务器的堆内存中仍然有1000条记录,对吗?访存大小仅影响往返数据库服务器的往返次数。, u, o+ a+ S1 t4 A
我的问题是,如何在到达应用服务器后立即开始处理这4个(或任何数量)记录,并将其处置以释放应用服务器中的内存?
  X7 V' v8 \! j8 i               
! ^! @0 K3 K6 I! N  E7 e* @解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则