我的程序是要把10w数据放进集合中,然后再更新这些数据出现了内存溢出。我不加大虚拟内存(我式了没有用)。我通过优化程序,或者数有存储过程,我想把处理业务写到oracle中,不在程序中处理。请问该怎么写存储过程?程序只要调用就可以了。10w的数据要读出来怎么保存呢?在程序中可以放到集合中.能给个例子不胜感激。

解决方案 »

  1.   

    10W条普通的数据处理 对数据库来说不算什么啊。写程序处理?你需要参数?不需要参数就用数据库job来实现吧。你在过程里先查询这10W数据然后根据你需要的条件去更新 最好分批提交 每1W条记录的更新提交一次。
    然后用job来定时执行这个过程
      

  2.   

    10W的数据不是很大,再前端可能会出问题,你要怎么处理,用ORACLE处理完再送到前端,可以?还是分批次读取
      

  3.   

    你的程序是.net或者java这类有虚拟机的吗?
    还是C这类自己管理内存的?
    如果是前者,你大概需要调整虚拟机的设置。
    10W数据也不算大,一条1K计算,大概100M,这个数说大不大,说小如果并发的话也不小了。
      

  4.   

    你这里的内存溢出,是不是自己的程序的内存溢出呀。这里不是数度的问题,只是内存大小的问题,你的10W数据需要100M的空间,但是你的程序分配的内存只有50M,当然就溢出了。如果是java开发的程序,调整jvm参数。
      

  5.   

    不要使用 select * 
    需要哪个字段就查出哪个字段。还有,这类业务建议使用存储过程实现。
      

  6.   

    jvm参数我调了,不行,我用的就是job定时触发。 分批提交和存储过程实现。存储过程谁有给小弟一些代码。类似的代码。
      

  7.   

    修改一下oracle的缓存然后分段执行