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

创建lmdb环境时,我可以指定映射大小。有没有一种方法可以随时确定地图大小用完了多少?

换句话说,我需要找出剩余的可用空间,以便能够在发生空间不足之前解决该问题。

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

cmollekopf

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

对于每个数据库:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章