我正在尝试以每秒50k的插入次数向BerkeleyDB添加3e9个密钥(重复次数较少),复合记录由具有两个整数的结构组成。每个密钥的长度为30.我使用的是C API。
看起来我必须将cache_size增加到2GB,否则在一段时间后插入数据库会变得非常慢。但是,它在RAM上的消耗总是超过2GB。
我不使用事务或游标,而且我正在使用DB_HASH。
如何确保我不会消耗这么多RAM并且不会太慢?
答案 0 :(得分:0)
BerekelyDB尊重RAM使用的用户设置,并将使用允许/配置的RAM。 如果您希望使用较少的RAM,请配置较低的值。
同时创建/插入时的S-L-O-W可能是由于BerkeleyDB进行的fsync(2)调用,以确保在db-> put之后新数据在磁盘上。
您可以通过使用noop例程覆盖fsync(2)向量来加速BerkeleyDB (即,只是返回成功,但什么也不做)当你创建数据库和 不关心数据是否已经刷新到磁盘。