0

我正在开发一个在某些系统上进行数据库交互的接口。作为我工作的一部分,我应该查询源数据库,调用一些过程,在引用游标中获取数据并填充目标数据库。

由于数据量可能很大,我在目标数据库上使用多线程来调用该过程。例如,如果应该加载的条目总数为 100 万,那么在目标数据库上,该过程被调用 10 次,每次 100K 记录。

这种安排工作正常,除非源数据库的数据量很大(例如超过 200 万个条目)。我已经设置了大约 20 GB 的堆空间来处理记录,但是我的程序因堆内存错误而失败。

我想知道是否有办法以并行模式从源数据库中查询数据(例如,假设从源存储过程中获取了总共 200 万条记录,我的程序应该首先获取该记录的子集然后继续下一个或类似的东西)。

我提出的解决方案之一是通过数据库端以这种方式发送记录,但我想知道是否有更好的选择。请建议

4

1 回答 1

0

我找到了解决方案。Spring API 中的 BeanPropertyRowMapper 类需要扩展,需要重写 mapRow 方法。当准备好获取数据时调用 mapRow 方法。您可以在此阶段应用某种批处理机制。请注意,我发布了这个问题,因为数据是使用存储过程获取的,并且输出以引用游标的形式出现。

于 2013-04-24T17:33:10.573 回答