3
創建lmdb環境時,我可以指定地圖大小。有沒有辦法在任何時候確定地圖大小用完了多少?lmdb:如何確定剩餘空間?
換句話說,我需要知道剩下多少空閒空間才能解決空間不足的問題。
我唯一能想到的就是瀏覽所有數據庫,並使用mdb_env_stat來獲取分支,頁面和溢出頁面的數量。總結所有dbs(時間頁面大小)並與當前地圖大小進行比較。這是計算使用空間的正確方法嗎?
創建lmdb環境時,我可以指定地圖大小。有沒有辦法在任何時候確定地圖大小用完了多少?lmdb:如何確定剩餘空間?
換句話說,我需要知道剩下多少空閒空間才能解決空間不足的問題。
我唯一能想到的就是瀏覽所有數據庫,並使用mdb_env_stat來獲取分支,頁面和溢出頁面的數量。總結所有dbs(時間頁面大小)並與當前地圖大小進行比較。這是計算使用空間的正確方法嗎?
這確實是我使用的方法(也是唯一可以找到的方法)。
對於每一個數據庫:
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);