读取oracle数据库促成内存占用过大,有办法释放没有
读取oracle数据库造成内存占用过大,有办法释放没有?
orace中有一个表A,其中数据有好几个G左右;
现在需要将这个表的所有数据全部读取出来,转存到一个文件中;
使用select * from a;这个语句,会在读取到几十万条记录的时候,内存占用明显过大;
其实,我的处理就是
select查询出来;
for(){
读取一条;
处理;
取下一条;
}
我的理解数据select首次会取几十条出来,然后供处理,在读完取出的条数,再读数据库取出一些;有没有什么方法,在我读取后面的记录时,将前面的从进程内存中释放掉?
(eg:在我读取到100万条记录时,将前90万条所占用的内存释放掉。即都不在内存中)
谢谢。
------解决方案--------------------
oracle分页查询:参看
http://blog.****.net/sfdev/article/details/2801712
------解决方案--------------------
Use Cursor
orace中有一个表A,其中数据有好几个G左右;
现在需要将这个表的所有数据全部读取出来,转存到一个文件中;
使用select * from a;这个语句,会在读取到几十万条记录的时候,内存占用明显过大;
其实,我的处理就是
select查询出来;
for(){
读取一条;
处理;
取下一条;
}
我的理解数据select首次会取几十条出来,然后供处理,在读完取出的条数,再读数据库取出一些;有没有什么方法,在我读取后面的记录时,将前面的从进程内存中释放掉?
(eg:在我读取到100万条记录时,将前90万条所占用的内存释放掉。即都不在内存中)
谢谢。
------解决方案--------------------
oracle分页查询:参看
http://blog.****.net/sfdev/article/details/2801712
------解决方案--------------------
Use Cursor