我使用Berkeley DB来满足我的大量数据管理需求。但是,我注意到,当我从数据库中删除大量值时,磁盘上数据库文件的实际大小似乎并没有缩小。我猜测BSD DB只是简单地在文件内部释放记录,而不实际回收不再需要使用的部分记录。
我一直在搜索API,但我找不到任何方法来实际制作BSD数据库"清理"在文件和回收页面中。有没有我错过的,或者是创建较小的DB文件以从现有数据创建新文件并替换旧数据的唯一方法?
我使用4.8到5.3之间的各种版本,但我不认为这应该是很重要的。
答案 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