lmdb:如何确定剩余的可用空间?

时间:2016-11-09 00:20:02

标签: lmdb

创建lmdb环境时,我可以指定地图大小。有没有办法确定在任何时候用了多少地图大小?

换句话说,我需要找出剩余多少可用空间才能解决空间耗尽问题。

我唯一能想到的是遍历所有数据库并使用mdb_env_stat来获取分支,叶子和溢出页面的数量。在所有dbs(时间页面大小)中总结所有内容并与当前地图大小进行比较。这是计算已用空间的正确方法吗?

1 个答案:

答案 0 :(得分: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);