lmdb:如何确定剩余 space 空闲?

lmdb: how to determine free space left?

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

换句话说,我需要找出还剩多少空闲 space 才能在 space 中解决 运行 的问题。

我唯一能想到的就是遍历所有数据库并使用 mdb_env_stat 来获取分支页数、叶页数和溢出页数。将所有数据库(乘以页面大小)加起来并与当前地图大小进行比较。这是计算已用 space 的正确方法吗?

这确实也是我正在使用的方法(也是我唯一能找到的方法)。

对于每个数据库:

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);