2014-04-02 49 views
0

我正在使用Berkeley DB處理大量數據管理需求。不過,我注意到,當我從數據庫中刪除一大組值時,磁盤上數據庫文件的實際大小似乎並沒有縮小。我猜測BSD DB只是在文件內部解除分配記錄,而實際上不需要回收那些不再需要使用的部分。「整理」BSD DB文件

我一直在搜索API,但我找不到任何方法讓BSD DB實際「清理」文件並回收頁面。是否有一個我只是錯過了,或者是創建一個更小的DB文件以從現有數據創建一個新文件並替換舊文件的唯一方法?

我正在使用各種版本,通過4.8到5.3,但我不認爲這應該很重要。

+0

對於不回收空間系統,一個來壓縮他們的方法是創建一個新的數據庫,並從舊的內容複製到新的。然後在確認克隆成功後刪除舊的。 – Bill

回答

1

你想要DB-> compact()。從C API參考:

的DB-> compact()方法壓塊B樹,哈希和Recno中訪問方法 數據庫,和任選的未使用的返回B樹,哈希和Recno 數據庫頁到底層文件系統。

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

+0

啊,那是。正如我們所料,正好在我的鼻子下面謝謝! :) – Dolda2000

+0

沒問題!我去過那裏了,夥計。 –