我有一个要求,我必须从数据库中选择大约6000万条记录。一旦我有了ResultSet中的所有记录,那么我必须根据客户需求(日期格式和数字格式)合成一些列,然后我必须将所有记录写入文件(辅助内存)中。场景的最佳设计
- 目前,我正在从数据库中选择一天的记录(7天选择7天)并将它们放入HashMap。从HashMap中读取并合成一些列,最后写入文件(单独文件7天)。
最后,我将所有7个文件合并到一个文件中。
但是这整个过程需要6个小时才能完成。为了改善这一过程,我创建了7天7天的线程,所有线程都编写了单独的文件。
最后,我将所有7个文件合并到一个文件中。这个过程需要2个小时。但是我的程序在1小时后会进入OutOfMemory。
请建议最好的设计,这种情况下,我应该使用一些缓存机制,如果是的话,哪一个又如何呢?
注意:客户端不希望在数据库中更改任何内容,如创建索引或存储过程,他们不想触摸数据库。 在此先感谢。
你能告诉我们你正在使用的RDMS吗?这将影响可能可用的面向数据库的解决方案。 另外,您可以告诉我们数据库是专为事务处理(高度规范化)还是更多分析处理(高度非规范化)设计的? – 2009-05-18 16:37:11
客户端不想在数据库中更改任何内容。他们还没有准备好创建新的索引或SP或对表格进行规范化。 – 2009-05-18 16:48:47