15

我有超过 1 亿个键值对(一个键可以有多个值)。我正在使用 Tokyo Cabinet 的 BDB (B+Tree DB),其键值是 32 位字节数组。

东京内阁是否可以设置它可以使用多少内存(下限和上限)?实际上,我有 8GB 内存,但似乎无法利用大内存。

还有一点就是,我想知道怎么设置,

tokyoCabinet.tune() tokyoCabinet.optimize() tokyoCabinet.setxmsiz() tokyoCabinet.setcache() 这些参数,因此我可以为我的情况获得最大的调整。提前致谢。任何想法对我也有帮助。

4

1 回答 1

1

tokyoCabinet.setcache() - 设置缓存大小,通常是文件大小的一半或更多

tokyoCabinet.tune() - 打开前设置哈希桶文件和BTree索引参数

tokyoCabinet.optimize() - 文件已经打开时设置的哈希桶文件和BTree索引的新参数,如果记录的数量增加超过tune(bnum)中设置的数量,可以通过optimize()增加,例如.

tokyoCabinet.setxmsiz() 设置额外映射内存的大小,和使用mmap一样,通常是filesize

1 亿个键值对 - bnum > 100M * 2 值是 32 位字节数组 -> recsize = 32bit = 8 字节 -> apow = 3 ( = 2^3 )

如果你有 1024 个元素的 Array:recsize,设置 apow = 13

lmemb指定每个叶页中的成员数。如果不大于 0,则指定默认值。默认值为 128。

nmemb指定每个非叶页面中的成员数。如果不大于 0,则指定默认值。默认值为 256。 fpow 指定空闲块池的最大元素数,是 2 的幂。

官方文档

于 2012-11-30T14:57:00.990 回答