我有一个要求,我必须从数据库中选择大约 6000 万条记录。一旦我在 ResultSet 中拥有所有记录,那么我必须根据客户要求(日期格式和数字格式)格式化一些列,然后我必须将所有记录写入文件(辅助内存)。
- 目前我正在从数据库中每天选择记录(7 天选择 7 次)并将它们放入 HashMap 中。从 HashMap 读取并格式化一些列,最后写入一个文件(单独的文件 7 天)。
最后,我将所有 7 个文件合并到一个文件中。
但这整个过程需要6个小时才能完成。为了改进这个过程,我创建了 7 个线程 7 天,所有线程都在编写单独的文件。
最后,我将所有 7 个文件合并到一个文件中。这个过程需要2个小时。但我的程序将在 1 小时后进入 OutOfMemory 等。
请为这种情况提出最佳设计,我是否应该使用一些缓存机制,如果是,那么是哪一种以及如何使用?
注意:客户不想更改数据库中的任何内容,例如创建索引或存储过程,他们不想接触数据库。提前致谢。