"碎片整理"一个BSD DB文件

时间:2014-04-02 11:16:34

标签: berkeley-db

我使用Berkeley DB来满足我的大量数据管理需求。但是,我注意到,当我从数据库中删除大量值时,磁盘上数据库文件的实际大小似乎并没有缩小。我猜测BSD DB只是简单地在文件内部释放记录,而不实际回收不再需要使用的部分记录。

我一直在搜索API,但我找不到任何方法来实际制作BSD数据库"清理"在文件和回收页面中。有没有我错过的,或者是创建较小的DB文件以从现有数据创建新文件并替换旧数据的唯一方法?

我使用4.8到5.3之间的各种版本,但我不认为这应该是很重要的。

1 个答案:

答案 0 :(得分:1)

你想要DB-> compact()。从C API参考:

  

DB-> compact()方法压缩了Btree,Hash和Recno访问方法   数据库,并可选择返回未使用的Btree,Hash或Recno   数据库页面到底层文件系统。

http://docs.oracle.com/cd/E17076_02/html/api_reference/C/frame_main.html