优化 BerkeleyDB JE 数据库

Posted

技术标签:

【中文标题】优化 BerkeleyDB JE 数据库【英文标题】:Optimizing a BerkeleyDB JE Database 【发布时间】:2010-11-14 17:50:23 【问题描述】:

我计划在 BerkeleyDB JE 数据库中插入大量唯一键 (~3E9)。

键的长度是固定的(~10 字节),但值的长度是可变的。数据库不会是事务性的。

您建议EnvironmentConfig 和DatabaseConfig 使用哪些参数来优化我的数据库的大小和速度?

非常感谢,

皮埃尔

【问题讨论】:

【参考方案1】:

好的,我找到了使用工具 com.sleepycat.je.util.DbCacheSize 打包到 berkeleyDB-JE 中的解决方案

java -cp je-4.0.103.jar com.sleepycat.je.util.DbCacheSize -records 3000000000 -key 8
Inputs: records=3000000000 keySize=8 dataSize=-1 nodeMax=128 binMax=128 density=80% overhead=10%

=== Cache Sizing Summary ===

   Cache Size       Btree Size    Description
---------------  ---------------  -----------
206,574,616,257  185,917,154,632  Minimum, internal nodes only
231,821,163,884  208,639,047,496  Maximum, internal nodes only

To get leaf node sizing specify -data

=== Memory Usage by Btree Level ===

 Minimum Bytes    Maximum Bytes      Nodes    Level
---------------  ---------------  ----------  -----
184,101,562,500  206,601,562,500  29,296,875    1
  1,797,864,968    2,017,591,304     286,102    2
     17,551,212       19,696,236       2,793    3
        169,668          190,404          27    4
          6,284            7,052           1    5

【讨论】:

以上是关于优化 BerkeleyDB JE 数据库的主要内容,如果未能解决你的问题,请参考以下文章

BerkeleyDB JE 随机访问时间非线性增加

在 BerkeleyDB JE 中选择不同的辅助键值

Berkeley DB 错误:无法锁定 je.lck 文件

如何使用 berkeleydb je“从 xz WHERE xz.a > value 中选择 COUNT(*)”

在 Berkeley DB Core 和 Berkeley DB JE 之间进行选择

在 Berkeley DB JE 中进行比较和交换?