2016-11-09 6 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); 
関連する問題