我的应用程序当前存储数百万个Double
元素以进行计算。这些值在用于在计算结束时运行的特定算法之前只是临时值。一旦这个计算完成,数百万个值就可以被丢弃。
完整的故事在这里,如果你需要更多的细节。
提出的解决方案之一是使用内存数据库。
因此,如果我采用此解决方案,我将使用此数据库将我的值存储在表中以替换我的当前值Map<String, List<Double>>
,例如:
create table CALCULATION_RESULTS_XXX (
deal_id varchar2,
values number
);
(每次计算一张表,XXX
为计算ID)
所以在计算过程中,我会做以下事情:
- 当计算开始时,我创建了
CALCULATION_RESULTS_XXX
表。 - 每次我需要添加一个值时,我都会在这个表中插入一条记录。
- 在计算结束时,我将表格内容用于我的算法。
- 最后,我放下这张桌子。
如另一主题所述,目前,我的计算可能会在内存中存储数百 Mb 的数据,因为 30 * 1,000,000 的列表Double
大约需要 240Mb。
现在的问题:
- 如果我使用内存数据库,我的内存消耗会减少吗?
- 关于数据库使用(或表创建)、数据插入等,我必须注意哪些具体点?
- 我想我会选择H2 数据库。您认为这是满足我需求的最佳选择吗?