2016-11-09 118 views
3

創建lmdb環境時,我可以指定地圖大小。有沒有辦法在任何時候確定地圖大小用完了多少?lmdb:如何確定剩餘空間?

換句話說,我需要知道剩下多少空閒空間才能解決空間不足的問題。

我唯一能想到的就是瀏覽所有數據庫,並使用mdb_env_stat來獲取分支,頁面和溢出頁面的數量。總結所有dbs(時間頁面大小)並與當前地圖大小進行比較。這是計算使用空間的正確方法嗎?

回答

4

這確實是我使用的方法(也是唯一可以找到的方法)。

對於每一個數據庫:

MDB_stat stat; 
mdb_stat(d->transaction, d->dbi, &stat); 
auto dbSize = stat.ms_psize * (stat.ms_leaf_pages + stat.ms_branch_pages + stat.ms_overflow_pages);