我正在研究一些在某些系统上进行数据库交互的接口。作为我工作的一部分,我应该查询源数据库,调用某个过程,获取参考游标中的数据并填充目标数据库。处理海量数据量
由于数据量可能很大,我在目标数据库上使用多线程来调用该过程。例如,如果应该加载的条目总数为1百万,则在目标数据库上,该过程将被调用10次,每次记录100K条记录。
这种安排工作正常,除非源数据库中的数据量很大(对于超过200万个条目)。我已经设置了大约20 GB的堆空间来处理记录,但是我的程序因堆内存错误而失败。
我想知道是否有一种方法来查询源数据库并行模式下的数据(例如,假设总共有200万条记录从源存储过程中获取,我的程序应该首先获取这个记录的子集,然后继续下一个或类似的东西)。
我提出的解决方案之一是以这种方式发送记录,虽然数据库端,但我想知道是否有更好的选择。 请建议
你可以对数据的子集发出不同的查询...添加WHERE id在第一次运行时id <10000,然后WHERE id> 10000和id <20000,用于下次运行等等 – Randy 2013-03-11 19:23:58
我从来没有看到一个“真实”的数据库,在这个数据库中,不可能限制一次检索到的记录数量(尽管我确信这里有人能够识别出一个)。 SQL有LIMIT和OFFSET关键字。 – 2013-03-11 19:34:53